KND の備忘録

2006-10-29のメモです。

主に関ジン研(関東ジンギス研究会)からのリンクのためと、食べ歩きの際に前回いつ行ったかを自分で検索するために記述を残しています。稀に雑多なことを書いたりもします。


LIRS: 更新の確認にご利用下さい。
カテゴリ: EmacsLisp | Ruby | tDiary | そよかぜ | たべある記 | 羊肉 | 自作ソフト | 花配列 | 超多段シフト | 辛いもの | 雑記 |

2006-10-29 (Sun)

[自作ソフト][EmacsLisp][超多段シフト][そよかぜ] 着手から丁度 2 年半が経ちました

処理の変更が思ったよりも多くなったので作業履歴をポイントだけ書き残しておこうかなと。この半年の間の変更点は以下の通りです。

  1. 変数 input-method-use-echo-area を t にしても、各種変換ができるようにした。
  2. M-x quail-set-keyboard-layout でキーボード切り換えが出来るようにした。
  3. 「゛ん」のように、濁点・半濁点で始まるがそれで終わらないようなかなストローク定義をしても、濁点・半濁点処理が行なわれる(例えば、「か」の次に「゛ん」相当のストロークを入力したときに「がん」となる)ように修正した。そのようなひねくれたストローク定義を持つ配列は見かけないが、出来るに越したことはないので。でも、かなストローク定義が初めから「か゛ん」のときはそういう定義なのだと見なし、濁点・半濁点処理をさせない。
  4. 他の LEIM による入力方式に倣って未確定文字列がないときのスペースキーの入力は半角空白になっていたのを、全角空白が出力されるように変更した。半角空白は SHIFT + SPACE を入力する。本当は全角・半角空白の操作を切り換え可能にすることを目指していたが実現できていない。
  5. quail-inactivate-hook の設定をすることで、未確定文字列や仮想鍵盤の表示中でも C-\ で japanese-soyokaze を終了できるようになった。
  6. 複数ストロークのかなの入力途中で C-h で quail-help を呼び出したときのキー定義一覧に「そよかぜ」のものでなく quail.el で共通のものが出て来る(かな入力動作そのものには全く支障はない)ことから、quail-define-package 関数で引数 translation-keys を指定して正しいキー定義一覧が出るようにした。
  7. NTemacs(Emacs 21.3 相当)でも動作可能になるように微修正を加えた。
  8. 未確定文字列が存在する間だけ関数 lookup-key を「指定のキーマップで未定義のキーに対して nil でなく ignore を返すような関数」にすり替えるようにし、更に一部のキー動作を ignore に定義した。未確定文字列が存在するときに「そよかぜ」が独自に管理する情報(未確定文字列の情報、等)が復元されない状態で未確定文字列の入力が中断されてしまうための現段階の解決策として。(詳細後述)

最後の項目については、カーソル移動が伴う操作とか、バッファ内でのマウス操作とか、Meadow で japanese-soyokaze の起動後に Windows の IME を起動した状態で Windows の IME の半角英数字変換とか、それらのイベントに対していちいち ignore を定義して無視していました。これは大量の追加キー定義を含む連想配列を作る力技なわけで、当然ながら最初の起動時に心持ち重くなります。また、それで対応できないメニューバーの選択に対しては未確定文字列が存在するときだけ画面上部のメニューバーを「そよかぜ」の中断動作の項目だけに変更もしていましたが、これはメニューバーを消す設定をしている人に対しては余計な動作になるであろうと思い悩んでいました。現段階では必要なときにすり替える関数を変数に保存した後に defalias によって lookup-key という関数名で呼ばれるようにして必要なくなったら保存した lookup-key の関数定義を fset で復元しています。それでも LEIM の標準と思われる未確定文字列内のカーソル移動を無視させることは出来ず、キー動作を ignore に定義しなければならないようですけど。本当にこれがいい解決策なのかは確信は持てていません。

並行してドキュメントの整備をしていますが、こちらは遅々として進んでいません。



最近のツッコミ:


KND への連絡は以下まで。
m・knd◎zob・jp (「◎」を「@」、「・」を「.」に置換え)