是否可以让特定的组织模式文件使用自定义主题或面孔



我希望能够指定特定于将在org-mode中打开的文件的主题或一组自定义面孔。有什么办法可以做到这一点吗?我已经有 https://github.com/vic/color-theme-buffer-local,但这并没有提供在特定文件打开时自动应用它的方法。

理想的解决方案不涉及在我的 init.el 中进行硬编码,而是涉及在加载的文件(或引用的安装文件)中设置变量或调用 elisp。

例如,有些文件非常扁平,使用一组样式更具可读性,而其他文件则深度嵌套,并从另一组样式中受益。

原始海报引用了一个名为color-theme-buffer-local(https://github.com/vic/color-theme-buffer-local)的特定库,原始海报希望将其应用于以称为org-mode的主要模式打开的文件 - 仅当某个变量t时才

下面的示例使用说明中引用的代码,通过调用代码行进行color-theme-buffer-local(load-theme-buffer-local 'misterioso (current-buffer)) 变量 my-favorite-variable 将控制在打开org-mode缓冲区时何时调用前一行代码 - 即,当non-nil应用时,当nil不应用时。


编辑(2014 年 11 月 16 日):以下是基于原始海报使用文件局部变量的愿望的修订答案:

https://www.gnu.org/software/emacs/manual/html_node/emacs/Specifying-File-Variables.html#Specifying-File-Variables

http://www.gnu.org/software/emacs/manual/html_node/elisp/File-Local-Variables.html#File-Local-Variables

原始海报在此答案下方的评论中描述的行为是由于在考虑文件局部变量之前运行常规org-mode-hook。 因此,当org-mode-hook运行其过程时,变量my-favorite-variable仍然nil(使用初始答案)。 以下修改后的答案使用 hack-local-variables-hook ,它在考虑文件局部变量运行。

(defvar my-favorite-variable nil)
(defun my-favorite-function ()
(interactive)
  (when
      (with-current-buffer (current-buffer)
        my-favorite-variable)
    (load-theme-buffer-local 'misterioso (current-buffer))))
(add-hook 'hack-local-variables-hook 'my-favorite-function)

据我所知,颜色主题是全局的,对于整个 Emacs 会话运行。这同样适用于背景色,我希望外壳缓冲区为深色,否则为浅色;不可能自动取款机。

如果你喜欢浅色背景,你可以看看我的颜色主题"Leuven"(在Emacs 24.4中,在MELPA或GitHub上),并报告你觉得有用的改进。

最新更新