Различные цветовые темы для режима в Emacs - PullRequest
11 голосов
/ 26 декабря 2010

Как я могу попросить Emacs автоматически использовать другую цветовую тему (например, используя пакет Elisp ColorTheme) в зависимости от режима буфера ?

НекоторыеЦветовые темы прекрасно работают при редактировании кода, но не в режимах Dired +, TERM или shell.

Спасибо

Ответы [ 5 ]

12 голосов
/ 02 января 2011

Кажется, что вы не можете установить отдельные цветовые темы для разных буферов, но вы можете установить его для разных кадров.Инструкции по настройке цветовых тем для каждого кадра можно найти здесь http://www.emacswiki.org/emacs/ColorTheme#toc8.

. Вы можете использовать загрузочный крюк для автоматического изменения цветовой темы при загрузке режима, но он применит изменение квсе буферы.

Вы можете изменить цветовую тему, когда режим загружается с помощью хука загрузки.например,

(add-hook 'dired-mode-hook 'color-theme-emacs-nw)

Редактировать: вот функция, которая открывает оболочку в новом кадре с использованием другой цветовой темы:

(defun my-shell () 
       (interactive)
         (let ((color-theme-is-global nil))
          (select-frame (make-frame))
          (color-theme-gnome)
                         (shell)))
7 голосов
/ 11 декабря 2013

Пакет load-theme-buffer-local (или color-theme-buffer-local.el, если вы используете темы pre 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 и readme на github

4 голосов
/ 13 января 2011

Я использую цвета Zenburn и

(setq font-lock-maximum-decoration (quote ((dired-mode . nil) (t . t))))

не работал для меня, но,

(setq font-lock-maximum-decoration (quote ((dired-mode) (t . t))))

отлично работает с версией dired +, выпущенной 2011/01/04.

1 голос
/ 26 июня 2019

Вы можете использовать <a href="https://bitbucket.org/inigoserna/per-buffer-theme.el/src/default/" rel="nofollow noreferrer">per-buffer-theme.el</a>.Это моя конфигурация:

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

1 голос
/ 26 декабря 2010

В прошлом я сталкивался с той же проблемой с нечитаемыми буферами с задержкой в ​​терминале. В качестве обходного пути я сделал M-x customize-option font-lock-Maximum-украшения; Вы также можете установить переменную непосредственно в вашем конфигурационном файле, например, (setq font-lock-maximum-decoration (quote ((dired-mode . nil) (t . t)))). При этом используются стандартные украшения для Dired и максимум для всего остального (это было значение по умолчанию). Do C-h v font-lock-maximum-decoration для деталей.

Это не совсем отвечает на вопрос - я не знаю, возможно ли использовать цветовые темы для каждого буфера или для режима - но это может помочь решить основную проблему.

...