|
dakotsuさん こんにちは。
》一行ごとに切り出した単語を表示してくれる
》ようなものを考えていました。
例えば秀丸のマクロの変数や注釈を削除して,コマンドのリストを作り,それを
整列し重複を削除する作業を,秀丸だけでやろうとすれば,次のようなものが考え
られます。
一度おためし下さい。
では, (^^)/~
山紫水明
//---- WordList.mac --------------------------------------//
// 単語のリストを作る
// 2000.7.21
//
// 最初に実行したとき,DOS 窓が現れます。右上の×で終らせてください。
// エクスプローラーで \Windows\Pif フォルダーにある sort.pif と
// command.pifのプロパティを開き,プログラムタグの「実行時の大きさ」を
// 「最小化の状態」に,「プログラム終了時にウィンドウを閉じる」にチェック
// してください。
/////前処理
replaceallfast "\\(.+\\)","", regular;
replaceallfast "\".*\"","", regular;
replaceallfast "//.+$","", regular;//注釈削除
replaceallfast "[\t ]+","\n", regular;//半角空白とタブを改行に
replaceallfast "[$#].+","", regular;//変数削除
replaceallfast "[=+,;{}]","", regular;
replaceallfast "^[0-9]+$","", regular;
replaceallfast "^\\n","", regular;
/////並べ換え
$temp1 = leftstr(hidemarudir, 3) + "temp1.txt";
$temp2 = leftstr(hidemarudir, 3) + "temp2.txt";
$file = filename2;
saveas $temp1;
#handle1 = hidemaruhandle(0);
runsync "sort " + $temp1 + " > " + $temp2;
//DOS のコマンド使用
openfile $file;
openfile $temp2;
closehidemaruforced #handle1;
/////重複行の削除
gofiletop;
while(code != eof){
$s1 = gettext(0,y,linelen,y);
down;
while(1){
$s2 = gettext(0,y,linelen,y);
if($s1 == $s2) deleteline;
else break;
}
}
save;
//run "command.com /c del " + $temp1;// 一時ファイルを毎回削除する時は
//run "command.com /c del " + $temp2;// 行頭の「//」を除く
endmacro;
//---------------------------------------------------------//
|
|