Emacsをちょっとだけ自分色に染める (Emacs Advent Calendar jp: 2011)
この記事は Emacs Advent Calendar jp: 2011 : ATND の9日目です。遅くなってごめんなさい!
去年にひき続いて標準で少しEmacsを便利にする小技を。
Emacsを使ってて普段使ってるmodeにちょっとだけ色を足したいとか思うことはないですか?そんなときは font-lock-add-keywords を使えば好きな色を足すことができちゃいます。
使い方は簡単。例えばこんな風にすると
(font-lock-add-keywords 'c-mode '(("!" . font-lock-warning-face)))
c-modeで「!」が赤くなります。数字にも色を付けて、hogeをキーワードの色にしたければこんな風に。
(font-lock-add-keywords 'c-mode '(("!" . font-lock-warning-face) ("hoge" . font-lock-keyword-face) ("[0-9]+" . font-lock-constant-face)))
ただこの font-lock-add-keywords には弱点があって。間違った設定とかにしてしまうと、ハイライトを壊して元に戻せなくなってしまうのです。
というわけで、font-lock-user-keywords というものを作って使ってます。この子なら壊したときにも簡単に戻すことができるから安心です。
(defun font-lock-user-keywords (mode &optional keywords) "Add user highlighting to KEYWORDS to MODE. See `font-lock-add-keywords' and `font-lock-defaults'." (unless mode (error "mode should be non-nil ")) (font-lock-remove-keywords mode (get mode 'font-lock-user-keywords)) (font-lock-add-keywords mode keywords) (put mode 'font-lock-user-keywords keywords))
設定するときは font-lock-add-keywords と同じように使うだけ。リセットするときは (font-lock-user-keywords 'c-mode) として呼んであげれば元に戻ってくれます。ただ、font-lock-add-keywords で足したものは戻らないのでそこは注意して使ってくださいね。
明日は [twitter:@ta2_o2p] さんです。それでは。