Emacs: отключить цвет фона темы в терминале

Я хочу, чтобы emacs не имел цвет фона при открытии фрейма в терминале. Я использую терминал с полупрозрачным фоном, а символы с цветом фона не являются "сквозными". TERM установлен на "xterm-256color".

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

Edit: У меня есть это, вроде:

(add-to-list 'custom-theme-load-path "~/.emacs.d/themes")
(load-theme 'my-awesome-theme t)

(defun on-frame-open (frame)
  (if (not (display-graphic-p frame))
    (set-face-background 'default "unspecified-bg" frame)))
(on-frame-open (selected-frame))
(add-hook 'after-make-frame-functions 'on-frame-open)

Я помещаю вышеуказанный код в свой файл инициализации, но только подавляет фон при открытии emacsclient в терминале, а не сам emacs (т.е. только при вызове с emacsclient -t, а не при вызове с emacs). Добавление дополнительного (unless window-system (set-face-background 'default "unspecified-bg" (selected-frame))) не работает и только путает графические фреймы.

Любые идеи о том, почему это может произойти?

Ответ 1

(defun on-after-init ()
  (unless (display-graphic-p (selected-frame))
    (set-face-background 'default "unspecified-bg" (selected-frame))))

(add-hook 'window-setup-hook 'on-after-init)

В сочетании с кодом в вашем редактировании он отлично работал у меня как для emacsterms, так и для недавно созданного emacsen. Что касается причин window-setup-hook: http://www.gnu.org/software/emacs/manual/html_node/elisp/Startup-Summary.html

(ни один из ранних крючков, казалось, не работал, кроме этого).

Ответ 2

Я попробовал метод, предложенный в этом ответе, но мне не повезло, что он работает. этот фрагмент работает для меня, хотя

(defun on-frame-open (&optional frame)
  "If the FRAME created in terminal don't load background color."
  (unless (display-graphic-p frame)
    (set-face-background 'default "unspecified-bg" frame)))

(add-hook 'after-make-frame-functions 'on-frame-open)

Хотя у этого есть неудача, если у терминала есть другие настройки фона, чем тема, которую я использую (темный против света), используются грани темы темы по умолчанию, которые могут не казаться хорошими на светлом или темном фоне. но в моем случае, когда оба терминала и тема темные, он отлично работает.