2014-07-01

Emacs 23: Fix font-lock colors for 8 color terminal

例えば RHEL6 で、SSH + screen + Emacs 23 とかいう組み合わせで使うと、Emacs の色付けが上手くいかない。具体的には、

  1. ソースコードのコメントに色が付かない
  2. Bash スクリプトの関数名に色が付かない

8 色ターミナル + Emacs 23 + 黒背景という組み合わせだとこうなる。最初は Emacs 23 からの仕様かとも思ったが、そんなはずは無かった。正直(2)はどうでも良いが、(1)は冗談抜きで生産性に直結するので見過ごせない。

;;; font-lock settings for 8 color terminal
(when (require 'font-lock nil t)
  ;; fix comment color in dark background
  (and (>= emacs-major-version 22)
       (eq 'unspecified (face-attribute 'font-lock-comment-face :foreground))
       (set-face-attribute 'font-lock-comment-face nil
			   :foreground (face-attribute
					'font-lock-comment-delimiter-face
					:foreground)))
  ;; fix function symbol color in Bash script
  (when (= emacs-major-version 23)
    (eval-after-load "sh-script"
      '(let ((tail (cddr (assq 'bash sh-font-lock-keywords-var))))
         (and (eq 'shell (car tail))
	      (setcar tail 'sh)))))
  (global-font-lock-mode 1))

どちらも Emacs 24 では直ってるっぽいが、オールド世代への扱いが不憫過ぎて泣ける。8 色ターミナルで Emacs 背景黒とかもう誰も使ってないですか、そーですか。

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。