テキストファイルに色を付ける
(Emacs でのやり方については、こちらをご覧ください)
一昔前までは「文章はテキストファイルで書こう。MS Word などのワープロソフトでは互換性が云々」などと言う人が結構いた。
しかし、実際、企業や役所、教育機関などで作成される文書のほとんどは、「ワープロソフト」形式(なかには MS Excel や PowerPoint で書く人もいる!)であろう。良かれ悪しかれ、こうしたソフトは人口に膾炙しており、互換性はもはや問題ではないように思える。またバイナリファイルになると容量が増えるが、ハードディスクの大容量化によって、もはやそんなことは心配しなくともよくなった。
それでも私は――個人的なものに限ってだが――テキストファイルで文章を書いている。この形式が良いからではなく、Emacs や xyzzy などの優れたテキストエディタが存在しているためである。
テキストファイルで不満なのは、文字に装飾を施すことができない点である。しかし、xyzzy には、これを可能とする拡張 lisp がある。まずは下記の画像をご覧いただきたい。
これは、my-coloring.l という拡張を使ったものである。文字列をセレクションまたはリージョンで選択し、M-x color-string-popup/color-string-popup-by-region とすると、ポップアップで指定する装飾が表示される。そこで色なり下線などを選択すると、くだんの文字列にそれらが施されるのである。文書を保存すると、同じフォルダに[文書名].col というファイルも記録される。これで、その後に文章を開いても色情報が復元される。
ただし、当然ながらこれは xyzzy でしか使えない。他のソフトで、その(色付きの)テキストファイルを開いても装飾は表示されないし(文章を表示される)、そこで何らかの編集をすると、装飾の情報が狂ってしまい、xyzzy でも正しく表示されないようになる。また、扱える色は xyzzy が制御できるものに限られる。
このように、この拡張ではあくまで限定的な使い方しかできないし、装飾情報が壊れて付け直さなければならないことも少なくない。そこで便利なのが coloring-enclosed-braces-string というコマンド。これは括弧で囲われている文字列すべてを、一括で装飾を施すものである。あらかじめ構造化された文書を書いていれば、簡単に色付けを行うことができる。
以下に、xyzzy の設定ファイル (.xyzzy/siteinit.l) における記述例を掲げる。
;; テキストに色付け
;; my-coloring
(require "my-coloring")
;; カスタマイズ
(setq *coloring-attribute-list* '(
("赤(&1)" :foreground 11)
("青(&2)" :foreground 4)
("黄(&3)" :foreground 3)
("緑(&4)" :foreground 2)
("ピンク(&5)" :foreground 5)
("橙(&6)" :foreground 12)
("紫(&7)" :foreground 10)
("灰(&8)" :foreground 15)
("白(&9)" :foreground 0)
("太字(&b)" :bold t)
("下線(&u)" :underline t)
("取消し線(&x)" :strike-out t)
("太赤" :foreground 11 :bold t)
("太青" :foreground 4 :bold t)
("太黄" :foreground 3 :bold t)
("太緑" :foreground 2 :bold t)
("太ピンク" :foreground 5 :bold t)
("赤+下線" :foreground 11 :underline t)
("青+取消し線" :foreground 4 :strike-out t)
("前白背青" :foreground 0 :background 3)
("前赤太背黄" :foreground 11 :background 11 :bold t)
("前橙背緑" :foreground 12 :background 14)
("前黒背白" :foreground 8 :background 7)
("前黒背灰" :foreground 8 :background 15)
("前桃太背水" :foreground 5 :background 4)
))
(setq *coloring-color-list* '*1
;; 括弧の色付
(setq *coloring-brace-list* '("():半角"
"[]:半角"
"{}:半角"
"<>:半角"
"():全角"
"[]:全角"
"<>:全角"
"《》:全角"
"{}:全角"
"〔〕:全角"
"『』"
"【】"
"「」"
"≪≫:ギユメ"
"#||#"
"\"\": double quote"
"'': single quote"
" : blank"
",,: comma"
"/**/"
"/***/: java doc"
"=begin\n=end : perl"": HTML"
"HTML:タグ")
);; grep にマッチした語のフォント
(setq *grep-highlight-match* '(:foreground 3 :bold t));; color-string-popup をリージョンで行う
(defun color-string-popup-by-region ()
(interactive)
(exchange-region-and-selection)
(color-string-popup)
)
と、ここまで書いて何だが、my-coloring.l は配布元のサイト(「きまぐれにxyzzy」)はすでに閉鎖されており(Internet Archive にも残っていない)、手に入れるのは困難である。興味のある方は、HIE no xyzzy にある「テキストに色付け」などを試してもらいたい。
*1:"赤(&1)" 1) ("明るい緑(&2)" 2) ("黄色(&3)" 3) ("青(&4)" 4) ("ピンク(&5)" 5) ("明るい水色(&6)" 6) ("白(&7)" 7) ("黒(&8)" 8) ("茶色(&9)" 9) ("緑(&A)" 10) ("黄土色(&B)" 11) ("紺(&C)" 12) ("紫(&D)" 13) ("水色(&E)" 14) ("灰色(&F)" 15)