フレームで色が使用できない場合、emacs は「近い」ものを選択しようとする必要がありますが、限られた色のディスプレイでは、これはしばしば非常に間違っています。M-x list-colors-display
(実際に色を表示するために)使用するか(display-color-cells)
、スクラッチバッファーで実行するかのいずれかで、gnome-terminal にあると考えられる色の数を emacs に問い合わせる必要があります。8 つしかないと表示されている場合は、 emacs を起動する前に、TERM
環境変数を次のように変更することを検討してくださいxterm-256color
(ただし、これが gnome-terminal で実際にどの程度機能するかはわかりません。私は xterm を使用しています)。
これは、emacs がより近い色を見つけるのに役立つかもしれませんが、それでも間違っている場合は、ウィンドウ システムに基づいて色を設定するなど、より抜本的なことを行う必要があります。
デーモンモードを使用していない場合は、次のようなものを使用できます
(if window-system
(set-face-foreground 'font-lock-function-name-face "LightSkyBlue"))
を使用するM-x describe-face
と、どの面を記述したいか尋ねられ、現在ポイントにある面がデフォルトになります。そこから名前 (および通常は色) を取得できます。
デーモン モードを使用している場合は、フレームごとに異なる色が必要になります。その場合、新しいフレーム フックでフレームの色を設定する必要があります。次のようになります。
(defun set-new-frame-colors (frame)
"Set colors based on frame type."
(if (window-system frame)
(set-face-forgeground 'font-lock-function-name-face "LightSkyBlue" frame)
(set-face-forgeground 'font-lock-function-name-face "blue" frame)))
(add-hook 'after-make-frame-functions 'set-new-frame-colors)
または、 をチェックする代わりに、システムでサポートされている色の数に基づいて(window-system frame)
チェック(length (defined-colors frame))
し、8 色と 256 色の端末で異なる色を使用できるようにすることもできます。