2005年7月16日から2005年7月12日までの日記を表示中

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月 15日 (金)

leim

XEmacsに飽きたのでleim対応の方をちょこっといじってみました.Anthyのを参考に・・・って,これ,activateした後マイナーモードをONにしているだけなのか?prime-elの方も,どうも同じような雰囲気な気が・・・.うー,「Library of Emacs Input Method」というくらいだから,

  • あらゆるキー入力を渡す関数を,指定したIM用の関数に渡してくれる
  • IM用の関数が入力をスルーしてnilを返したら,本来のキーに割り当てられた処理を普通にEmacsがやってくれる

という感じで,手で書くとすげーめんどくさいような仕組が用意されているに違いない!と期待してたんですが,何かそれとは違うみたいですね・・・.( ´_ゝ`)フーン,translationにconversionねぇ・・・.ひとまず C-\ でuimがactivateするようになりましたが,意味なさそうなので消しちゃいました.誰かleimに対応することのうれしさ・素晴らしさをご存知の方,教えてくださいませ.

XEmacsとuim.el

で,insert-in-front-hooksですが,ソース見返してみたら,使わないでもoverlay-endを見ればどうにかなりそうなことがわかったので,一ヶ所をのぞいて使わないようにしてみました.どうしてもだめなところは,とりあえずXEmacsだとオーバレイずれるけど我慢するってことで後回し.ここ直したら,無事XEmacsでもAnthyで入力できるようになりました.が,インラインで変換候補を表示すると驚く程ずれます.

ずれるところから少しずつ戻しながら追ってみたところ,(format "%-7s" 文字列) みたいにしてるところでずれが始まってることがわかりました.整形する文字列に全角文字が入っている場合,Emacsだと,画面に表示したときの文字幅が半角文字7文字分になるようにスペースを補ってくれるのに対し,XEmacsだと,単に文字数の合計が7文字になるように半角スペースを補ってくれます.なので文字列に「あ」を渡すと,Emacsではスペースが5個補われるのに対し,XEmacsでは半角スペースが6個補われちゃうと.

そんなわけで,整形にformat使うのやめて,string-widthの値から必要なスペースの幅計算してmake-stringでスペース並べるように書き直してやったところ,ようやくずれがなくなりました.ふぅー.しかしまだまだ不安定.この日記も途中までXEmacsで書いてたんですが,途中で変換候補出したら操作不能に陥ったし_|‾|○.とりあえず,残ってるisert-in-front-hooksなんとかしないと・・・.

2005年 7月 14日 (木)

XEmacs

今日はあんまりいじってないんですが,ひとまずmetaキー絡みは大体どうにかなりました.で,まあ,M-spaceが使えるようになったので,早速AnthyをONにして入力してみたところ,一文字うったところで固まっちゃいますorz.・・・げ,(require 'overlay)してもinsert-in-front-hooksが使えないのかぁ・・・.プリエディット中のカーソル位置とか変換候補表示位置とかの追跡に使ってるんですが,これ使うのやめるとなるとかなりしんどそう・・・.

CDとか

別に買ったりしたわけではないんですが,続々と発表されてますなぁ,みたいな話.もう1ヶ月切ったんすね.・・・あ,カタログ予約しなきゃ・・・.

マンモスラーメン

今日は一人で行ってきたっす.だいたい2週に1回ペースになっている・・・.

2005年 7月 13日 (水)

uim.el

tkngさんに色々アドバイス頂きました.しかも致命的ではないですが,表示回りのバグも見付けていただいたし.超助かります.

んで,まあ,現在XEmacs対応に向けて細々といじっております.キー回りがやっぱりはまりで,uim-agentも合わせて結構手を入れることに・・・.まあ,お蔭で今までよりかなりスッキリしましたが,metaキー回りの初期化がまだうまくいきません.うーん,XEmacsのキーマップよくわからん・・・.

2005年 7月 12日 (火)

uim-el-0.0.2.1

uim-el-0.0.2に初歩的なバグ キタ━━━(゜∀゜)━( ゜∀)━(  ゜)━(  )━(  )━(`  )━(A` )━('A`)━━━…・・・_|‾|○.こんな感じです.0.0.2前まで何度もテストしてたパターンのはずなんですが,最後に候補回りいじった後,テストしなかったのかな・・・.と,とにかくこの状態で候補ぱかぱか切替えると下の文章がぶっこわれるので,ここだけ直した0.0.2.1を急遽出しました.はまった方,いらしたらほんとすいませんorz.

XEmacs

とりあえずXEmacs入れてみました.あんまいじらずに動いてくれたらうれしいなーと思って試してみたんですが,やっぱ全然ダメですな(;´Д`).とりあえず,キーマップ回りが大変厳しいのと,this-command-keys-vector関数が無いということがわかりました.対応できるんかこれ?とりあえずバックエンドのめちゃ長いmain関数を整理しないと・・・.

2005年7月16日から2005年7月12日までの日記を表示中

中の人情報

名前:
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件のコメント

過去ログ