Различная тема для -nw (терминал)

16

Я использую emacs (24.5.1) на Mac OSX и использую соляризованную тему. Для версии с графическим интерфейсом тема работает хорошо. Если я запускаю приложение с флагом -nw:

/Applications/Emacs.app/Contents/MacOS/Emacs -nw

цвета для темы становятся все шаткими. Я предполагаю, что это потому, что:

TERM=xterm-256color

Что мне нужно добавить в мой .emacs, чтобы получить следующее условное поведение:

if (gui)
  theme=solarized
if (-nw)
  theme=wheatgrass

??

DJH
источник
У меня было соблазн сказать вам написать что-то вроде: (if (window-system) ...) Затем я прочитал документацию:> window-system - это переменная, определенная в `C исходном коде '. > Его значение равно нулю. Это локальная переменная терминала; глобальное значение> то же самое. >> Документация: название оконной системы, через которую отображается выбранный кадр>. Значением является символ:> - nil для фрейма termcap (> символьный терминал),> - 'x' для фрейма Emacs, который действительно является окном X>,> - 'w32' для фрейма Emacs, который является окно в MS-Windows> display,> - 'ns' для кадра Emacs на GNUstep или Macintosh
Nsukami _
1
Если вам нужно только знать, как проверить, работает ли emacs в графическом интерфейсе или терминале, то я считаю, что это дубликат, или это: emacs.stackexchange.com/questions/7151/… Если вам также нужно знать, как включить темы из elisp тогда я думаю, что это стоит как собственный вопрос хорошо. Если вам нужно знать, как программно включить темы из elisp, я бы добавил это специально к основной части вашего вопроса.
Джордон Биондо
2
Существуют темы, которые хорошо смотрятся как в графической, так и в неграфической среде. Альтернативным решением будет использование одной такой темы.
Джордон Биондо

Ответы:

23

Используйте, display-graphic-pчтобы определить, находится ли Emacs в графическом интерфейсе или нет.

Предполагается, что соляризация установлена ​​и загружена:

(if (display-graphic-p) 
    (enable-theme 'solarized) 
  (enable-theme 'wheatgrass))

Смотрите также: Есть ли способ обнаружить, что emacs работает в терминале?

Джордон Биондо
источник