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

uim.elとfont-lock-mode

uim.elでは未確定の入力文字列(プリエディットだっけ?)とか変換候補とかをバッファ上に一時的に挿入・マージして無理矢理普通(?)のIMを使っているかのような描画をしてるわけなんですが,そんときfont-lock-modeが有効になってると,プリエディットや変換候補に反応してバッファの色付けとかが変わっちゃいます.たとえば emacs-lisp-mode で変換候補に「(^^;」とか出てたりすると,変換候補が表示されている間は「;」より右側がコメントとして認識されて色が変わっちゃったりします.

現状,これをどうやって誤魔化しているのかというと,実はプリエディットとか変換候補の表示を開始する直前にfont-lock-modeを切ってます.が,普通に切っちゃうと画面が急に白黒になったりして非常にまずいので,切る直前に,バッファの表示されている範囲のface属性を集めておいて,その後font-lock-modeを切って,さらに先ほど集めたface属性を適用するとかやってます.とりあえずこれでそこそこまともに動いてるんでそのままにしてあるんですが,これはとてもダサい上に重いわけでして・・・.

普通に考えれば font-lock-mode まるごと切るなんてやらずに,バッファに文字が挿入された際に,faceの即時更新を一時的に停止させることができればいいわけで,実際,作り始めたころはそうやりたいと思ってたわけなんですが,やり方がよく分からなかったんですよね.当時はリファレンスばっか見てたもんで・・・.

で,なぜか今日,突然この辺を解消してみたくなり,font-lock.el を読んでみたわけだったりします.font-lock.elで定義されてる変数とかをEmacs上で確認しつつ読み進めていると「jit-lock-mode」なんて怪しげなモードが・・・.「(jit-lock-mode nil)」とかやると,既存のface属性は残ったままで,新規に追加された文字列に色がつかなくなりますな・・・.うわー,これじゃん.こんなにあっさり見つかるとは(;´д`)

この他,lazy-lock-mode や fast-lock-mode なんてのもあって,何がどう違うのかまだよくわかってないんですが,とりあえず font-lock-support-mode とかを気にしながらこの辺のモード一時的に切るようにすれば font-lock-mode 絡みの問題は一挙に解決してくれそうな感じです.というわけで,明日時間があれば試しに組み込んでみようかと.少しは軽くなってくれるとうれしいのですが・・・.

[コメントを書く]

ヤマケン 2007/04/08(日) 10:26:56
もうとっくに調べがついてるかもしれませんが、jit-lock-modeはEmacs 22から加わった機能です。21の時はfast-lock-mode使ってました。
nosuke 2007/04/08(日) 13:16:16
> jit-lock-modeはEmacs 22から加わった機能です
(;゜Д゜) (゜A ゜;(゜д゜;) ナ、ナンダッテー!

・・・あれ,でも昨日は21.3のソース眺めつつ色々テストしてたんですが・・・.今 -q 付けてEmacs起動してみましたけど,font-lock-support-mode は jit-lock-mode になってて,(fast-lock-mode nil) しても何も変化ないみたいです.うーん.
ヤマケン 2007/04/08(日) 14:48:43
すいませんすいません大嘘ついてました。
今emacs-21.4見てみたらしっかり入ってました。20.7には無いんで21からだったみたいです。22に移行した時にfast-lock-mode用の俺設定がうまく動かなくてjit-lock-modeに移行したんで勘違いしてました。
nosuke 2007/04/08(日) 15:58:54
なるほどそうでしたか.
そう言えば今の環境に20.7もxemacsも入ってないや・・・.xemacsでまたはまりそうで怖い(;´д`)

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

2007年4月7日の日記の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件のコメント

過去ログ