|
マクロ命令として追加して欲しい機能があります。
データベースシステムのチェックポイントとロールバックのように
特定のタイミングの状態を保存(チェックポイント作成)し、
それ以降に発生した変更を全てキャンセル(ロールバック)して
チェックポイントをした時点の状態に戻す
と同じような処理がしたいのです。
マクロ実行中による編集であれば
begingroupundo;
(編集する命令)
endgroupundo;
undo;
で begingroupundo; の時点に戻せますが、
これを任意の時点で begingroupundo; のような地点を設定して、マクロは一度そこ
で終了。
いくつか編集を行った後に endgroupundo; を実行して begingroupundo; の直前に u
ndo; が出来るイメージです。
機能としては特に大きな変更は不要で
特定の updatecount だったタイミングまで undo を繰り返す。
というだけです。
チェックポイントを設定した時点より更に過去の状態に undo; してしまえば、
戻せない(やり直しのやり直し方向が必要になるが、私の用途には不要)ですし、
当然に やり直しバッファ サイズの影響を受けると思います。
これを実現するために、
begingroupundo; をしたタイミングが やり直しバッファ に残っているか? の判定
ができる。
undo; を連続実行する際に止めるべき(チェックポイントした時点)判定が出来れば
充分です。
マクロ命令1つで特定の状態まで戻せるなら undo; を連続実行するコストが削減で
きます。
特定のタイミングをエディタが1つ覚えてくれれば問題ないですし、
チェックポイントした時点のやり直しバッファのアドレスがハンドルのように取得出
来て
それを指定して undo; を止めるタイミングを判定できるなど、やりようはあると思
います
検討をお願いします。
|
|