マクロのC言語インデントNo.08661
K'zawa さん 15/07/10 13:14
 
こんにちは、K'zawaです。

C言語インデントON時の手入力と下記のマクロで、"}"の行のインデントが異な
ります。

config "xIndent:5";
insert "\tif (1) {";
insertreturn;
insert "xxx;";
insertreturn;
insert "}";
insertreturn;

[ ]
RE:08661 マクロのC言語インデントNo.08662
秀丸担当 さん 15/07/10 14:45
 

確かに"}"の手動入力での自動アンインデントは、insert "}";とは違うので、マ
クロとは違う結果になってしまいます。
そのこと自体は仕方ないですが、キー操作の記録と一致しないのは良くないです。
"}"の手動入力に相当する文が無いので、困りました。

新しい文かパラメータを作るか、記録ではbackspace;を自動的に記録させるか、
記録中は手動でも自動アンインデントはさせないか、といったような対策が必要
だと思います。
insertchar "}";のような新しい文か、insert文に拡張パラメータを付けるのが
理想的だと思います。
いずれかの方法で対策を考えます。

[ ]
RE:08662 マクロのC言語インデントNo.08664
秀丸担当 さん 15/07/17 11:28
 

V8.54β13において、キー操作の記録でinsert文に自動的に insert "}",2; とパ
ラメータが付くようにして、この場合は自動アンインデントが働くようにしてみ
ました。
ヘルプはまだ修正していないですがまた追記します。

[ ]
RE:08664 マクロのC言語インデントNo.08665
K'zawa さん 15/07/17 21:09
 
秀丸担当さん、こんにちは。
K'zawaです。

>V8.54β13において、キー操作の記録でinsert文に自動的に insert "}",2; とパ
>ラメータが付くようにして、この場合は自動アンインデントが働くようにしてみ
>ました。

はい、自作のマクロ中でも使えました。
第2パラメータ = 2 を指定したままでも、(タブ/スペースを除いた)文字列
の先頭が「}」でなければアンインデントしないという理解でよいでしょうか?

[ ]
RE:08665 マクロのC言語インデントNo.08666
秀丸担当 さん 15/07/21 09:34
 

2を指定した場合は、一文字ずつと文字入力をしたとき同じように処理してみて
います。
例えば、
insert "x\n}",2;
とすると、1文字目の"x"はアンインデントせず、3文字目の"}"はアンインデン
トします。

[ ]
RE:08666 マクロのC言語インデントNo.08669
K'zawa さん 15/07/22 20:11
 
秀丸担当さん、こんにちは。
K'zawaです。

>2を指定した場合は、一文字ずつと文字入力をしたとき同じように処理してみて
>います。

意味と使いどころがわかりました。
ありがとうございます。

[ ]