我在一些主要模式中有一个缓冲区,在另一个缓冲区中有模式文件本身(* .el)。编辑 *.el 文件后,我想查看第一个缓冲区中反映的更改,而无需重新启动 emacs。我尝试运行 -mode 函数,但它没有更改缓冲区。谢谢
问问题
8197 次
3 回答
32
如果您的模式提供了一项功能(应该如此!),(provide 'foo-mode)
那么您可以
M-x unload-feature RET foo-mode RET
然后像往常一样再次加载模式(foo-mode
如果您有适当的自动加载,则使用,或者使用load-library
或load-file
其他方式)。
于 2010-12-05T21:22:40.970 回答
16
M-x load-file your-mode.el
或者
M-x eval-buffer
然后在缓冲区中打开和关闭行为,大概是通过做
M-x your-mode
M-x your-mode
或者,如果您的模式识别前缀参数
C-u 1 M-x your-mode
注意:当您加载文件时,defvar
不会覆盖现有值,因此如果您将调用中的值更改为,则defvar
需要通过在C-M-x光标位于devfar
表达式中时执行或使用M-x :并输入表达式。有关在 Emacs 中评估 lisp 的文档,请参阅此页面。
于 2010-12-05T21:13:37.813 回答
1
当您编辑模式的源代码时,您必须确保评估您更改的函数——仅将它们保存到文件是不够的,因为在内部 Emacs 仍将使用旧代码。
例如,您可以跳到使用 MCe 处理的函数定义的末尾,并使用 Cx Ce 评估该函数。从那时起,Emacs 将使用当前定义。
这也适用于模式定义,但通常使用 Mx 模式名称调用模式是作为切换实现的:你调用它一次,它激活模式,你再次调用它,它取消激活模式。所以你可能需要做两次 Mx mode-name 。
于 2010-12-05T17:15:53.440 回答