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