[59]
WSHマクロ5題 2
しみづ
【commsel.js】
// カーソル位置からさかのぼってブロックコメント"/*"を探し、そこから"*/"までを選択するWSHマクロ
// ※ファルイ先頭行・最終行にあるコメントは選択できません
var inp = " ";
var type = " ";
var last = 99;
var i = 0;
var tmp = " ";
var crlf = 0;
var rc = 0;
Editor.MoveHistSet();
Editor.GoFileEnd();
last = Number(Editor.ExpandParameter("$y")); // 最後の行数を取得
Editor.MoveHistPrev();
for ( ; ; ) { // /*をさかのぼって検索ループ
Editor.Left_Sel();
inp = Editor.GetSelectedString(0);
tmp = inp.substr(0, 1); // 頭の一文字を取得し
if ( -1 != tmp.indexOf("*", 0) ) { // *なら
type = "*";
}
else if ( -1 != tmp.indexOf("/", 0) ) { // その前が/か調べる
if ( type == "*" ) {
type = "/";
break;
}
}
else {
type = " ";
}
if ( 1 == Number(Editor.ExpandParameter("$y")) ) // ファイル先頭にきたらやめる
break;
}
if ( type == " " ) { // 見つからなかったら戻る
Editor.MoveHistPrev();
}
else { // 見つかったら
Editor.Left(); // 選択をやめて
for ( i=0; ;i++ ) { // */を検索ループ
Editor.Right_Sel();
inp = Editor.GetSelectedString(0);
tmp = inp.substr(i, 1); // 次の一文字を取得し
if ( -1 != tmp.indexOf("\n", 0) ) { // 改行は選択にスキップされるので、次の一文字を取り直し
i++;
tmp = inp.substr(i, 1);
}
if ( -1 != tmp.indexOf("*", 0) ) { // *なら
type = "*";
}
else if ( -1 != tmp.indexOf("/", 0) ) { // その前が/か調べる
if ( type == "*" )
break;
}
else {
type = " ";
}
if ( Number(Editor.ExpandParameter("$y")) >= last ) { // ファイル最後にきたらやめて戻る
Editor.Left();
break;
}
}
}