コメント内に書き散らかすメモとか
いろんなことを wiki のような hatena のような書式で書いてるんだけど、全部コメント色で見辛いとか思ってたら regexp-keyword-list なんてもんがあった。正規表現で指定して色つけれた。とりあえず
- 見出し: * で始まる行
- 箇条書き: -, +, \d.で始まる行
- 定義?: 行頭から :単語:
- コード: >|hoge| と、そこから ||< の間
- 引用: >>> と <<< の間
- 強調: *hoge* とか
とか "hoge" とか 'spam' とか - 目印: TODO: とか FIXME: とか MEMO: とか
の色を変えてみた。
(defvar *wiki-like-regexp-keyword-list* nil) (setf *wiki-like-regexp-keyword-list* (compile-regexp-keyword-list '( ;; heading ("^[ \t]*\\(\\*\\{2,\\}.+\\)$" nil (:color 10 0 :bold) :comment 1 1) ("^[ \t]*\\(\\*\\{1\\}[^/\n]+\\)$" nil (:color 10 10 :bold) :comment 1 1) ;; list ("^[ \t]*\\-.+$" nil (:color 11) :comment) ("^[ \t]*\\+.+$" nil (:color 11) :comment) ("^[ \t]*[0-9]\\..+$" nil (:color 11) :comment) ;; definition ("^\\(\\:.+\\:\\)" nil (:color 12 0 :bold) :comment 1 1) ;; code ("^>|\\([^|]+\\)*|$" nil (:color 13 0 :bold) :comment 1 1) ("\\b|\n\\(\\(?:.\\|\n\\)*\\)+?||<" nil (:color 13) :comment 1 1) ;; quote ("^>>>\n\\(\\(?:.\\|\n\\)+\\)\n<<<\n" nil (:color 14) :comment 1 1) ;; strong ("\\*[^\\*\n]\\{,44\\}\\*" nil (:color 11 0 :bold) :comment) ("<[^>\n]\\{,44\\}>" nil (:color 11 0 :bold) :comment) ;; little strong ("\"[^\"\n]\\{,44\\}\"" nil (:color 11) :comment) ("\'[^\'\n]\\{,44\\}\'" nil (:color 11) :comment) ;; marked comments ("\\(\\s<+[ \t]*\\(?:TODO:\\|MEMO:\\|FIXME:\\)\\)" nil (:color 13 10 :bold) :comment 1 1) ))) ;|# (defun wiki-color-comment () (unless (local-variable-p 'regexp-keyword-list) (make-local-variable 'regexp-keyword-list)) (setf regexp-keyword-list (append regexp-keyword-list *wiki-like-regexp-keyword-list*))) (add-hook '*lisp-mode-hook* 'wiki-color-comment)
を siteinit.l に。.xyzzy でもたぶん動く。
ダメなとこ
- javascript-mode で
/** * blah, blah, blah,,, */
とか全部見出しになりやがる
- ちっと重いやも
追記: 24/Apr/2007
;; code の正規表現が重かったみたい。↓にしたら多少マシに。
;; code ("^>|\\([a-z\\-]+\\)*|$" nil (:color 10 0 :bold) :comment 1 1) ("\\b|\n\\(\\(?:.\\|\n\\)+\\)||<" nil (:color 10 0) :comment 1 1)
あとコメント開始文字(lisp なら ";" とか) をてきとーに無視したいのだが \\sc ってのの使い方がヨクワカラナイ。モードごとに設定した方がいいやも。