Questions tagged «hooks»

挂钩是自定义Emacs的重要机制。钩子是一个Lisp变量,其中包含一个函数列表,在某些定义明确的情况下将调用该函数。

3
启用次要模式的正确方法
我有foo-mode,并会为其启用bar-minor-mode。那么哪种方法更普遍和更可取呢? 一种 (add-hook 'foo-mode-hook 'bar-minor-mode) 乙 (add-hook 'foo-mode-hook (lambda () "Turn on `bar-minor-mode' mode." (bar-minor-mode 1))) C (defun bar-minor-mode-on () "Turn on `bar-minor-mode' mode." (interactive) (bar-minor-mode 1)) (add-hook 'foo-mode-hook 'bar-minor-mode-on) d •C型,但功能推向上游 Ë •变体C,但功能存储在插件的配方中
24 hooks  minor-mode 

1
符号前面的'和#'有什么区别?
我对Emacs有点陌生。当查看某些配置时,我发现“ add-hook”中有两种类型的命令。 (add-hook 'LaTeX-mode-hook #'LaTeX-math-mode) 和 (add-hook 'LaTeX-mode-hook 'LaTeX-math-mode) 这让我很困惑了很长时间,而且我不知道如何在Google中搜索“#'” ... 谢谢。
22 elisp  hooks  functions  quote 

2
是否有用于代码注释的全自动填充段落模式?
我正在寻找一种次要模式,以便在键入时始终保持段落填充(类似于aggressive-indent-mode缩进)。它还需要足够聪明以仅填充注释(可能取决于语言,也可以填充字符串)。 我尝试过的一些事情是: auto-fill-mode 在键入新段落时自动填充,但在编辑段落时不会自动填充。 refill-mode 确实会不断地重新填充段落,但是会尝试将代码包装到段落和注释中。 我尝试添加fill-paragraph到after-change-functions钩子中,但是它会破坏撤消操作和其他很多事情(这可能都是可修复的,但需要一些努力)。 还有更好的主意吗?

3
有什么方法只能运行一次挂钩函数吗?
上下文 我正在使用after-make-frame-functions挂钩在emacs客户端/服务器配置中正确加载主题。具体来说,这是我用来创建代码段(基于此SO答案): (if (daemonp) (add-hook 'after-make-frame-functions (lambda (frame) (select-frame frame) (load-theme 'monokai t) ;; setup the smart-mode-line and its theme (sml/setup))) (progn (load-theme 'monokai t) (sml/setup))) 问题 当emacsclient -c/t开始新的会话时,不仅在新框架中,而且还在所有先前存在的框架(其他emacsclient会话)中执行挂钩,这会产生非常烦人的视觉效果(在所有那些框架中再次加载主题)。更糟糕的是,在终端中已经打开的客户端的主题颜色就完全混乱了。显然,这仅在连接到同一emacs服务器的emacs客户端上发生。出现这种现象的原因很明显,该挂钩在服务器上运行,并且其所有客户端都受到影响。 问题 有什么方法可以只执行一次此功能,也可以不使用钩子而获得相同的结果吗? 部分解决方案 由于@Drew的回答,我现在有了这段代码。但是仍然存在问题,一旦在终端中启动客户端会话,GUI将无法正确加载主题,反之亦然。经过大量测试,我意识到其行为取决于首先启动哪个emacsclient,并且丢弃各种东西后,我认为它可能与所加载的调色板有关。如果您手动重新加载主题,那么一切都可以正常工作,这就是为什么每次在钩子上调用函数时都不会出现此行为的原因,就像在我的初始配置中一样。 (defun emacsclient-setup-theme-function (frame) (progn (select-frame frame) (load-theme 'monokai t) ;; setup the smart-mode-line and its theme (sml/setup) …

2
打开特定文件类型的文件时运行命令
打开特定文件类型的文件时,我试图获取一个Lisp脚本来为我运行一些命令。我知道我正在使用正确的初始化文件,因为如果从其中删除主题,则启动时emacs不会有主题。 这是我正在使用的脚本,该脚本不起作用(没有错误或任何错误): (defun my-project-hook (filename) (when (string= (file-name-extension filename) "ts") ((typescript-mode) (tss-setup-current-buffer)) ) ) (add-hook 'after-load-functions 'my-project-hook)

2
如何找出键序列真正的作用
我不时观察到编辑文本时的意外行为。我的第一个方法通常是C-h k用来查找给定键序列正在调用的功能。但是,有时文档与观察到的行为不一致。在这些情况下,我通常假定其他软件包已挂接到该函数或键序列中,并且正在修改其行为。 我如何找出 哪些 功能挂接到我的按键序列中? 我最近遇到的一个示例是,我按下了"键,并且在活动区域​​的开始和结尾处都插入了引号。我怀疑这不是Emacs的默认行为,因此我过去常常C-h k "查明实际上是在调用什么函数。 该describe-key文件告诉我,该函数self-insert-command被调用,这是一个内置的功能。长话短说,经过反复试验,我能够确定该行为是由引起的electric-pair-mode。将来,有没有比一次关闭一个可疑包裹直到找到罪魁祸首的结论更快的方法呢?
14 keymap  hooks 

2
我应该在哪里包含惰性初始化?
我想向乳胶模式添加特定的键绑定: (define-key latex-mode-map (kbd "<f6>") 'my-latex-defun) 同时,我只想在加载特定模式时进行设置。因此,我想知道在使用适当的hook(latex-mode-hook)完成此操作或使用子句(with-eval-after-load "tex-mode" ...包装键绑定定义之间是否存在偏好(最佳实践)。我对它们都进行了测试,但是它们都可以正常工作,但是我想知道哪种方法是正确的。
13 init-file  hooks 

3
cc模式的保存前挂钩
我想自定义cc-mode以在保存之前执行功能。一种解决方案是修改键cc-mode映射以绑定C-x C-s到执行我需要的工作的函数,然后将其保存。 我的问题是我是否可以为此定制钩子?该CC钩文档不提一个before-save-hook专门为cc-mode。应该如何通过钩子完成? 另外,我该怎么做defadvice呢?通过阅读手册,我唯一能看到的方法是在保存之前启用建议,然后在工作完成后将其禁用。这听起来很麻烦。使用advices 的惯用方式是什么?
13 hooks  cc-mode  advice 


1
卸下特定模式的挂钩
我想在除之外的所有模式下删除尾随空格org-mode。 在我的.emacs,我有以下一行: (add-hook 'before-save-hook 'delete-trailing-whitespace) 我使用了use-package宏,并尝试将其添加(remove-hook 'before-save-hook 'delete-trailing-whitespace)到:config块中,但这会全局删除该钩子。我如何专门删除它org-mode?
12 hooks 


1
after-init-hook和emacs-startup-hook有什么区别
似乎有一些关于Emacs初始化的动作的钩子。但是,我不确定它们之间的区别是什么,简短的谷歌搜索信息很少。它就像emacs-startup-hook在Emacs启动后立即执行,但不一定等待初始化完成吗?
9 hooks 

1
什么是钩子?
只是为了澄清...例如,在此文档中: 钩子是一个Lisp变量,其中包含一个函数列表,在某些明确定义的情况下将调用该函数。(这称为运行挂钩。)列表中的各个功能称为挂钩的挂钩功能。例如,挂钩kill-emacs-hook在退出Emacs之前运行。 我认为这是说有一个变量(符号)kill-emacs-hook,该变量代表一组“挂钩函数”的列表,这些挂钩函数将在kill-emacs-hook评估时运行,从而执行这些功能。正确?然后 (add-hook 'text-mode-hook 'auto-fill-mode) 除了已存在的内容外,还会添加auto-fill-mode到该列表text-mode-hook中。好。现在这个 (defcustom text-mode-hook nil "Normal hook run when entering Text mode and many related modes." :type 'hook :options '(turn-on-auto-fill flyspell-mode) :group 'wp) 似乎我们正在创建或更改text-mode-hook。我现在对钩子的性质及其与钩子的关系感到困惑defcustom。我的逻辑选择是,此代码创建的变量text-mode-hook是“类型”(不知道elisp中的类型是什么意思)hook。确实,这是否应该是钩子的最初创建text-mode-hook?如果是这样,“选项”是怎么回事?是那些所谓的钩子函数,还是其他?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.