我希望每次Emacs创建一个缓冲区时运行一些代码.有这个挂钩吗?有什么名字的东西after-make-buffer-functions?
编辑:如果有人想知道我想要的是什么,你可以在这里阅读我的Emacs配置的相关部分:https://github.com/DarwinAwardWinner/dotemacs/blob/master/site-lisp/settings/tempbuf-settings .el
基本上,我希望在具有某些主要模式的所有缓冲区中启用tempbuf模式.所以Lindydancer的回答实际上比我原来想要的更合适.
我知道我已经可以通过在所有主要模式钩子中添加tempbuf模式钩子来在特定模式下启用tempbuf模式,但我想让它可以编辑M-x customize,这是最简单的方法.
Lin*_*cer 15
很不幸的是,不行.Emacs使用低级函数'get-buffer-create'来创建缓冲区,并且它不提供任何钩子机制.
您可以使用建议来获取对此函数的所有调用,即使我不推荐使用此方法,因为它非常具有侵入性.(更新:通知挂钩只会看到来自elisp的调用,而不是来自Emacs C核心部件的调用.)
您可以使用一些替代方案,具体取决于您实施的内容:
change-major-mode-hook - 在主要模式改变之前调用.after-change-major-mode-hook - 主要模式开始变化时调用.您可以使用 buffer-list-update-hook
buffer-list-update-hook每当缓冲区列表更改时,这是一个正常的挂钩运行
你可以定义一个函数来做任何你想做的事。
(defun awesome-foo ()
;; do awesome things
)
Run Code Online (Sandbox Code Playgroud)
将该函数挂钩到缓冲区列表挂钩
(add-hook 'buffer-list-update-hook 'awesome-foo)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4299 次 |
| 最近记录: |