如何重新加载 emacs 主要模式?

发布于 2024-10-05 18:40:36 字数 117 浏览 4 评论 0原文

我在某些主要模式中有一个缓冲区,在另一个缓冲区中有模式文件本身(*.el)。编辑 *.el 文件后,我希望看到第一个缓冲区中反映的更改,而无需重新启动 emacs。我尝试运行 -mode 函数,但它没有更改缓冲区。 谢谢

I have a buffer in some major-mode, and in another buffer the mode file itself (*.el). After I edit the *.el file I want to see the changes reflected in the first buffer, without restarting emacs. I tried to run the -mode function but it didn't change the buffer.
Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

零度℉ 2024-10-12 18:40:36

如果您的模式使用 (provide 'foo-mode) 提供了一项功能(它应该如此!),那么您可以

Mx 卸载功能 RET foo 模式 RET

,然后再次正常加载模式(如果您有适当的自动加载,则使用 foo-mode ,或者使用 load-库加载文件否则)。

If your mode provides a feature (as it should!) using (provide 'foo-mode) then you can

M-x unload-feature RET foo-mode RET

and then load the mode again as normal (using foo-mode if you have an appropriate autoload, or using load-library or load-file otherwise).

千秋岁 2024-10-12 18:40:36
M-x load-file your-mode.el

或者

M-x eval-buffer

然后在缓冲区中打开和关闭行为,大概可以通过执行

M-x your-mode
M-x your-mode

Or,如果您的模式识别前缀参数

C-u 1 M-x your-mode

注意:当您加载文件时,defvar 不会覆盖现有值,因此如果您更改对 defvar 的调用中的值,则需要专门评估这些值,方法是当光标位于 devfar 时执行 CMx code> 表达式,或使用 Mx : 并输入表达式。有关在 Emacs 中评估 lisp 的文档,请参阅此页面

M-x load-file your-mode.el

or

M-x eval-buffer

Then toggle the behavior on and off in the buffer, presumably by doing

M-x your-mode
M-x your-mode

Or, if your mode recognizes the prefix argument

C-u 1 M-x your-mode

Note: When you're loading a file, defvar doesn't override existing values, so if you change the values in the call to defvar, you'll need to evaluate those specifically, either by doing C-M-x when your cursor is in the devfar expression, or using M-x : and typing in the expression. See this page for documentation on evaluating lisp in Emacs.

一紙繁鸢 2024-10-12 18:40:36

当您编辑模式的源代码时,您必须确保评估您更改的函数 - 仅将它们保存到文件中是不够的,因为 Emacs 内部仍将使用旧代码。

例如,您可以跳到使用 MCe 处理的函数定义的末尾,并使用 Cx Ce 评估该函数。从那时起,Emacs 将使用当前定义。

这也适用于模式定义,但通常使用 Mx 模式名称调用模式是作为切换实现的:您调用它一次,它会激活该模式,您再次调用它,它会停用该模式。因此您可能需要执行两次 Mx mode-name 操作。

When you edit the source of a mode, you have to make sure that you evaluate the functions you change -- saving them to file alone will not be enough, because internally Emacs will still use the old code.

For instance, you could jump to the end of the function definition you work on with M-C-e and evaluate the function with C-x C-e. From that point on, Emacs will then use the current definition.

This works for mode definition, too, but often times invoking a mode with M-x mode-name is implemented as a toggle: you call it once, it activates the mode, you call it again, it de-activates the mode. So you may have to do M-x mode-name twice.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文