我是emacs的新手,我想知道我是否可以将writeroom-mode设置为始终打开。我想在启动emacs时打开它,并打开新的缓冲区或在它们之间切换。
非常感谢所有帮助!
答案 0 :(得分:1)
如果write-room
模式是全球化次要模式,则只需在初始化文件中将其打开。
如果write-room
模式是辅助模式且没有全局化版本,则可以使用define-globalized-minor-mode
来定义此类全局模式。然后在init文件中打开它。
如果write-room
是主要模式,那么您可以自定义选项auto-mode-alist
,以便为任意数量的文件扩展名启用它。
如果write-room
是普通功能(不是主模式功能),那么您可以使用add-hook
自动将其打开,将其添加到您使用的主要模式中。
是的,如果你指定write-room
是什么(用Lisp术语),那么回答你的问题会更容易。
答案 1 :(得分:1)
所以现在您已经提供了link(尽管在your other question中),我可以看到该库提供了一个全局次要模式,该模式仅针对特定的可配置集合开启主要模式。
以下内容将重新定义作出该决定的函数,以便writeroom-major-modes
为nil
(空列表)时,它将为任何主要模式启用。
我还更改了现有测试以检查派生模式匹配,而不是简单地匹配。这样,'(text-mode)
的默认值不仅会匹配text-mode
,还会匹配从text-mode
派生的每种模式。与您的问题并不严格相关,但如果您找到"所有模式"接近矫枉过正。
(eval-after-load 'writeroom-mode
'(defun turn-on-writeroom-mode ()
"Turn on `writeroom-mode'.
This function activates `writeroom-mode' in a buffer if that
buffer's major mode is a member of `writeroom-major-modes',
or derived from one of those modes.
If `writeroom-major-modes' is nil, activate `writeroom-mode'
in ALL buffers."
(when (or (not writeroom-major-modes)
(apply 'derived-mode-p writeroom-major-modes))
(writeroom-mode 1))))
是否需要明确加载/要求库取决于您的安装方式;但是,当你已经使用图书馆时,可能已经开始使用图书馆了,这意味着它只是一个例子:
(global-writeroom-mode 1)
或者(对于上述所有内容),您可以忽略所提供的全局模式,并创建您自己的替代全局次要模式,如How to enable a non-global minor mode by default, on emacs startup?
中所述 编辑:我已经和writeroom-mode
进行了一些比赛,看起来有很好的理由说明为什么它的全局模式有点保守。您仍然可以找到"派生模式"改进很有用,但我怀疑试图使这种特殊模式100%全局化并不是很有效。