選択範囲だけ空白を1つにするマクロNo.02278
伊藤 宏 さん 01/05/31 13:09
 
1598 で、ファイル全部を対象にして、空白をひとつにするマクロ
があることを知って、重宝させてもらってますが、
範囲を選択して同じ処理をすることができるでしょうか。伊藤

[ ]
RE:02278 選択範囲だけ空白を1つにするマNo.02279
ENCODINGSHIFTJIS さん 01/05/31 19:13
 
>範囲を選択して同じ処理をすることができるでしょうか。伊藤
if(selecting){                 // 行範囲での処理
あたりから、少し手を付けてみましたが

// 空白のノーマライズ
//、欧文テキストなら普通の処理、// xml のtextや属性値などでもおなじみ.

// 行数の減るreplaceは不思議ゾーンin秀丸
//第一問題 replaceall 直後のカーソル位置は予測できるか? y=最終入力行位置
//第二問題 一行選択時の inselect の有効性 ?

でつまずきました。データの減少する処理ですから
範囲の末尾から searchup ; if 範囲内なら置換を繰り返す、のでは?


[ ]
RE:02278 選択範囲だけ空白を1つにするマNo.02280
TAKA さん 01/05/31 21:26
 
TAKA です。

>1598 で、ファイル全部を対象にして、空白をひとつにするマクロ
>があることを知って、重宝させてもらってますが、
>範囲を選択して同じ処理をすることができるでしょうか。伊藤

処理する部分を別の秀丸に持っていって、そこで、全体に対して処
理し、(処理対象は、範囲選択した場所となる)元に戻すといいと
思います。
範囲選択していない場合は、全体ですから、全体を別の秀丸に持っ
ていってもいいと思います。
#範囲選択している場合としていない場合で、処理を分けてもかま
 わないとは思いますが。

以下のようなマクロでどうでしょうか?

// マクロ(ここから)
    if( !selecting )
    { // 範囲選択していない
        selectall;
    }
    #FH = hidemaruhandle( 0 );
    copy2;
    delete;
    openfile "/h";
    #TmpFH = hidemaruhandle( 0 );
    paste;
    replaceall "\\n", "", regular;
    replaceall " +", " ", regular;  //空白部分はそれぞれ全角の空白
    selectall;
    copy;
    setactivehidemaru #FH;
    paste;
    closehidemaruforced #TmpFH;
    endmacro;
// マクロ(ここまで)

[ ]
RE:02279 選択範囲だけ空白を1つにするマNo.02284
encodingshiftjis さん 01/06/01 00:37
 
意外とマクロ行数がかかりました。

1:選択範囲を行で区切り確保
2:連続空白の縮約を先に処理
3:最後に行の一本化を実行

//normalizeSpace.mac
//              半角空白でテストした
        if(selecting){  // 行範囲ではうまくゆくかな?
                        // 最終行末の空白は取れてないです          
#seltopx=seltopx;#seltopy=seltopy;#selendx=selendx;#selendy=selendy;
escape;
moveto #selendx,#selendy;insertreturn;#selendy=y;
moveto #seltopx,#seltopy;insertreturn;#seltopy=y;#selendy=1+#selendy;
beginsel;moveto 0,#selendy;left 1;
menu "j";
replaceall " +"," ",regular,inselect;
moveto 0,#seltopy;beginsel;moveto 0,#selendy;left 1;
menu "k";
replaceall " \n "," \n",regular,inselect;
moveto 0,#seltopy;beginsel;moveto 0,#selendy;left 1;
menu "p";
replaceall "\n","",regular,inselect;
moveto 0,#seltopy;backspace;
                       }else{
replaceall "\n","",regular;
replaceall " +"," ",regular;
                       }
endmacro

[ ]
RE:02280 選択範囲だけ空白を1つにするマNo.02285
伊藤 宏 さん 01/06/01 10:32
 
伊藤です。
ありがとうございました。 バッチシです。
段落ごとに、空白がたくさんある文章を整形しければならないことが
多くて、困ってました。これで仕事もはかどります。
どうもありがとうございました。

[ ]