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日の日記を表示中

中の人情報

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

カレンダー

2005年7月
          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
31            

<<先月分

翌月分>>

最新の10件のエントリ

最近の10件のコメント

過去ログ