Grep 行の本文更新処理No.01415
番頭++ さん 00/06/22 11:58
 
「秀丸」のバージョンを上げれますか ???

//*1 *** Macro for 「秀丸エディタ」 ***
//*1 【マクロ名】 KZ_GrepUp1.mac - Ver. 03.04 - 1999/11/11
//*1  (C) Copyright 番頭++ (Bantou++). 1996 - 1999. All Rights Reserved.
//*1 【作者】 K.Nakatake / 番頭++ / E-mail:xxxxxxxx@nifty.ne.jp
//*1 【機能】
//*1 ・Grep 行の本文更新処理
//*1 ・Grep の後でこの処理を実行して下さい !
//*1 ・Grep の後で、置換を行い、その変更を本文に反映させます。便利 !!!
//*1 ・カーソル位置から、本文を更新します。
//*1 ・本文は、必ず保存されます !!!
//*1 ・ question "Grep 行の更新後ファイルをクローズしますか ?";
//*1    これは後で、undo; redo; が出来るためです。
//*1 ・何度も、何度も変わったものを作成しました。
//*1 ・
//*1 【注意】
//*1 ・本文は、必ずクローズしてこのマクロを実行してください !!!
//*1 ・( ) - 括弧を含んだファイル名は正常に処理できません。仕様です !!!
//*1 ・あまりに多くの「秀丸」を開いていると、
//*1    マクロが正常に終了しないことがあります。
//*1    これはマクロでは対処できません。今は、案がありません。
//*1 ・ call pp_delay2; //  根拠のない、昔の芸の復活 !!!
//*5    安定した、確実な変更方法を模索する日々 !!!
//*5        #act_1 , ##wk_time99 ... ワカラン !!!
//*1 ・このマクロの仕様は予告無く変更されます。
//*1 ・
//
    if( version < 301 ){    //  個人的な理由 !!!
        message "すみません、version (3.01) のチェックを行なっています !";  
about;
        endmacroall;
    }

    call pp_grep_after1;
    question "Grep 行の本文更新処理を行ないますか ?";
//  if( ! result ){ message "マクロを中止します !"; endmacro;   }
    if( ! result ){ endmacroall;    }
    question "Grep 行の更新後ファイルをクローズしますか ?";
    if( iskeydown( 0x1B ) ){    endmacroall;    }   //  [Esc]
    #sw_close = result;

    config "w1000"; //  max. Ver. 3.00 から
    disabledraw;
    disableinvert;
//  gofiletop;
    $time_start1 = time;
    $str_f1 = filename2;
//R #handle1 = hidemaruhandle( findhidemaru( $str_f1 ) );
//R setactivehidemaru #handle1;

    while( code != eof && code != 0x0d ){
        title filename2 + " : Grep 行の本文更新処理 - " + $time_start1 + " -
 " + time;
        golinetop2; beginsel;
        while( code != '(' ){
            if( code == 0x0d ){
                message "Bug-1 - file name !!!";    escape; endmacroall;
            }
            right;
        }
        $str_f2 = gettext(seltopx,seltopy,selendx,selendy); escape;
        while( code != ':' ){
            if( code == 0x0d ){
                message "Bug-2 - grep !!!"; escape; endmacroall;
            }
            right;
        }
        right 2;    beginsel;   golineend2;
        $str_line = gettext(seltopx,seltopy,selendx,selendy);   escape;
        if( $str_line == "" ){
            message "Bug-3 - no line !!!";  escape; endmacroall;
        }
        golinetop2;
        if( findhidemaru( $str_f2 ) == -1 ){
            if( #sw_close ){
                openfile "/h " + $str_f2;
            } else {
                openfile $str_f2;
            }
        } else {
        //  setactivehidemaru hidemaruhandle(findhidemaru($str_f2));
        }
        call pp_delay2;
        setactivehidemaru hidemaruhandle(findhidemaru($str_f1));
        tagjump;
        if( ! result ){
            message "ERROR - tagjump failed !";
            endmacroall;
        }
        setactivehidemaru hidemaruhandle(findhidemaru($str_f2));
        beginsel;   golineend2; delete;
        insert $str_line;
        golinetop2;
        if( #sw_close ){
            call pp_delay2;
            saveas filename2;
            if( ! result ){
                message "ERROR - saveas failed !\n\n" + filename2;
                endmacroall;
            }
        }
        backtagjump;
        if( ! result ){
            message "ERROR - backtagjump failed !";
            endmacroall;
        }
        setactivehidemaru hidemaruhandle(findhidemaru($str_f1));
        if( #sw_close ){
            $wk1 = filename[01];
            closehidemaru 1;
            #act_1 = -99;   //  bug ???
            while( #act_1 != -1 ){
                call pp_delay2;
                #act_1 = findhidemaru($wk1);
            }
        }
        golinetop2; golineend2; right;
    }

    beep;   message "Start : " + $time_start1 + "\nEnd  :  " + time;
//  gofiletop;
    enableinvert;
    enabledraw;
    beep;   title 0;
    setsearch "", 0x00; setclipboard "";    //  記憶にありません !
endmacro;

pp_delay1_test:
    ##i = tickcount;
    while( ( ##i + 25 ) > tickcount ){  $$wk_time99 = time; ##j = ##j + 1;  }
    message str(##i) + " - " + str(tickcount) + " - " + str(##j);
return;

pp_delay2:
    ##i = tickcount;
    while( ( ##i + 25 ) > tickcount ){  $$wk_time99 = time; }   //  time 鴨 !!!
return;

pp_grep_after1:
    escape;
    golinetop2;     selectline;
    searchdown ".\\([0-9]+\\): .", regular, inselect;
    #j = result;    escape; golinetop2;
    if( ! #j ){
        message "この処理は、 Grep の後に行って下さい !";
        endmacro;
    }
    escape;
return;

endmacroall;
// end of macro.


//*1 *** Macro for 「秀丸エディタ」 ***
//*1 【マクロ名】 KZ_GrepUp2.mac - Ver. 03.04 - 1999/11/11
//*1  (C) Copyright 番頭++ (Bantou++). 1996 - 1999. All Rights Reserved.
//*1 【作者】 K.Nakatake / 番頭++ / E-mail:xxxxxxxx@nifty.ne.jp
//*1 【機能】
//*1 ・Grep 行の本文更新処理 - 試験運転中の「サンプル」 !!!
//*1 ・Grep の後でこの処理を実行して下さい !
//*1 ・Grep の後で、置換を行い、その変更を本文に反映させます。便利 !!!
//*1 ・カーソル位置から、本文を更新します。
//*1 ・本文は、必ず保存されます !!!
//*1 ・安定して稼動すれば、 KZ_GrepUp1.mac より速い処理です。
//*1 ・何度も、何度も変わったものを作成しました。
//*1 ・
//*1 【注意】
//*1 ・本文は、必ずクローズしてこのマクロを実行してください !!!
//*1 ・( ) - 括弧を含んだファイル名は正常に処理できません。仕様です !!!
//*1 ・あまりに多くの「秀丸」を開いていると、
//*1    マクロが正常に終了しないことがあります。
//*1    これはマクロでは対処できません。今は、案がありません。
//*1 ・ call pp_delay2; //  根拠のない、昔の芸の復活 !!!
//*5    安定した、確実な変更方法を模索する日々 !!!
//*5        #act_1 , ##wk_time99 ... ワカラン !!!
//*1 ・このマクロの仕様は予告無く変更されます。
//*1 ・
//
    if( version < 301 ){    //  個人的な理由 !!!
        message "すみません、version (3.01) のチェックを行なっています !";  
about;
        endmacroall;
    }

    call pp_grep_after1;
    question "Grep 行の本文更新処理を行ないますか ?";
//  if( ! result ){ message "マクロを中止します !"; endmacro;   }
    if( ! result ){ endmacroall;    }
//  question "Grep 行の更新後、ファイルをクローズしますか ?";
//  #result = result;
//  if( iskeydown( 0x1B ) ){    endmacroall;    }   //  [Esc]
//  #sw_close = #result;
    #sw_close = true;   //  必ずクローズする !!!

    config "w1000"; //  max. Ver. 3.00 から
    #windowheight = windowheight;
//  setwindowsize windowwidth, windowheight / 2;    //  縦、半分 !!!
    setwindowsize windowwidth, 10;
    disabledraw;
    disableinvert;
//  showwindow 0;   //  不安、気休め !!!
//  gofiletop;
//R #handle1 = hidemaruhandle( findhidemaru( $str_f1 ) );
//R setactivehidemaru #handle1;

    $time_start1 = time;
    $str_f1 = filename2;
    #handle1 = hidemaruhandle( 0 );
//  message str(#handle1);
    $str_f2 = "";   $str_f3 = "";   $str_file3 = "";
    $str_dir1 = directory2;
    if( rightstr($str_dir1,1) != "\\" ){
        $str_dir1 = directory2 + "\\";  //  C:\ ???
    }

    while( code != eof && code != 0x0d ){
        title filename2 + " : Grep 行の本文更新処理 - " + $time_start1 + " -
 " + time;
        golinetop2; beginsel;
        while( code != '(' ){
            if( code == 0x0d ){
                message "Bug-1 - file name !!!";    escape; endmacroall;
            }
            right;
        }
        $str_f2 = gettext(seltopx,seltopy,selendx,selendy); escape;
        while( code != ':' ){
            if( code == 0x0d ){
                message "Bug-2 - grep !!!"; escape; endmacroall;
            }
            right;
        }
        right 2;    beginsel;   golineend2;
        $str_line = gettext(seltopx,seltopy,selendx,selendy);   escape;
        if( $str_line == "" ){
            message "Bug-3 - no line !!!";  escape; endmacroall;
        }
        golinetop2;
        $str_f2 = $str_dir1 + $str_f2;
        if( $str_f2 != $str_f3 ){
            if( #sw_close && $str_file3 != "" ){
                call pp_close_prev1;
                $str_f3 = "";   $str_file3 = "";
            }
            if( findhidemaru( $str_f2 ) == -1 ){
                if( #sw_close ){
                    openfile "/h " + $str_f2;
                    if( ! result ){
                        message "ERROR - openfile /h failed !";
                        endmacroall;
                    }
                } else {
                    openfile $str_f2;
                    if( ! result ){
                        message "ERROR - openfile failed !";
                        endmacroall;
                    }
                }
                #sw_open1 = false;
            } else {
                setactivehidemaru hidemaruhandle(findhidemaru($str_f2));
                if( updated ){
                    message "ファイルは更新されています !"; endmacroall;
                }
                #sw_open1 = true;
            }
            call pp_delay2;
            $str_f3 = $str_f2;  $str_file3 = filename2;
            setactivehidemaru #handle1;
        }
        tagjump;
        if( ! result ){
            message "ERROR - tagjump failed !";
            endmacroall;
        }
        call pp_delay2;
        setactivehidemaru hidemaruhandle(findhidemaru($str_file3));
        golinetop2; beginsel;   golineend2; //  delete;
        insertfix $str_line;
//      golinetop2; escape; //
//      setwindowsize 80, 04;
        backtagjump;
        if( ! result ){
            message "ERROR - backtagjump failed !";
            endmacroall;
        }
        call pp_delay2;
        setactivehidemaru #handle1;
        disabledraw;
        golinetop2; golineend2; right;
    }

    if( #sw_close && $str_file3 != "" ){
        call pp_close_prev1;
        $str_f3 = "";   $str_file3 = "";
    }
    beep;
    call pk_msg_time_lap1 $time_start1;
//  gofiletop;
    setwindowsize windowwidth, #windowheight;
//  showwindow 1;
    enableinvert;
    enabledraw;
    beep;   title 0;
    setsearch "", 0x00; setclipboard "";    //  記憶にありません !
endmacro;

pp_close_prev1:
//  nexthidemaru;
//  prevhidemaru;
//  setactivehidemaru 1;
    setactivehidemaru hidemaruhandle(findhidemaru($str_file3));
    saveas $str_file3;
    if( ! result ){
        message "ERROR - saveas failed !\n\n" + $str_file3;
        endmacroall;
    }
    setactivehidemaru #handle1;
    if( ! #sw_open1 ){
        $wk1 = $str_file3;
        closehidemaru hidemaruhandle(findhidemaru($str_file3));
        if( ! result ){
            message "ERROR - closehidemaru failed !\n\n" + $str_file3;
            endmacroall;
        }
        #act_1 = -99;   //  bug ???
        while( #act_1 != -1 ){
            call pp_delay2;
            #act_1 = findhidemaru($wk1);
        }
    }
return;

pp_delay1_test:
    ##i = tickcount;
    while( ( ##i + 25 ) > tickcount ){  $$wk_time99 = time; ##j = ##j + 1;  }
    message str(##i) + " - " + str(tickcount) + " - " + str(##j);
return;

pp_delay2:
    ##i = tickcount;
    while( ( ##i + 25 ) > tickcount ){  $$wk_time99 = time; }   //  time 鴨 !!!
return;

pk_str_dir1:
    $str_dir1 = directory2;
    if( rightstr($str_dir1,1) != "\\" ){
        $str_dir1 = directory2 + "\\";  //  C:\ ???
    }
//  message $str_dir1;
return;

pp_grep_after1:
    escape;
    golinetop2;     selectline;
    searchdown ".\\([0-9]+\\): .", regular, inselect;
    #j = result;    escape; golinetop2;
    if( ! #j ){
        message "この処理は、 Grep の後に行って下さい !";
        endmacro;
    }
    escape;
return;

//*6MICRO   pk_msg_time_lap1
endmacroall;
pk_msg_time_lap1:
    $$e = time; //  end time
    if( $$1 > $$e || strlen($$1) != 8 ){    return "";  }
    ##sh = val(leftstr($$1,2)); ##sm = val(midstr($$1,3,2));    ##ss = val(r
ightstr($$1,2));
    ##eh = val(leftstr($$e,2)); ##em = val(midstr($$e,3,2));    ##es = val(r
ightstr($$e,2));
    ##s = ( ( ( ##sh * 60 ) + ##sm ) * 60 ) + ##ss;
    ##e = ( ( ( ##eh * 60 ) + ##em ) * 60 ) + ##es;
    ##i = ##e - ##s;
    if( ##i <= 03 ){    return "00:00:00";  }
//R if( ##i == 00 ){    return "00:00:00";  }
    $$wk1 = ":" + rightstr("00"+str(##i%60),2); ##i = ##i / 60;
    $$wk1 = ":" + rightstr("00"+str(##i%60),2) + $$wk1; ##i = ##i / 60;
    $$wk1 = rightstr("00"+str(##i%60),2) + $$wk1;   ##i = ##i / 60; //  lap
time
    message "Start Time : " + $$1 + "\nEnd  Time : " + $$e + "\nLap  Time :
" + $$wk1;
return $$wk1;
//*6MICRO_END

endmacroall;
// end of macro.

[ ]