|
こんにちは。
Enterキーへの割り当てで動作させるということでいいのであれば、こちらの方が短
くて使いやすいかもしれません。よろしければ試してみてください。
//**********************************************************
// 箇条書きでよく使用する記号が改行位置の前にある場合、
// 改行すると記号の後ろに自動でインデントするマクロ
//**********************************************************
//**********************************************************
// 箇条書きでよく使用する記号(半角/全角)
//**********************************************************
$I_M = ".・:)○●※@ABCDEFGHI";
//**********************************************************
call SearchItemizeMark;
if (##return >= 1) {
call RepeatString " ", ##return;
disabledraw; begingroupundo;
insert "\n";
insert $$return;
endgroupundo; enabledraw;
}else{
//インデント対象外
//insert "\n"; //改行を1個入力
insertreturn; //普通のEnterキーの処理
}
endmacro;
//**********************************************************
// キャレットがある行、かつ、キャレットより前に
// 一覧の記号があるか探すサブルーチン
//**********************************************************
SearchItemizeMark:
// 範囲選択中であれば何もしない
if(selecting == 1) return;
// 検索する範囲
//$$S_line = gettext(0,y,x,y); //折り返しを考慮しない
$$S_line = gettext2(0,lineno,column,lineno); //折り返しを考慮する
// 一覧内の記号があるか検索する
##IM_number = 0;
while(wcsmidstr($I_M, ##IM_number, 1) != ""){
$$S_letter = wcsmidstr($I_M, ##IM_number, 1);
##yes_no = strstr($$S_line,$$S_letter);
//見つかった場合はインデントの位置を返す
if(##yes_no != -1) return ##yes_no + strlen($$S_letter);
##IM_number = ##IM_number + 1;
}
return;
//**********************************************************
// $$1 を ##2 回繰り返した文字列を返すサブルーチン
//**********************************************************
RepeatString:
if(($$1!="")&&(##2>0)){while(##i<##2){$$s=$$s+$$1;##i=##i+1;}}
return $$s;
|
|