如何在emacs-lisp以外的mode中,运行一段elisp代码段

求大神指教,万分感谢!!如何在emacs-lisp以外的mode中,一次性运行一段elisp代码段

例如:在c mode下面运行

(setq avy-timeout-seconds 0)

(setq-default company-minimum-prefix-length 1)

用eval-expression的话只能显示一行,不利于一次性执行多行elisp代码

总不能要把一次性执行的elisp代码段也绑定到快捷键上吧?

你这都是给变量赋值,为啥不用 buffer-local variable 呢?

另外,也可以将代码添加到 mode hook 中以便在 mode 激活时一次性执行代码

的确,不过我只是举个例子,比如需要在c-mode下一次性执行一段比较复杂的代码,但是又不想在刚刚激活mode时候加载,简单的说就是有没有办法在c-mode编辑时,生成一个临时buff,里面写一段elisp,然后执行这段代码,但是代码的效果只作用于c-mode那个buff

另外,十分感谢!

用 Local Variables 的 eval

Local Variables:
eval: (crs-auto-encrypt)
End:

这样每次打开文件 Emacs 都会问你要不要执行代码。不建议默认直接执行,因为很明显这样会有安全问题。

另外,如果只是一次性的代码,用 progn

(progn (foo)
       (bar))

就可以把它们包成一整个表达式,这样你在 progn 外面 eval-expression

你也可以鼠标选中区域以后 eval-region

你也可以在 scratch buffer 写一次性代码,用 with-current-buffer 设定代码生效的 buffer,这样还能有高亮和补全用。

1 个赞

多谢!!!不知道spacemacs里面有没有集成类似于 “scratch buff 写一次性代码并执行” 的这个功能