2005年10月1日の日記を表示中
2005年 10月 1日 (土)
■10月
もう10月か(;´Д`).
■uim.elとuniversal-argument
何か今までバッファがread-onlyでuim-modeがONになってるとカーソル移動等の文字挿入以外のことをしようとしても「Buffer is read-only」とか出てなんもできなかったんで,バッファがread-onlyだったら内部で勝手にuim-modeを切ってたんですが,実はこれ,単にキーにバインドしている関数内で「(interactive "*")」って書いてしまってるからでした(;´Д`).超初期にAnthyの真似してずーっとそのまんまだったのかも,これ・・・.「*」を「P」にしてあっさり解決orz.またひとつ無駄なコードが減った∩( ・ω・)∩ワーイ.
また,バッファのファイルが他のEmacsにロックされてたり,開いた後にファイルの中身が更新されてた場合,普通は文字を挿入しようとすると「ロックを横取りするか」とか色々聞かれるわけですが,「command-execute」で文字挿入をやってると「After 0 kbd macro」なんとかとか出て,上記問い合わせが上書きされて消えちゃって,しかも選択肢が選べないとかいう状況になっちゃうため,やっぱりuim-mode切ってました.が,「command-execute」やめて,「insert-char」使うようにしたらこっちの問題もあっさり解決.あー,今までなんて無駄なことをしていたんだ・・・.
で,ここで色々いじってるうちに,実は一部のuniversal-argumentがちゃんと動いてないことが発覚.「C-u 1 0 X」とか普通のは動くんですが,「C-u 5 C-q C-a」(「^A」を5個挿入)みたいな,最後がself-insert-commandじゃないやつが動きませんでした.いや,0.0.4では動いてたんですが,キーマップにデフォルトルールを追加したことで動かなくなった模様.
試行錯誤すること数時間.悩んだ挙げ句,universal-argumentで数字以外のキーを取り込み始める瞬間(すなわちuniversal-argument-other-keyの直後)にキーマップのデフォルトを一時的に解除して,入力が終わったところでデフォルトを再設定するという方法を思い付き,adviceとpre-command-hookを使って無理矢理付けて無事動くようになりました・・・.が,あまりにも,美しくなさすぎる・・・.
何かもっとスマートな方法は無いのかとソースやリファレンスを眺めている内に,「prefix-arg」変数の存在が目に.これ,今まで読むことしかしてなかったけど,実は値書いたら直後の「command-execute」,値の回数分繰り返してくれるんじゃ・・・ってまさにそれヽ(゜∀゜)ノ!universal-argument等によって前置引数がついてる場合,事前に「prefix-arg」に引数setqして「command-execute」呼ぶだけで万事解決・・・.あああ,もっと早く気づくんだった(;´Д`).というわけで,何か気がつけば問題は一通り解決な予感です.はー.
[コメントを書く]
■東方花映塚
今日は霊夢一筋でやってみたんですが,やっぱ全然ダメぽ.しかも,今日は初めて7面で死ぬという屈辱を・・・.下手過ぎです.特に射命丸が苦手なんすよねー,何か.小野塚小町の方がまだ勝てる感じ.多分見るところが悪いんだろうなぁ.
[コメントを書く]
2005年10月1日の日記を表示中
[コメントを書く]