21

ターミナルでフレームを開いたときに、emacs が背景色を持たないようにしたいと思います。背景が半透明の端末を使用しており、背景色の文字が「透けて見える」ことはありません。TERM は「xterm-256color」に設定されています。

フレームがグラフィカルでない場合、emacs にデフォルトの背景色 (色をまったく使用しない) を使用させるにはどうすればよいですか?

編集: 私はそれを手に入れました:

(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)

上記のコードを init ファイルに入れましたが、ターミナルで emacsclient を開いたときにのみバックグラウンドを抑制し、emacs 自体は抑制しません (つまり、 で呼び出されたときのみであり、 で呼び出されたemacsclient -tときではありませんemacs)。余分なものを追加(unless window-system (set-face-background 'default "unspecified-bg" (selected-frame)))しても機能せず、グラフィック フレームが混乱するだけです。

なぜこれが起こるのかについてのアイデアはありますか?

4

3 に答える 3

33
(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-hookhttp://www.gnu.org/software/emacs/manual/html_node/elisp/Startup-Summary.html

(これを除いて、以前のフックはどれも機能していないようでした。)

于 2013-11-27T03:58:33.303 に答える