複合語サーバが返した候補には色を付ける
先日の作業で skkserv2 と mecab-skkserv の検索結果にはアノテーションを付けて区別できるようにしてみたのだが、それだけでは自分には不足のようだ。
何度か SPC を押して候補一覧の状態になってしまえばアノテーションは候補の後ろに表示されるのですぐ気付くのだが、それ以前の段階だとアノテーションはエコーエリアに表示されるだけ*1なのでうっかり見逃してしまうことがあるようなのだ*2。
刺激が足りない。
そこで複合語アノテーションならば更に候補に色を付けてみることにした。`skk-treat-candidate-appearance-function' の雛形をちょっと変えただけだけど、この機能はこういう時に自由が効くのでとても重宝している。
(copy-face 'skk-henkan-face-default 'my-skk-compound-word-face) (set-face-background 'my-skk-compound-word-face "misty rose") (setq skk-treat-candidate-appearance-function (lambda (candidate listing-p) (let* ((value (skk-treat-strip-note-from-word candidate)) (cand (car value)) (note (cdr value)) (sep (if note (propertize (if (skk-annotation-display-p 'list) " ≒ " " !") 'face 'skk-tut-do-it-face) nil))) (cond (note (put-text-property 0 (length cand) 'face (if (string-match "<\\(?:skkserv2\\|MeCab\\)>\\'" note) 'my-skk-compound-word-face 'skk-henkan-face-default) cand) (put-text-property 0 (length note) 'face 'skk-tut-hint-face note) (cons cand (cons sep note))) (t (put-text-property 0 (length cand) 'face 'skk-henkan-face-default cand) cand)))))
さすがにここまでやっときゃ気付くだろう。