2011年8月22日月曜日

フェイス(face)を変えて見やすくしよう

Emacsのテキスト表示に関する属性、すなわちフォント、前景色、背景色、下線などをまとめたものを「フェイス」と呼ぶ。フェイスの概念は、テキストをちょっとカスタマイズしたいときなどに役に立つ。

例:SLIMEの slime-repl-inputed-output-face

下の画像は、Emacs で SLIME の REPL を使っているところ。式の評価結果「1.4142135」が赤で表示されていて見えにくいため、「フェイスを変更して見やすくしよう」という気分になる。

見えにくい部分のフェイスを調べる

問題のテキストに指定されているフェイスを調べることから始める(環境は GNU Emacs 22.3.1)。

具体的には、カーソルを「1.4142135」の所に移動して M-x eval-expression を実行。次いでミニバッファに以下の式を入力する。

(get-char-property (point) 'face)

すると、同じくミニバッファに slime-repl-inputed-output-face という文字が表示されるはず。これが見えにくい部分のフェイスの名前なので、メモしておく。

※毎回 eval-expression するよりも、「Meadow/Emacs memo: 基本的な設定」に紹介されているように、フェイスを調べるコマンドをあらかじめ init.el や .emacs に定義しておくほうが便利。

色の見本を参照して使いたい色を決める: list-colors-display

コマンド M-x list-colors-display を実行すると、以下のように色の名前("snow"、"GhostWhite"など)が表示される。この中から、新しい文字に使いたい色の名前をピックアップしておく。

フェイスを変える: customize-face

Emacsにはフェイスを変更するためのコマンド customize-face が用意されているので、これを利用する。

M-x customize-faceを実行して、目的のフェイスであるslime-repl-inputed-output-face を入力。すると、次のようなバッファができる。

下のほうにある"Foreground: Red"の所までカーソルを移動して、新しい文字の色を入力。入力に応じて右側の "sample" の文字色が変わるので、試行錯誤することもできる。

色を入力したら、上のほうにある "Save for Future Sessions" にカーソルを合わせて Enterキー を押す。これで変更が永続化、つまり .emacs や init.el に設定が書き込まれる。

確認

customize-face による設定はすぐに反映されるので、REPLのバッファに戻れば文字色の変化を確認できる。

さらに、設定ファイルを開いてみると、末尾にカスタマイズのためのコードが追加されていることがわかる。

(custom-set-variables
  ;; custom-set-variables was added by Custom.
  ;; If you edit it by hand, you could mess it up, so be careful.
  ;; Your init file should contain only one such instance.
  ;; If there is more than one, they won't work right.
 )
(custom-set-faces
  ;; custom-set-faces was added by Custom.
  ;; If you edit it by hand, you could mess it up, so be careful.
  ;; Your init file should contain only one such instance.
  ;; If there is more than one, they won't work right.
 '(slime-repl-inputed-output-face ((((class color) (background dark)) (:foreground "IndianRed1")))))

勝手に追加されるのが気持ち悪い場合は、custom-set-faces の式を自分で作って書き込めばいい。ただし、背景の種類に応じて (background dark) の部分を調整する必要があるはず。

0 件のコメント:

コメントを投稿