我想每次启动emacs时都启用rainbow-mode
,而不必使用M-x rainbow-mode
。
我想在我的 .emacs 文件中放置一些命令。
我尝试了以下所有方法,但都没有成功:
(require 'rainbow-mode)
(rainbow-mode initialize)
(global-rainbow-mode)
更一般地说,我如何在启动时自动加载任何模式/包?
我想每次启动emacs时都启用rainbow-mode
,而不必使用M-x rainbow-mode
。
我想在我的 .emacs 文件中放置一些命令。
我尝试了以下所有方法,但都没有成功:
(require 'rainbow-mode)
(rainbow-mode initialize)
(global-rainbow-mode)
更一般地说,我如何在启动时自动加载任何模式/包?
rainbow-mode
不是全局次要模式,因此需要在每个缓冲区上启用。
我只在CSS中使用它,所以我有:
(add-hook 'css-mode-hook 'my-css-mode-hook)
(defun my-css-mode-hook ()
(rainbow-mode 1))
如果你真正希望它成为全局的,无处不在的,你可以很容易地定义一个全局的小模式:
(define-globalized-minor-mode my-global-rainbow-mode rainbow-mode
(lambda () (rainbow-mode 1)))
(my-global-rainbow-mode 1)
你可以在那个(lambda () (rainbow-mode 1))
函数中添加任何自定义的逻辑(该函数将在每个缓冲区中被评估),以便决定是否针对给定的缓冲区实际调用(rainbow-mode 1)
,所以如果你熟悉elisp,那么你可以很容易地扩展此方法以满足你所需的特定模式的要求。
它可能因情况而异,但我展示的方法对于大多数小模式都足够了:要么你希望在启用更一般地说,我如何在启动时自动加载任何模式/软件包?
MODE
(某个特定的其他模式名称)时启用它们,这种情况下,你可以像css-mode-hook
示例一样使用MODE-hook
变量(它始终可用);或者你想永久启用模式,这种情况下全局小模式是一个不错的选择(因为你可以在全局范围内切换它的开关)。有些小模式默认是全局的(或提供全局变体),但如果必要,你可以创建自己的全局小模式,就像my-global-rainbow-mode
一样。MODE-hook
钩子(有关详细信息,请参见https://dev59.com/GXfZa4cB1Zd3GeqPV8zl#19295380)。常见用例是使用prog-mode-hook
为从中派生的所有编程模式启用所需功能(大多数编程模式都是从它派生的)。find-library
以访问库文件,然后阅读顶部的注释。通常会有一个非常信息丰富的“评论”部分,有时这是最主要的终端用户文档来源,并解释如何启用其功能。(add-hook 'css-mode-hook 'rainbow-mode)
而无需通过my-css-mode-hook
。 - Stefan(define-globalized-minor-mode global-goto-address-mode goto-address-mode (lambda () (goto-address-mode 1)))
,然后无意中在检查模式配置时在customize中找到了该值,因此最终我让全局模式激活由customize处理。 - pupitetrisrainbow-mode
),但是你可以使用 M-x my-global-rainbow-mode
切换全局模式或者评估 (my-global-rainbow-mode 0)
,之后它就不会做任何事情了。 - phils