Emacs Part 42
■ このスレッドは過去ログ倉庫に格納されています
0455376
2013/02/14(木) 01:11:50.60>intangibleは特殊なtext property で The `intangible' property disallows moving point within
>the text ということなので、そう簡単にeggの側で変更するわけにもいきそうにないこと判明。
>いきなり詰んでしまいました。残念。
propertyに直接値をかかず、hide/showで増減するcounterと、counterが正のときだけ
有効とみなす値をcons pairで設定して、counterの値が0になったら、その
propertyを消すとかやればうまくいきそうだ(!)と気づいた。
今 org-mode, tamagoのなどでset/deleteしているのを 上の枠組みでhide/show
(<=>カウンタのincrement/decrement)する操作 に置き換えれば
うまくいくかもしれないと気づいたんだけど、全部のコードを書き直すのはちょっと大変で
無理そうかと思って悩んでいる。
昔のMacのquickdrawなんかのライブラリは、こうして各種のモジュールからのhide/showの要求の
stackingをしていたことを思い出した。
だけど、eggとかではpropertyの値を読み出して比較しているから、
propertyのカウンタ取り出して、それがpositiveなら、たとえばcons pairの
後ろに値を入れておいて、それの値を取り出して比較するなんて
文字入力の際に遅くなりそうだが、今のCPUならぜんぜん遅さを感じないかな?昔は
大きな変更するときには何パーセント遅くなりそうとか調べたりしたものだが。
こういった付随するcounterが0になったら消えたりする特殊なpropertyとか作ったら
他にも使い道はありそうだけど、ひょっとしてすでに実装されたりしてないでしょうか?
EmacsLispに詳しい人でご存知の方いませんか?
■ このスレッドは過去ログ倉庫に格納されています