Я пытаюсь добиться следующего поведения в Emacs24:
Мне нравится использовать другую тему (соляризованная темнота или соляризованная подсветка) в зависимости от того, подключаюсь ли я к работающему серверу с рамкой терминала
% emacsclient -t
или с рамкой GTK
% emacsclient -c
Кажется, это работало в более старых Emacs, но в текущем Emacs я не мог найти способ. Я уже проверял SO (например, /programming//q/18904529/152439 и ответы) и списки рассылки (например, https://lists.gnu.org/archive/html/help-gnu-emacs/ 2012-02 / msg00227.html и https://lists.gnu.org/archive/html/help-gnu-emacs/2012-02/msg00237.html ).
Моя текущая настройка выглядит так:
(add-to-list 'custom-theme-load-path "~/.emacs.d/themes/solarized")
(if (daemonp)
(add-hook 'after-make-frame-functions
(lambda (frame)
(select-frame frame)
(if (display-graphic-p frame)
(load-theme 'solarized-light t)
(load-theme 'solarized-dark t)
)
)
)
(load-theme 'solarized-light t)
)
Проблема в том, что если у меня есть открытая графическая рамка, а затем открываю рамку терминала emacsclient -t
, тема solarized-dark применяется как к новой рамке терминала (что правильно), так и к уже открытой графической рамке (которую следует оставить нетронутый, в идеале). Эквивалент происходит, когда оконечная рамка уже открыта, и я открываю новую графическую рамку с помощью emacsclient -c
.
РЕДАКТИРОВАТЬ: Если это невозможно с текущей Emacs24, есть ли планы сделать это снова?
color-theme.el
какие IIRC имели настройки цвета, зависящие от кадра. Нет большого преимущества в использовании встроенных возможностей тем, кроме повсеместности.
color-theme
систем тем Emacs 24, так и для них. Моя версия соляризованной темы также поддерживает обе системы, если вы решите пойти по этому пути.