|
TAKA です。
>ユーザーで入力した値を保存して、次回からその値をデフォルト表示
>させるようにしてもらえないでしょうか。
以下のマクロで動作確認してみて下さい。
前回値は、秀丸をインストールしたフォルダ内の「rep.ini」という
ファイルに保存されます。
// 置換マクロ(ここから)
if( !selecting )
{ // 範囲選択されていない
goto LEND;
}
// 置換元文字列前回値取得
$RepBeforeDef = getinistr( hidemarudir + "\\rep.ini", "Rep", "BeforeDef" );
// 置換元文字列入力
L1000:
$RepBefore = input( "置換元文字列入力(ESC=終了)", $RepBeforeDef );
if( !result )
{ // ESC
goto LEND;
}
if( $RepBefore == "" )
{ //---- 文字列入力なし ----//
goto L1000;
}
$RepBeforeDef = $RepBefore;
// 置換後文字列前回値取得
$RepAfterDef = getinistr( hidemarudir + "\\rep.ini", "Rep", "AfterDef" );
// 置換後文字列入力
L2000:
$RepAfter = input( "置換後文字列入力(ESC=置換元変更)", $RepAfterDef );
if( !result )
{ // ESC
goto L1000;
}
if( $RepAfter == "" )
{ //---- 文字列入力なし ----//
goto L2000;
}
$RepAfterDef = $RepAfter;
// 範囲選択の取り込み
#FH = hidemaruhandle( 0 );
copy2;
// テンポラリへ複写
openfile "/h";
disabledraw;
#TmpFH = hidemaruhandle( 0 );
paste;
// 編集
replaceallfast "^\\n", "\\t", regular; // 改行のみの例外処理
replaceallfast "\\n\\f[^0-9']", "\\t\\1", regular; // 1行にする
gofiletop;
#Cnt = linecount2;
#I = 0;
while( #I < #Cnt )
{
movetolineno 1, #I + 1;
if( char( code ) == "'" )
{ // コメント行
goto L3000;
}
#XS = x;
#YS = y;
golineend2;
$Str = gettext( #XS, #YS, x, y );
while( 1 )
{
#Pos = strstr( $Str, $RepBefore );
if( #Pos == -1 )
{ // 置換元なし
break;
}
$Wk = leftstr( $Str, #Pos );
$Wk = $Wk + $RepAfter;
$Wk = $Wk + rightstr( $Str, strlen( $Str ) - #Pos - strlen( $Rep
Before ) );
$Str = $Wk;
}
moveto #XS, #YS;
beginsel;
golineend2;
insert $Str;
L3000:
#I = #I + 1;
}
replaceallfast "\\t", "\\n", regular; // 元に戻す
// 編集結果を元のファイルに戻す
selectall;
copy;
enabledraw;
setactivehidemaru #FH;
closehidemaruforced #TmpFH;
paste;
// 保存
writeinistr hidemarudir + "\\rep.ini", "Rep", "BeforeDef", $RepBeforeDef;
writeinistr hidemarudir + "\\rep.ini", "Rep", "AfterDef", $RepAfterDef;
LEND:
endmacro;
// 置換マクロ(ここまで)
以下のようなテストデータを置換すると、
// 置換前(ここから)
'1T.E.S.T.1
T.E.S.T.2
1T.E.S.T.1
T.E.S.T.2
// 置換前(ここまで)
以下のようになります。
// 置換後(ここから)
'1T.E.S.T.1
T.E.S.T.2
1T_E_S_T_1
T_E_S_T_2
// 置換後(ここまで)
マクロを動かして、意図した通りになっていないようでしたら、
置換前のデータと、置換後にどのようになって欲しいかを教えて
下さい。
多分、今回のマクロで問題ないとは思いますが。
|
|