2007年4月21日の日記の1番目の記事へのコメント

uim.elとfont-lock-mode

新しくいじってるやつ,XEmacsだと変換候補をインラインで表示した際に色が抜けてしまうことが発覚.変換候補と同じ行に font-lock-comment-faceやfont-lock-string-face,font-lock-keyword-face あたりがついた文字列があると,変換候補が出た瞬間に色が抜け落ちます.が,何故か font-lock-reference-face だけは色が残る模様.なんじゃこりゃ.

試しに after-change-functions を nil にして buffer-substring で切り出してみると,font-lock-reference-face のところは切り出した文字列にもちゃんと色がつくのに,それ以外の場合だと,切り出した文字列に色がついてくれません.うーん.

get-text-propertyで face を引っ張り出してみると,色が切り出されるところは「(font-lock-reference-face)」という風にリストが返ってきています.一方,色が抜けちゃうところは「font-lock-comment-face」とか「font-lock-string-face」みたいにface名(?)が返ってきます.この辺が鍵を握ってるのか?

とりあえず↓みたいなの書いて,変換候補が重なるところのfaceを全部リストに直すようにしてみたら何と色が抜けなくなりました.いいのかこんなんで・・・.ていうか,こんなことばっかやってるからぐちゃぐちゃになるんだよなぁ.

(defun uim-overwrite-font-face (start end)
  (let ((facelist '()) tail face)
    (catch 'face-loop
      (while t
        (setq tail
              (next-single-property-change start 'face (current-buffer) end))
        (if (setq face (get-text-property start 'face))
            (if (atom face)
                (put-text-property start tail 'face 
                                   (cons face nil))))
        (setq start tail)
        (if (= start end)
            (throw 'face-loop t))))
    )
  )

しかし,ほんと,XEmacsでuim.el使ってる人ってどんくらいいるんでしょね・・・.

お名前:  メールアドレス(省略可):
メールアドレスも表示されます
ここに名前その他を書いてはいけません: ここにメールアドレスその他を書いてはいけません:

2007年4月21日の日記の1番目の記事へのコメント

中の人情報

名前:
nosuke (のすけ)
メール:
sasugaanijaのgmail.com
「の」は「@」みたいな
関連リンク:

カレンダー

2007年4月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30          

<<先月分

翌月分>>

最新の10件のエントリ

最近の10件のコメント

過去ログ