gpt4 book ai didi

emacs - 使用 emacs -q -l 时将钩子(Hook)添加到默认模式

转载 作者:行者123 更新时间:2023-12-01 12:29:07 25 4
gpt4 key购买 nike

我一直在用 emacs -q -l "init.el" 加载 emacs 很多,并试图在我的临时缓冲区中启用自动完成。我一直在努力弄清楚为什么它不起作用,但意识到它必须与像这样加载 emacs 时的操作顺序有关 - 使用以下 init 文件进行快速测试:

(package-initialize)
(require 'auto-complete)
(ac-config-default)
(add-hook 'lisp-interaction-mode-hook
'(lambda ()
(auto-complete-mode t)))

显示从命令行正常调用 emacs 时我希望完成的工作。但是如果我将其称为 emacs -q -l init.el 则没有下拉完成。

问题:如何让这个钩子(Hook)运行?

我已经尝试了 after-init-hook 的变体,但似乎都不起作用。

最佳答案

以下分析基于master分支的startup.el:https://github.com/emacs-mirror/emacs/blob/master/lisp/startup.el

据我了解这个问题,它寻求关于何时运行命令行选项 -l aka --load FILE 与 *scratch* 缓冲区使用 initial-major-mode 初始化,默认情况下为 lisp-interaction-mode

根据 startup.el 中定义的事件顺序,-l--load 选项在行中被考虑在内函数 command-line-1 的 2381。

函数 command-line-1 运行在 startup.el 的第 1366 行,它在 after-init-hook 之后在第 1344 行和随后的 *scratch* 缓冲区在第 1350 行用 initial-major-mode 初始化。

在某种程度上,原始发布者希望依赖于使用 -l--load 选项手动加载文件,然后将函数分配给 lisp-interaction-mode-hook 不会在第 1350 行看到,因为它们不存在直到 command-line-1 在第 1366 行运行。原始发布者可能希望的一个选项要考虑的是以下内容:(with-current-buffer "*scratch*"(lisp-interaction-mode)) after auto-complete-mode 已添加到 lisp-interaction-mode-hook

关于emacs - 使用 emacs -q -l 时将钩子(Hook)添加到默认模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36192025/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com