我如何让Emacs自动使用不同的颜色主题(例如使用Elisp ColorTheme包),具体取决于缓冲区的模式?
编辑代码时,某些颜色主题效果很好,但在Dired +,TERM或shell模式下则不然。
由于
答案 0 :(得分:10)
您似乎无法为不同的缓冲区设置单独的颜色主题,但您可以为不同的帧设置它。您可以在此处找到有关设置每帧颜色主题的说明http://www.emacswiki.org/emacs/ColorTheme#toc8。
您可以使用加载挂钩在加载模式时自动更改颜色主题,但它会将更改应用于所有缓冲区。
使用加载钩子加载模式时,可以更改颜色主题。 e.g。
(add-hook 'dired-mode-hook 'color-theme-emacs-nw)
编辑:这是一个使用不同颜色主题在新框架中打开shell的函数:
(defun my-shell ()
(interactive)
(let ((color-theme-is-global nil))
(select-frame (make-frame))
(color-theme-gnome)
(shell)))
答案 1 :(得分:7)
包load-theme-buffer-local
(或color-theme-buffer-local.el
如果使用预emacs 24主题)可以为每个缓冲区设置不同的面。
你的背景保持不变。
你可以像这样模仿它:
(add-hook 'js2-mode-hook (lambda nil (load-theme-buffer-local 'tango (current-buffer))))
这些软件包位于MELPA(M-x install-package RET load-theme-buffer-local
),source and readme位于github上
答案 2 :(得分:4)
我正在使用zenburn颜色和
(setq font-lock-maximum-decoration (quote ((dired-mode . nil) (t . t))))
对我不起作用,但是,
(setq font-lock-maximum-decoration (quote ((dired-mode) (t . t))))
与2011/01/04发布的dired +版本完美配合。
答案 3 :(得分:1)
我在过去遇到了同样的问题,终端中有不可读的直接缓冲区。作为一种解决方法,我做了M-x customize-option font-lock-maximum-decoration;您也可以直接在配置文件中设置变量,例如(setq font-lock-maximum-decoration (quote ((dired-mode . nil) (t . t))))
。这使用了dired的默认装饰,以及其他所有内容的默认装饰(这是默认设置)。请C-h v font-lock-maximum-decoration
了解详情。
这并没有完全回答这个问题 - 我不知道是否可以使用每个缓冲区或每个模式的颜色主题 - 但它可能有助于解决潜在的问题。
答案 4 :(得分:1)
您可以使用per-buffer-theme.el
。这是我的配置:
(require 'per-buffer-theme)
(setq per-buffer-theme/use-timer nil) ; Set it to t if the window flickers.
(setq per-buffer-theme/default-theme 'notheme)
(setq per-buffer-theme/ignored-buffernames-regex
(append '("*anaconda-mode*" "*Backtrace*" "*Buffer List*" "*compilation*" "*Compile-Log*" "*Completions*" "*ESS*" "*Flymake log*" "*Help*" "*Ibuffer" "*info*" "*Messages*" "*Warnings*")
per-buffer-theme/ignored-buffernames-regex))
(setq per-buffer-theme/themes-alist
'(((:theme . dichromacy)
(:buffernames nil)
(:modes ess-mode inferior-ess-mode
python-mode inferior-python-mode))
((:theme . solarized)
(:buffernames nil)
(:modes latex-mode))))
(per-buffer-theme/enable)
对于要使用的每个主题,在列表per-buffer-theme/themes-alist
中,您可以指定模式和缓冲区名称以加载该主题。如果没有关于缓冲区名称和主模式的特定组合的规则,则per-buffer-theme
将加载per-buffer-theme/default-theme
。