テーマ:未分類(甘党)

日々、思いついたことを記録します。

KeyboardMacroEx v0.02のTODOと拡張案

2007年07月20日 05時38分48秒 | 秀丸エディタ Tips
v0.000001からのToDoや拡張案を見直してみて、今回のものとマージして、まとめておきました。

■ TODO

○ 評価をほとんどしていないし、かつ、結構、基本なところに手を入れた可能性があるので、ソースとコンフィグを見ながら、ホワイトボックステストをしないとまずそうです。

○ 先ほど、急いで、コメントを付けておいてた「SAVE_DIRがないとエラーになる 」件は、修正しないとまずいですね。

○ エラーチェック
現状は、とりあえずのコードなので、ほとんど、エラーチェックをしていない。気づいた部分には、ソースコード中に、「★[TODO]」でコメントを入れている。

○ 実行速度
反応速度が、ワンテンポ遅れるのが気に入らない。(特に、ポップアップメニュー表示)
まずは、debuginfo文が大量に入っているので、その影響度合いを調査した方が良いかも。
そのあとは、実行時間のプロファイリングをして、チューニングをすることになるが、秀丸エディタのマクロ実行エンジンの速度の問題で、対応が厳しそうな場合には、WSH側に、多くの処理をさせた方が速くなる気がする。

○ 連続押しで、エラーになりそう。

○ マクロ登録時のコメントでキャンセルをすると、デフォルト(保存日)のコメントにするだけだが、本当は、登録せずに、キャンセルできるようにした方が良いはず。

○ disabledrawからenabledrawしたときに、画面調整をしたはずだが、うまくいっているか?


■ 以下は、今後の拡張案

○ EVAL文中の特殊変数の拡張
とりあえず、最初からおごるとなかなか動き始めないので、EVAL文の中の特殊変数として、$_だけを用意したが、EVAL文中の特殊変数は、いくらでも、拡張できそう。

・「#_」は、「val($_)」に展開すると、一手間省けそう。

・ 現状、「$_」は、一つしか展開していない。複数の「$_」の対応について、少し、検討する必要があるはず。(全て、同じ文字列に展開するか、、。ただ、複文の場合には、それ以前の左辺値が文字列のものを参照するとか、、、。)

・ 表記は考えていないが、クリップボード履歴機能と組み合わせても、面白いかも、、、。

○ EVAL文のヒストリ機能
現状は、一回前のEVAL文を、EVAL文のinputboxに入れておく程度の対応しかしていないが、なんとか、昔に指定したEVAL文を参照できるようにならないだろうか?
一番安直なのは、クリップボードに自動的にコピーして、秀丸のクリップ履歴機能に頼れるようにするのも一案だが、これ以上になると、専用のメニュー面を用意するか、ヒストリ機能つきのコンボボックスのGUIになるように、WSHなり田楽DLLなりにUIを変更する必要があるかも。

※ EVAL機能は、非常にプリミティブなので、何でもできるようたが、指定が面倒すぎて。使わない恐れもあるし、作者以外が、この機能を理解できくなる恐れが高い、、、。デフォルトのコンフィグでは、無効にしておいた方が良いかも。(ただ、私(ymiz777)が使いやすければ、それだけ良いので、気にすることもないか、、、。)無理に難しくして、他の人に理解不能にしまうよりは、もう少し、自分自身で、使い込んでみてから、便利そうな特殊変数を入れていった方が良さそう。

○ カレントのキーボードマクロを実行について
秀丸エディタでキー操作の記録中に、KeyboardMacroExのポップアップメニューを表示して使用するようなキーボードマクロは、そのまま、秀丸エディタで再生をすると、うまく再生できない件は、対処が厳しいので、考えないことにする。ただ、KeyboardMacroExのポップアップメニューの中から、カレントを実行したときに、現状は、毎回、loadmacroをして、変換しょりをしている。本当は、一度、KeyboardMacroExのポップアップメニューの中から、カレントを実行したら、変換後のマクロを呼び出すexecmacroをsavemacroしたいところ。ただ、変換したものを直接、savemacroしていた頃には、用意に対応できていたが、今回、v0.02で、~KeyboardMacroExKey*.macファイル呼び出しをsavemacroするような構造にしたので、かなり、厳しい。

loadmacroをしたときに、マクロ文の内容、特に、execmacroの呼び出し先のチェックとともに、コメント等にもマジックフレーズを入れておいて、チェックすることで、一度、変換したマクロを呼び出している場合には、何もせずに、実行するようにするだけとか、呼び出し先(変換済みの.mac)を、~KeyboardMacroExKey*.macファイルにコピーするような構造にする必要があるかもしれない。


○ 記録中の登録について、
今回v0.02では、ショートカットキーのダイレクト登録のときだけ、マクロの終了と登録をできるようにしてみた。
ポップアップメニューの方からも、HIDEMARU_KEYMACRO_ENDキーが定義されていたら、記録中でも、登録メニューに遷移できるようにして、マクロの終了と登録をできるようしても良いかもしれない。

○ UIの再検討
現状レベルの設定であれば、ポップアップメニューで、モードをトグルするような設定方法でも、これは、これで、結構、以外に、快適に使えますね。
ただ、今後、もし、拡張を続けていって、いろいろと、複雑な設定をさせるようになると、さすがに、このポップアップメニューだけでは、破綻するような気がする。
田楽DLLとかHTAのダイアログボックスで、設定させるようなことも、いつか、考える必要がでてくるはず。

○ 秀丸エディタのキー操作記録状態の取得 CheckRecordingStatus:では、VBSを呼び出して、「記録中!」というタイトルウィンドウを探すことにしてしまったが、もっと、エレガントな方法はないのだろうか?
このVBS呼び出しは、WSH立ち上がり後、一回のチェックで、OK/NGが判断できるので、速度的には、あまり、気にならないようだったが、ただ、あまりにも、きわどすぎる。

○ CaputureCurrentKeyboardMacroルーチンからKeyboardMacroEx.macを使って、「キー操作の保存」ダイアログを操作するとき、300ms周期ポーリングとかアクティブ後100msウェイトとか、いろいろと、マージン時間をいれている。このあたりを調整すると、きびきび動くようになるかもしれないが、環境やシステム状況の状況に影響されるので、何か、対策がないかを考えたい。(そもそも、こんなきわどいことをしなくても、もっと、自然に、保存する方法がないかも、調査したい。)

○ 選択範囲内でリピート機能:
以前のブログにも書きましたが、マクロの中で、開始と終了を記録しても、マクロ処理で、位置が変化してしまうため、単純には、無理。やるとしたら、マークを挿入したいところだが、選択範囲内にマークがあると、矛盾が起きてしまうため、これも厳しい、、、。

○ キーボードマクロ用一時変数値機能
現状は、単に初期値を設定して、挿入したら、インクリメントするだけ。
この機能に関連して、以下のような拡張のアイデアもある。
ステップ数設定
書式設定 : 幅、右寄せ、カンマ区切り、基数指定(hex/dec/oct/binなど)
数値以外日付/曜日などの対応(Excelが参考になるか?)

さらに、今は、一つしか用意しなかったが、複数の一時変数のサポートするアイデアもある。

○ 一時バッファの内容の編集機能

○ ダイアログボックスの入力待ちで止まってしまうような機能についても、パラメータ設定も含めて、先に進めるような機能。

以下までくると、レコーディング自体をマクロがしないと実現できないかも?

○ 外部コマンドを実行するようなマクロの実現
○ 他のファイルを開いたり、行ったりきたり、するマクロの実現

たぶん、KeyboardMacroEx.macの中の「拡張のキー操作の記録開始」記録開始をさせて、KeyboardMacroEx.macの「外部コマンドを実行」とか、「他のファイルを開く/切り替える」「元のファイルに戻る」を使って、キーボードマクロを作ってもらうしか方法がなさそう。つまり、KeyboardMacroEx.macの管理下で、秀丸のキーボードマクロの記録開始/終了を繰り返し操作して、終了時に、 KeyboardMacroEx.macのファイルに取り込んだものを組み合わせるアイデア。




▲ 環境変数、レジストリやINIファイル等を参照/設定する機能
→頻繁に使用すると思えないので、今回、追加したevalで対応できるはずなので、対応する必要なし。

▲ 条件分岐の実現
例えば、カレントのキーボードマクロ内の最後検索の失敗したときに実行する挙動を定義させたりするのもかしれない。
→ ここまでくると、直接、マクロを編集させた方が分かりやすいので、対応する必要なしと思う。


最新の画像もっと見る

コメントを投稿