4

私の.emacs設定ファイルには、次のエントリがあります。

(custom-set-variables
  (custom-set-faces
    '(font-lock-comment-face ((((class color)
                                (min-colors 8)
                                (background dark))
                                (:foreground "red"))))))

TERMこれにより、環境変数がに設定されている場合はフォントの色が修正されますが、に設定されている場合はフォントの色screenが壊れます。変数の値を読み取り、の値がである場合にのみそのコードを実行する方法はありますか?この質問は少し役に立ちましたが、それでもelispで環境変数の値を読み取る方法がわかりません。TERMxtermTERMTERMscreen

4

2 に答える 2

7

最初に、あなたが尋ねたことに答えます。以下では、あなたが本当に尋ねるべきだった質問に答えます ;)

関数を使用して環境変数の値を取得しますgetenv。例えば:

(getenv "TERM")   ->  "xterm-color"

ただし、これは、Emacs がターミナルで実行されているかどうかを確認するための比較的不器用な方法です。代わりに、次を使用できます。

(display-graphic-p &optional DISPLAY)

Return non-nil if DISPLAY is a graphic display.
Graphical displays are those which are capable of displaying several
frames and several different fonts at once.  This is true for displays
that use a window system such as X, and false for text-only terminals.
DISPLAY can be a display name, a frame, or nil (meaning the selected
frame's display).

古い非推奨のバージョンは、変数をチェックすることですwindow-system

于 2012-11-04T16:17:10.260 に答える
6
(when (string= (getenv "TERM") "screen")
    .... your code
)
于 2012-11-04T16:16:59.620 に答える