Próbuję osiągnąć następujące zachowanie w Emacs24:
Lubię używać innego motywu (solarized-dark vs. solarized-light) w zależności od tego, czy połączę się z działającym serwerem za pomocą ramki terminala
% emacsclient -t
lub z ramką GTK
% emacsclient -c
Wydaje się, że działało to w starszych Emacsach, ale obecnego Emacsa nie mogłem znaleźć sposobu. Już raz sprawdzałem SO (np. Https://stackoverflow.com/q/18904529/152439 i odpowiedzi) oraz listy mailingowe (np. Https://lists.gnu.org/archive/html/help-gnu-emacs/ 2012-02 / msg00227.html i https://lists.gnu.org/archive/html/help-gnu-emacs/2012-02-02/msg00237.html ).
Moja obecna konfiguracja wygląda następująco:
(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)
)
Problem polega na tym, że jeśli mam otwartą ramkę graficzną, a następnie otwieram ramkę terminala emacsclient -t
, motyw solarized-dark zostaje zastosowany zarówno do nowej ramki terminala (co jest poprawne), jak i już otwartej ramki graficznej (którą należy pozostawić idealnie nietknięte). Odpowiednik dzieje się, gdy ramka terminala jest już otwarta, a ja otwieram nową ramkę graficzną za pomocą emacsclient -c
.
EDYCJA: Jeśli nie jest to możliwe w przypadku obecnych Emacs24, czy są jakieś plany, aby to umożliwić ponownie?
color-theme.el
który IIRC miał ustawienia kolorów zależne od ramki. Korzystanie z wbudowanych funkcji tematycznych nie jest wielką zaletą oprócz wszechobecności.
color-theme
systemów Emacs 24. Moja wersja motywu słonecznego obsługuje również oba systemy, jeśli zdecydujesz się wybrać tę trasę.