我不确定这是否可行,但我想使用.dir-locals.el
当然.dir-locals.el
必须包含一个特殊的设置列表,所以我不能这样做:
(global-set-key [24 down] 'move-text-down)
有没有办法可以注入lambda来运行任意代码或其他一些方法来设置.dir-locals.el
中的键绑定?
答案 0 :(得分:9)
使用eval
伪变量,您可以使用局部变量指定任意elisp进行评估。
e.g。 https://stackoverflow.com/a/7340962/324105
有关详细信息,请参阅EmacsWiki。
请注意,这不是一种特别有用的设置键绑定的机制,因为使用相关键映射的每个缓冲区都会受到影响。您可能最好使用dir-local配置来启用具有该项目的特定键映射的次要模式。或者,您可以调整this approach to file-local bindings(但是次要模式会更好)。
有人说......
一个相当小的形式是((nil . ((eval . (progn BODY)))))
,BODY
是要评估的表达式。当然,如果BODY
只是一个表达式,则不需要progn
。
因此,当您访问任何文件(在相关目录下)时,以下内容会显示一条消息:
((nil . ((eval . (message "hello")))))
dir-locals表单中每个列表的汽车通常是主要模式符号,或nil
(如上例所示),在这种情况下,设置适用于任何专业模式。
汽车还可以指定一个子目录字符串,在这种情况下,cdr是另一个dir-locals表单,其中的设置适用于该子目录。