« テレビ番組等感想 その 180 | トップページ | 卒業旅行 »

2009年3月29日 (日)

Yash 2 その 90: 行編集におけるコマンド履歴の扱い

行編集においてカーソルキー上下でコマンド履歴を辿れるようにする機能の実装に関するメモ。

基本的な操作の流れは、カーソルキー上下でコマンド履歴を検索する→コマンドを編集する→コマンドを実行する、となる。

コマンドの編集を行う際には、その時編集しているコマンドの履歴番号を覚えておく必要がある。編集を始めた後に再び履歴を検索できるようにするためである。編集中にうっかりカーソルキー上下を押してしまった時、逆方向のカーソルキーを押して元に戻せるようにするためには、編集後に検索を行ったときでも編集内容を覚えておく必要がある。すなわち覚えておくべきことは、

  • 現在表示しているコマンドの履歴番号と内容・カーソル位置
  • 最後に編集したコマンドの履歴番号と編集した後の内容 (とカーソル位置)

カーソルキー上下で履歴項目を選んだ際、選んだ履歴番号と最後に編集した履歴番号とが一致すれば、履歴の内容ではなく編集した内容を表示する。

ただ、これだけでは編集したコマンドを編集前の状態に戻しづらくなってしまう。行編集機能では、コマンドの編集状態をさかのぼることができるアンドゥ機能をすでに実装しているので、これとうまく組み合わせたい。アンドゥ履歴では各編集段階におけるコマンドの内容とカーソル位置を記憶しており、これは最後に編集したコマンドの内容も含んでいる。従って、覚えておくべきは

  • 現在表示しているコマンドの履歴番号と内容・カーソル位置
  • 最後に編集したコマンドの履歴番号とアンドゥ履歴

現在のリビジョン (r1003) では、現在表示しているコマンドの内容le_main_buffer現在表示しているコマンドのカーソル位置le_main_index最後に編集したコマンドのアンドゥ履歴undo_history 変数に保存されている。今後のリビジョンで現在表示しているコマンドの履歴番号最後に編集したコマンドの履歴番号を覚える変数を追加する。

|

« テレビ番組等感想 その 180 | トップページ | 卒業旅行 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: Yash 2 その 90: 行編集におけるコマンド履歴の扱い:

« テレビ番組等感想 その 180 | トップページ | 卒業旅行 »