使用 emacs -q -l 时将钩子添加到默认模式
Add hook to default mode when using emacs -q -l
我一直在用 emacs -q -l "init.el"
加载 emacs 相当多,并试图在我的暂存缓冲区中启用自动完成。我一直在努力弄清楚为什么它不起作用,但意识到它必须与像这样加载 emacs 时的操作顺序有关 - 使用以下初始化文件进行快速测试:
(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
则没有下拉完成。
问题:我怎样才能得到这个钩子 运行?
我尝试了 after-init-hook
的变体,但 none 似乎有效。
以下分析基于master分支的startup.el
:https://github.com/emacs-mirror/emacs/blob/master/lisp/startup.el
据我了解这个问题,它寻求关于命令行选项 -l
又名 --load
FILE 何时为 运行 与 *scratch*
相比的答案缓冲区使用 initial-major-mode
初始化,默认情况下为 lisp-interaction-mode
.
根据 startup.el
中定义的事件顺序,在函数 command-line-1
的第 2381 行考虑了 -l
或 --load
选项。
函数command-line-1
运行s 在startup.el
的第1366 行,它在第1344 行的after-init-hook
之后和*scratch*
之后正在使用第 1350 行的 initial-major-mode
初始化缓冲区。
如果原始发帖者希望使用 -l
或 --load
选项手动加载文件,那么分配给 lisp-interaction-mode-hook
的功能将不会在第 1350 行看到,因为它们在第 1366 行 command-line-1
运行s 之前不存在。原始发布者可能希望考虑的一个选项如下:(with-current-buffer "*scratch*" (lisp-interaction-mode))
之后 auto-complete-mode
已添加到 lisp-interaction-mode-hook
。
如果从命令行启动 Emacs,您可以在加载序列接近尾声时调用函数 运行,如下所示:
emacs -f lisp-interaction-mode
参见手册中的Action Arguments:
‘-f function’
‘--funcall=function’
Call Lisp function function. If it is an interactive function (a command), it reads the arguments interactively just as if you had called the same function with a key sequence. Otherwise, it calls the function with no arguments.
我一直在用 emacs -q -l "init.el"
加载 emacs 相当多,并试图在我的暂存缓冲区中启用自动完成。我一直在努力弄清楚为什么它不起作用,但意识到它必须与像这样加载 emacs 时的操作顺序有关 - 使用以下初始化文件进行快速测试:
(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
则没有下拉完成。
问题:我怎样才能得到这个钩子 运行?
我尝试了 after-init-hook
的变体,但 none 似乎有效。
以下分析基于master分支的startup.el
:https://github.com/emacs-mirror/emacs/blob/master/lisp/startup.el
据我了解这个问题,它寻求关于命令行选项 -l
又名 --load
FILE 何时为 运行 与 *scratch*
相比的答案缓冲区使用 initial-major-mode
初始化,默认情况下为 lisp-interaction-mode
.
根据 startup.el
中定义的事件顺序,在函数 command-line-1
的第 2381 行考虑了 -l
或 --load
选项。
函数command-line-1
运行s 在startup.el
的第1366 行,它在第1344 行的after-init-hook
之后和*scratch*
之后正在使用第 1350 行的 initial-major-mode
初始化缓冲区。
如果原始发帖者希望使用 -l
或 --load
选项手动加载文件,那么分配给 lisp-interaction-mode-hook
的功能将不会在第 1350 行看到,因为它们在第 1366 行 command-line-1
运行s 之前不存在。原始发布者可能希望考虑的一个选项如下:(with-current-buffer "*scratch*" (lisp-interaction-mode))
之后 auto-complete-mode
已添加到 lisp-interaction-mode-hook
。
如果从命令行启动 Emacs,您可以在加载序列接近尾声时调用函数 运行,如下所示:
emacs -f lisp-interaction-mode
参见手册中的Action Arguments:
‘-f function’
‘--funcall=function’
Call Lisp function function. If it is an interactive function (a command), it reads the arguments interactively just as if you had called the same function with a key sequence. Otherwise, it calls the function with no arguments.