|
秀丸担当様
誠にご無沙汰しております。山下と申します。
はるか昔(20年前とか)から使っていたマクロが、期待通り動作しなくなったので
質問します。
秀丸 8.04 では期待通り動くことを確認しました。8.21 と 8.20 では期待通り動き
ません。
この間の version は手元にないため試していません。
replay 周辺で仕様変更とかがありましたでしょうか。
うまく動かないマクロは、以下の<マクロ1>です。
これは emacs editor の ctrl-K の動きを真似るためのマクロの一部です。
ただし、replay 周辺で問題があるのかと思って<マクロ2>を作ってみたところ、8.
04 でも 8.21 でも同じように動きましたのでよくわからなくなっています。
<マクロ1>
if (code == 13) { // 現在位置が改行コードの場合
beginsel;
right;
if (replay) { // replay 検出1
appendcut; // 改行コードを ClipBoard へ追加
} else {
cut; // 改行コードを ClipBoard へ移動
}
} else { // 改行コード以外の場合
#xx = column + 1;
#yy = lineno;
golineend2;
beginsel;
movetolineno #xx, #yy;
if (replay) { // replay 検出2
appendcut; // 行末までを ClipBoard へ追加
// message "yes"; // for debug
} else {
cut; // 行末までを ClipBoard へ移動
// message "no"; // for debug
}
}
endmacro;
<マクロ1の動作のさせ方>
・マクロディレクトリに<マクロ1>の内容を入れた macro1.mac を作成します。
・[マクロ] メニュー [マクロ登録] で macro1.mac を適当な位置に macro1 の名前
で登録します。
・[その他] メニュー [キー割り当て] で、適当なキー(例えば ctrl-F8)に macro1
を割り当てます。
・新しい秀丸を開きます。
・1行目に 1(return) 2行目に 2(return) 3行目に 3(return) と入れます。
・1行目の行頭にカーソルを移動します。
・ctrl-F8 を6回打鍵します。
・[編集] メニュー [貼り付け] を実行します。
<マクロ1の結果1>
上記の操作で、version 8.04 だと 1(return)2(return)3(return) が貼り付けされま
す。
version 8.21 だと 3(return) だけが貼り付けされます。
8.21 のように動作するのは、<マクロ1>の「replay 検出2」の行の replay が期
待通り動作していない場合だと思われます。
実際、<マクロ1>の「for debug」と書いた2個のメッセージを生かして再度実行
すると、「6回打鍵」の途中で message box が出てくるのでうざったいですが、8.0
4 と 8.21 では動作が異なります。
<マクロ1の結果2>
8.04 では打鍵とメッセージが以下のようになります。
ctrl-F8 "no" ctrl-F8 ctrl-F8 "yes" ctrl-F8 ctrl-F8 "yes" ctrl-F8
8.21 では以下のようになります。
ctrl-F8 "no" ctrl-F8 ctrl-F8 "no" ctrl-F8 ctrl-F8 "no" ctrl-F8
この動作結果は、<マクロ1の結果1>の結果と整合が取れています。
ところが、より簡単な以下の<マクロ2>で試したところ、8.04 と 8.21 の動作は
同じになりました。
<マクロ2>
if (replay) {
message "yes";
} else {
message "no";
}
endmacro;
<マクロ2の動作のさせ方>
・マクロディレクトリに<マクロ1>の内容を入れた macro2.mac を作成します。
・[マクロ] メニュー [マクロ登録] で macro2.mac を適当な位置に macro2 の名前
で登録します。
・[その他] メニュー [キー割り当て] で、適当なキー(例えば ctrl-F7)に macro2
を割り当てます。
・新しい秀丸を開きます。
・ctrl-F7 を3回打鍵します。
<マクロ2の動作>
マクロ2は、8.04 でも、8.21 でも以下の同じメッセージを出します。
"no" "yes" "yes"
なぜ<マクロ1>では違う動作になり、<マクロ2>では同じ動作になるのか、よく
わからないです。
よろしくお願いします。
|
|