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

如何在emacs启动时默认启用非全局次要模式?,emacs,mode,Emacs,Mode,我想在每次启动emacs时启用rainbow模式,而不必使用M-x rainbow模式 我想我在.emacs文件中放了一些命令 我尝试了以下所有方法,但没有一种有效: (需要“彩虹模式”) (彩虹模式初始化) (全球彩虹模式) 更一般地说,如何在启动时自动加载任何模式/包?彩虹模式不是全局次要模式,因此需要在每个缓冲区的基础上启用它 我仅将其用于CSS,因此我有: (添加钩子“css模式钩子”我的css模式钩子) (取消css模式挂钩() (彩虹模式1) 如果您真的希望它在任何地方都是全局的

我想在每次启动emacs时启用
rainbow模式
,而不必使用
M-x rainbow模式

我想我在.emacs文件中放了一些命令

我尝试了以下所有方法,但没有一种有效:

(需要“彩虹模式”)
(彩虹模式初始化)
(全球彩虹模式)

更一般地说,如何在启动时自动加载任何模式/包?

彩虹模式
不是全局次要模式,因此需要在每个缓冲区的基础上启用它

我仅将其用于CSS,因此我有:

(添加钩子“css模式钩子”我的css模式钩子)
(取消css模式挂钩()
(彩虹模式1)
如果您真的希望它在任何地方都是全局的,您可以自己轻松定义全局次要模式:

(定义全球化次要模式我的全球彩虹模式彩虹模式
(lambda()(彩虹模式1)))
(我的全球彩虹模式1)
您可以向该
(lambda()(彩虹模式1))
函数(将在每个缓冲区中进行计算)添加任意逻辑,以决定是否实际调用给定缓冲区的
(彩虹模式1)
,因此,如果您对elisp感到满意,那么您可以轻松地扩展此方法,以满足所讨论模式的特定需求


一般来说,如何在启动时自动加载任何模式/包

它可能会有所不同,但我所展示的方法对于大多数次要模式来说已经足够了:或者您希望在启用
模式
时启用它们(作为某个特定的其他模式名称),在这种情况下,您可以根据
css模式挂钩
示例使用
模式挂钩
变量(该变量将始终可用);或者,您希望永久启用该模式,在这种情况下,全局次要模式是一种很好的方法(因为您可以全局地打开和关闭它)。默认情况下,某些次要模式是全局模式(或提供全局变体),但如有必要,您可以根据
my global rainbow mode
示例创建自己的模式

还要注意,模式可以从其他模式派生,在这种情况下,将运行所有相关的
模式挂钩
挂钩(有关详细信息,请参阅)。一个常见的用例是使用
prog mode hook
来启用从它派生的所有编程模式(大多数编程模式)所需的功能


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

您只需执行
(添加hook'css mode hook'rainbow mode)
,而无需通过
我的css mode hook
。Stefan:仅在Emacs 24中,否则会切换模式,我不想假设每个人都升级了。(在我的例子中,这个函数还做了很多其他的事情,所以我确实需要它:)谢谢!我用它来全局启用goto地址模式。最后,我输入了.emacs:
(定义全球化次要模式全局转到地址模式转到地址模式(lambda()(转到地址模式1))
,然后在检查模式配置时意外地在customize上找到了值,最后,我让“自定义”来处理全局模式激活。我在spacemacs(全局模式)中使用了您的解决方案,它删除了我的颜色主题。我现在无法启用它:(如何撤消此定义?如何取消全球化次要模式的定义?@ashrasmun,这个问题对我来说毫无意义(除非您根本没有安装
彩虹模式
),但您可以使用
M-x我的全局彩虹模式
或评估
(我的全局彩虹模式0)关闭全局模式
,之后它将不会做任何事情。