Emacs中每种模式的不同颜色主题

时间:2010-12-25 22:54:31

标签: emacs elisp dired term

我如何让Emacs自动使用不同的颜色主题(例如使用Elisp ColorTheme包),具体取决于缓冲区模式

编辑代码时,某些颜色主题效果很好,但在Dired +,TERM或shell模式下则不然。

由于

5 个答案:

答案 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))))

这些软件包位于MELPAM-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