サクラエディタマクロ 逆インデント(複数行選択時も)
サクラエディタの逆インデントは範囲選択しないといけない。キー操作がまんどい。
このマクロは単一行なら範囲選択不要で、複数行選択ならまとめてアンインデント。
ただ、改行だけの行は削除されてしまう。
実行後のカーソル桁位置は行末。
ちなみに、グローバルのトップレベルでreturnしても関数の外にあるといってJSのエラーになるが、
関数で全体を囲い、それ自体を最後の();でトップレベルから呼び出すようにしておけば、returnする位置でマクロ実行から抜けることができる。
0の選択なしでは行頭行末改行まで削除し、その後InsText()で挿入。
複数行選択の有無にかかわらずこれでうまくいくので、ラッキーなコードか。
このマクロは単一行なら範囲選択不要で、複数行選択ならまとめてアンインデント。
ただ、改行だけの行は削除されてしまう。
実行後のカーソル桁位置は行末。
(function(){IsTextSelected()の戻り値2はボックス選択状態で、何もせず復帰。
s = (GetSelectedString(0) ? GetSelectedString(0) : GetLineStr(0)).replace(
/^ |^\s|(\r\n|\n|\r)/gm,'$1');
switch(IsTextSelected()){
case 2: return;
case 0: s = s.replace(/\r\n|\n|\r/,'');
LineDeleteToStart();
LineDeleteToEnd();
}
InsText(s);
})();
ちなみに、グローバルのトップレベルでreturnしても関数の外にあるといってJSのエラーになるが、
関数で全体を囲い、それ自体を最後の();でトップレベルから呼び出すようにしておけば、returnする位置でマクロ実行から抜けることができる。
0の選択なしでは行頭行末改行まで削除し、その後InsText()で挿入。
複数行選択の有無にかかわらずこれでうまくいくので、ラッキーなコードか。