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

时间:2014-11-15 07:53:11

标签: emacs themes org-mode

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

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

有关为什么这样做有用的示例,有些文件非常扁平,并且使用一组样式更具可读性,而其他文件则深度嵌套,并从另一组样式中受益。

2 个答案:

答案 0 :(得分:1)

原始海报引用了一个名为color-theme-buffer-localhttps://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在 之前运行考虑了文件局部变量。因此,当my-favorite-variable运行其路线时(使用初始答案),变量nil仍为org-mode-hook。以下修订的答案使用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)

答案 1 :(得分:0)

据我所知,颜色主题是全局的,用于整个Emacs会话的运行。这同样适用于背景颜色,我喜欢暗壳的缓冲区,否则是光;不可能是ATM。

如果您喜欢浅色背景,可以查看我的颜色主题“Leuven”(在Emacs 24.4中,在MELPA中或在GitHub上)并报告您认为有用的改进。