动态为某种模式增加hook

在开发机中启动了emacs, 发现忘记对golang模式增加hook,之前在init.el中已经增加了对于其它常用子模式的hook(add-hook),因为已经打开了很多文件与shell,不想重新启动emacs,有没有什么办法,使用Alt+X执行add-hook,但是不行,请大家帮忙,谢谢:)

切到*scratch* 写下(add-hook …),光标移动到结束的括号,C-x C-e 其实也可以不切,随便哪个地方写上去,都一样,执行完再删掉就行了,还有M-:,有好多种方法

1 个赞

善用 ielm

首先要搞清楚是什么 hook,如果是 -mode-hook,它只在你打开文件启用 -mode 的时候执行一次

而像 evil 这样的扩展,每次状态改变都要执行 -entery-hook-exit-hook

如果是前者,需要重新 load 已经打开的文件(代价比重启 Emacs 小),或者干脆直接到目标 buffer,去执行你加到 hook 中的代码。

2 个赞

问题已经解决,感谢