replay周辺?で何か変更が?No.07171
yamashita さん 12/12/04 18:02
 
秀丸担当様

誠にご無沙汰しております。山下と申します。

はるか昔(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>では同じ動作になるのか、よく
わからないです。

よろしくお願いします。

[ ]
RE:07171 replay周辺?で何か変更が?No.07172
秀丸担当 さん 12/12/05 10:46
 

バグ情報ありがとうございます。
マクロの通りにしてみて再現させることができました。
確かにreplayが従来通りにうまく判断できなくなってしまっていました。
すみません。
V8.30の次のβ版で修正させていただきます。

[ ]
RE:07172 よろしくお願いしますNo.07173
yamashita さん 12/12/05 11:04
 
おぉ!
どっかおかしいところがありましたか。
それは良かったです。
うまく切り分けられなかったので、解決困難だったら困るなと
思っておりました。
しばらく前の version に戻して使っています。

よろしくお願いします。

[ ]