gpt4 book ai didi

emacs - 如何在 emacs 启动时默认启用非全局次要模式?

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

我希望每次启动 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,那么您可以轻松扩展此方法来满足您对相关模式的特定要求。

<小时/>

More generally, how do I load any mode/package automatically on startup?

它可能会有所不同,但我所展示的方法足以满足大多数次要模式:要么您希望在启用 MODE 时启用它们(是某些特定的其他模式名称),在这种情况下您可以按照 css-mode-hook 示例使用 MODE-hook 变量(该变量始终可用);否则您希望永久启用该模式,在这种情况下,全局次要模式是一个好方法(因为您可以全局打开和关闭它)。一些次要模式默认是全局的(或提供全局变体),但如果需要,您可以创建自己的模式,如 my-global-rainbow-mode 示例。

还要注意,模式可以从其他模式派生,在这种情况下,所有相关的MODE-hook钩子(Hook)都将运行(例如详情见https://stackoverflow.com/a/19295380/324105)。一个常见的用例是使用 prog-mode-hook 来启用从其派生的所有编程模式(这是大多数编程模式)所需的功能。

请记住,许多(希望是大多数)库和包都会提供使用说明。如果找不到文档,请务必尝试 M-x find-library 访问库文件,然后阅读顶部的注释。通常有一个信息非常丰富的“注释”部分,有时这是最终用户文档的主要来源,并解释如何启用其功能。

关于emacs - 如何在 emacs 启动时默认启用非全局次要模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16048231/

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