2007年8月15日から2007年8月11日までの日記を表示中
2007年 8月15日 (水)
■uim.el fset問題
昨日の digit-argument のキー入力問題はとりあえず解決したんですが(まだエコー領域の表示は変なままだけど),いつの間にか this-command-keys を差し替える部分が呼ばれないようになってました(コメントアウトしたままになってた).なのに,普通に「C-x C-h」とか動くし.
・・・あ,command-execute 呼ぶときに [24 8] みたいなベクトルを引数に渡してるから・・・な・・・.うおー,こんな簡単なことだったのか_|‾|○
あとXEmacsでのチェックも開始しましたが,こちらはボロボロ(;´д`) . まあ,表示系を一切いじってないので,二重苦がないのが救いですなぁ.うー,見切りつけてcommitするにはまだ早いなぁ・・・.
■移動
明日とか明後日(と明々後日?)に備えて移動しました.明日一日でどれだけこなせるか・・・.
[コメントを書く]
■弾幕型
復活キタ━━━━(゜∀゜)━━━━ッ!! 1983のblogで知りました(笑)
[コメントを書く]
2007年 8月14日 (火)
■uim.el
どうにか再生しそうです.他にもやらんといけないこといっぱいなのに何やってんだ・・・.
とりあえず一通り形になって使えるようになったはずなので,Emacs22であれこれキーバインドをテスト.不具合をみつけては潰し・・・を繰り返すことしばし.1個手強いのを発見してしまいました.「ESC 5」みたいな digit-argument 系のやつ.
いや,最終的な結果はあってるんですが,例えば「ESC」を押して「5」を押して,その後「a」を押すと直ちに「aaaaa」と挿入されるはずのところが,「a」を1回押しても何も起こらず,もう一度「a」を押して初めて「aaaaa」と入るような感じです.
ていうか,digit-argument って,今までほとんどテストしたことがなかった気が・・・.というわけで,1.4.1で試してみたら普通に動くし(エコー領域の表示は変だけど).すごいな.で,何で動かないのか,とりあえずsimple.elを読んでみると・・・this-command-keys絡み? またか・・・(;´д`)
[コメントを書く]
■ラブやん
前々から読んでみたいと思ってたんですが,全巻置いてあったのでいい機会ということで読んでみました(あとレイモンドもあったので読んでみた).うおお,本当にこんな展開の漫画だったのかwww.泰山楼さんのパロディ漫画が原作に激しく忠実だったということを理解しました(笑).うーむ,下品だが面白いw.しかしあんまりカズフサのこと笑えんよなぁ.歳同じくらいだし・・・.あ,でも今のところニートでもロリコンでもないですよ自分(^^;
[コメントを書く]
2007年 8月13日 (月)
■夏コミ
もっこすは なかまに なりたそうに こちらをみている! なかまに してあげますか?
▶ はい いいえ
もっこすが なかまに くわわった!
とりあえず,もっこすには ちいさないす を持たせないとな.あとは・・・AIをONにするかどうか・・・ってNPCなの!?
すごいどうでもいいんですが,巡回先に貼ってあった↓のバナー,ロゴの位置がアレで,鼻を箸でつままれてるように見えて仕方ない・・・.東X-45aらしいです.
[コメントを書く]
■uim.el
Emacsで C-u 2 0 C-x 2 ってやると,ウィンドウを2分割する際に,片方の行数を20行にできるんだぜ.・・・あ,知ってた? すいません(´・ω・`)
[コメントを書く]
■帰省みたいな何か
昼間は警察署行ってみたりuim.elいじったりCD聴いてみたり(うしろ2つはいつもと同じじゃん)してたんですが,夜になって帰ってみました.ほとんど下道で,1時間40分くらいで到着.近い.教わった抜け道のおかげで,途中までスイスイだったのが大きいのかも.途中からナビに従って渋滞に突入してしまいましたが(´・ω・`)
「帰るとやることがなくて暇だ」なんていう人,多いですが,自分の場合,どこにいてもやることは同じなんで・・・.
[コメントを書く]
2007年 8月12日 (日)
■uim.el 破壊と再生
昨日からおかしいところ直したりしようとして頑張ってみたんですが,入り組みすぎで,何か追加するにしてもどこに追加すればいいのかを探すのが超大変・・・.同じような機能が複数箇所にあったり,何かのworkaroundと思しき処理があちこちに埋め込んであったり.ほんとにこれ自分で書いたのかよって感じ・・・.何でこんなになってしまったのか・・・.
とりあえず頭から読み返して,コメントつけまくって,何でこんなことやってるのか思い出せない部分は過去の日記見たりして,メインの処理の部分はどうにか全体像が掴めたんですが・・・一旦整理した方が良さそうね・・・.特にuim.elとuim-key.elがやばい.というわけで,キーを奪うところと,uimがスルーして返ってきたキーを処理するところを中心に組み直すことにしました.これ,commitできるのかな・・・.機能毎に変更分をcommitするよう言われてるけど,どう考えても無理だよなぁ・・・.
[コメントを書く]
■アンデフ
気がついたらクレジットがフリーになってました.練習モードは利用しても,通しプレー時にコンティニューはしないよう心がけてるので何も関係ないですが・・・.
[コメントを書く]
■SerioWare
2chのスレに,きむらたくひろ氏がお亡くなりになられたとの書き込みが.ほんとかよ・・・.
で,ふと,SerioWare関連の情報をググったら漏れにSerioWareの存在を教えてくれたyas氏のページが出てきました.2002年か.相当前だな・・・.yas氏はお元気だろうか.
[コメントを書く]
2007年 8月11日 (土)
■休み
とりあえず夏コミ前後に風邪ひかないように気をつけよう・・・.
[コメントを書く]
■uim.el 〜undoの謎
Emacsで半角英数字をゴゴゴっと連続入力すると20文字単位でundoリストに切れ目が入りますよね.uim.elをONにしてアルファベットを入力したときももちろん同じようになるんですが,これ,実はuim.elが自前で20文字連続入力したら切れ目を入れるような処理をわざわざやってます (確かjun0さんにご指摘頂いて追加した機能だったかと).本当はEmacsに任せてしまいたいんですがそういうの無いみたいなんで・・・.
で,最初にこの機能を追加したときから気になってたんですが,この「20」というのは一体どこで設定されているのか・・・.Emacsのデフォルトの挙動を確認したら20だったので,それに合わせてuim.elでも決め打ちで20にしたわけなんですが,やっぱどっかの変数参照してるんだったら,uim.elもそれを参照するようにした方がいいですよねぇ.というわけでちょっと探してみました.
まあ,self-insert-command から辿っていけばそのうち辿りつくだろうということで探してみたら,cmds.cに internal_self_insert という関数があって,コメントでこいつの戻り値について「A value of 2 means this did things that call for an undo boundary.」とか書いてあります.よしよし.んで,これを呼び出して戻り値を使ってる keyboard.c の command_loop_1 を見ると・・・.
if (!nonundocount || nonundocount >= 20) { Fundo_boundary (); nonundocount = 0; } nonundocount++;
( ゜д゜)
(つд⊂)ゴシゴシ
(;゜д゜)
まさかの決め打ち.おそるべし FSF Emacs.ちなみにXEmacsの方も見てみたら,event-stream.c にそれっぽいのが書いてありました(ちゃんと確認してないんでもしかしたら違うかも).こっちの方がまだいいかな.
int magic_undo = 0; int magic_undo_count = 20;
[コメントを書く]
■uim.el 〜zmacs-region-stays
そんなわけで,uim.elをいじくってたら,ターミナル上で上げたXEmacs内での挙動がおかしくなってしまいました.C-spaceでマークして,カーソルを移動してM-wしようとすると,「どこも選択されてないよ」とエラーが出ます.あれー,今まではどうだったっけ・・・?
多分,FSF Emacsの方でいうdeactivate-mark 絡みと関連する問題だと思うんですが,XEmacsにはこの変数,無いんですよね.ていうかどこいじったのがきっかけで発生したのかさっぱりわからん・・・.
とりあえずどの変数を見ればいいのか,XEmacsとかdeactivate-markとか,その辺をキーワードにググってみたところ,emacs-w3mのログを発見しました.ぬぅっ・・・って読んでもよくわかんねー.ひとまず FSF Emacsと XEmacs とで挙動が逆ということなのか.
よくわかんないからemacs-w3mのソースを見てみることに.w3m-util.elのw3m-keep-region-activeってのがそれっぽいなぁ.あー,なるほど・・・.しかし,zmacs-region-stays って気持ち悪い変数名っすね(;´д`)
とりあえずこれを突っ込んでみたら回避できました.ありがとうございました.・・・ってこんなことばっかやってるからuim.elとuim-key.elはどんどんカオスになるんだよなぁ(;´д`).ちなみに,これは1.4.1でも出る模様.
[コメントを書く]
■uim.el 〜function-key-map
uim.elのキーマップ処理にも色々問題が.キーマップ眺めて,ソース眺めて,「あれ,この場合どうすんのが正しいんだ?」とリファレンスを読んで,今までfunction-key-mapの扱い方を微妙に間違えてたことを知りました.
たとえば,Emacs22だと,function-key-map には [M-return] がデフォルトで設定されてて,「(lookup-key function-key-map [M-return])」とやると 「[134217741]」 が返ってきます.なので,Altキーを押しながらEnterを押すと,まず「[134217741]」に変換されて,その上で 「[134217741] 」で global-map とかの探索が行われます.
ただ,デフォルトで 「[134217741]」 にはキーが設定されてないので,Alt+Enterで何もおきません.そこで,たとえば以下のような設定をしてやると,C-eを押したときと同じような動きになります.
(define-key global-map [134217741] `move-end-of-line)
まあ,ここまではいいんですが,ここで,以下のように,global-mapで M-return 自体にもコマンドを設定するとどうなるかといいますと・・・
(define-key global-map [M-return] `move-beginning-of-line)
入力されたキー列は,まず function-key-map で変換されることになるので,結局 「[134217741]」 になって move-end-of-line が実行される・・・と思ってたんですが,実は違いました.global-mapとかに同じキーバインドが設定されている場合は,function-key-map で変換されないそうで.この場合は move-beginning-of-line が走ります.uim.elは,これを知らず,この場合も move-end-of-line を走らせてました(´・ω・`).ああ,直さなきゃこれ・・・でも・・・なんかもう・・・
[コメントを書く]
2007年8月15日から2007年8月11日までの日記を表示中
[コメントを書く]