我如何要求Emacs根据缓冲区模式自动使用其他颜色主题(例如,使用Elisp ColorTheme包)?

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

谢谢

最佳答案

似乎无法为不同的缓冲区设置单独的颜色主题,但是可以为不同的帧设置颜色主题。您可以在http://www.emacswiki.org/emacs/ColorTheme#toc8中找到有关设置每帧颜色主题的说明。

您可以使用加载 Hook 在加载模式时自动更改颜色主题,但是它将更改应用于所有缓冲区。

您可以在使用加载 Hook 加载模式时更改颜色主题。例如

(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)))

09-26 17:22