2005年7月16日の日記を表示中
2005年 7月 16日 (土)
■Emacsの行の幅
連日Emacsの話題ばかりですいません.誰に謝ってんだかよくわかりませんけど.で,Emacsの1行の幅なんですが,今までずっとwindow-widthの値を盲信してたんですけど,良く考えたらターミナルであげたときとか,21.xより古い奴とかは,一行にwindow-width入らないんでした.window-width文字目までいくと勝手に「\」が補われて折り返しが発生してしまいます.昔は当り前だったわけですが,21.xではXであげた場合,フリンジとかいう領域に折り返しマークが出るため,「\」は挿入されないんですよね.マジですっかり忘れてました.道理でXEmacsで1文字ずれるわけです.
[コメントを書く]
■XEmacsのtruncate-string-to-width
XEmacsでuim.elの動きがおかしくなる理由のひとつに,truncate-string-to-widthの動きがGNU Emacsと違うというのがありました.GNU Emacsではちゃんと表示幅通りに刈り込んでくれるため,「あいうえお」を幅4で刈り込むと「あい」になるんですが,XEmacsだと,意味わからんことに律義に文字数分刈り込んでくれて「あいうえ」を返してきます.
何か対策ないのかとググってみたら,Mewの偉い人の発言を発見.
しかし、Emacs と XEmacs で動作が違うようなので、利用をあきらめます
・・・_|‾|○.
さすがに代わりになるものを自前で用意するのはしんどいんで,GNU EmacsのをXEmacsで使いまわせないかと GNU Emacsのソースの中見てみたら,なんか普通にこの関数,international/mule-util.elなるファイルに普通にlispで書いてありました.ためしにその定義の部分をXEmacsで読み込んでみたら・・・お普通にXEmacsでも動くじゃん.
ということは,単にXEmacs側のtruncate-string-to-widthがおかしいってことか?grepして探してみると,何か定義が2箇所あります.一つは,mule-packages/lisp/mule-base/mule-util.elってファイルの中にあって,GNU Emacsのinternational/mule-util.elとまったく同じ.もう一つは,obsolete.elとかいうファイルにあって,substring使ってる超短い記述です.
#### This function is not compatible with FSF in some cases.
とか書いてあるし(;´Д`).で,XEmacs普通に起動して(featurep 'obsolete)とかしてみると,tがかえってくるわけですよ.
というわけで,uim.elの中で(load "mule-util")してmule-util.elの方を読み込むようにしてやったところ,見事問題解決.ああ,やっとXEmacsでまともに動くようになった・・・.しかし,なぜ,obsoleteなんていうのを最初から読み込んでいるのか・・・.互換性のため?sumoの入れ方悪い?もう全然わかりません.
[コメントを書く]
[コメントを書く]
2005年7月16日の日記を表示中
[コメントを書く]