Как проверить, находится ли Emacs во фрейме или в терминале? - PullRequest
7 голосов
/ 15 февраля 2012

Исходя из этого вопроса: Как установить фон emacsclient в качестве фона Emacs?

Мне нужен фон только для фреймов, а не для терминала и не для консоли.

Вот как я пытаюсь добавить исправление для консоли

(when (display-graphic-p)
    (tool-bar-mode -1)
    (scroll-bar-mode t)
    (require 'nyan-mode)
    (nyan-mode)
    (nyan-start-animation)
    (mouse-wheel-mode t)
    (setq default-frame-alist
          '((background-color . "#101416")
            (foreground-color . "#f6f3e8"))
          ) 
)

Но при этом я не получаю фон для emacsclient (даже для фреймов).Может быть, проверка даже не выполняется в emacsclient?

По сути, я хочу не добавлять фон к emacsclient в терминале и консоли, а в фреймах.

Ответы [ 2 ]

4 голосов
/ 15 февраля 2012
(defun my-frame-config (frame)
  "Custom behaviours for new frames."
  (with-selected-frame frame
    (when (display-graphic-p)
      (set-background-color "#101416")
      (set-foreground-color "#f6f3e8"))))
;; run now
(my-frame-config (selected-frame))
;; and later
(add-hook 'after-make-frame-functions 'my-frame-config)
2 голосов
/ 16 февраля 2012

Возможно, более простое решение - не касаться * -frame-alist или set-frame- *, а вместо этого Mx настроить RET по умолчанию RET по умолчанию, а затем средний щелчок по кнопке «Состояние» и выберите «Для всех видов дисплеев», после чего вы сможете по-разному настроить внешний вид лица для разных дисплеев. Эта часть пользовательского интерфейса используется не очень часто, и она показывает, но вы должны сделать: щелкните средней кнопкой мыши на INS, чтобы вставить второй набор настроек, затем щелкните средней кнопкой мыши «Display» и выберите «nil», затем щелкните переключатель слева от «Type» и затем переключатель слева от «TTY» : это делает первый набор настроек применимым только к tty-кадрам, в то время как другой (который, по-видимому, все еще говорит «Показать: все») применяется к остальным случаям (т. е. не-tty кадрам).

...