to lower case in box selectionNo.04210
ardbeg さん 99/10/11 11:43
 
ボックス選択しているときに
右クリックで "to lower case" なんかできると
便利だなと思ったのですが
解決法があるでしょうか ?
それとも windows の仕様で
本質的に不可能なんでしょうか。

以上。

[ ]
RE:04210 to lower case in box selectionNo.04220
番頭++ さん 99/10/12 14:48
 
>ボックス選択しているときに
>右クリックで "to lower case" なんかできると
>便利だなと思ったのですが
>解決法があるでしょうか ?

こんな感じのマクロになります。
paste; を pasterect; にしました。何かがおかしい ???

//*5    B3.mac
    if( ! rectselecting ){  endmacro;   }
    menu "Select Option",
         "(&u) - toupper", "(&l) - tolower",    //  これはうまくいくでしょう。
         "(&h) - tohankaku", "(&k) - tozenkakukata",    //  うまくいかないか
も !
         "(&7) - UnDo 7";   //  UnDo 7 回実行する !
    #result = result - 1;
    if( #result < 01 ){ endmacro;   }   //  [Esc] で終わり !
    #xt = seltopx;  #yt = seltopy;  #xe = selendx;  #ye = selendy;
    if( #result == 05 ){
        disabledraw;    disableinvert;
        undo;   undo;   undo;   undo;   undo;   undo;   undo;
        moveto #xt, #yt;
        endmacro;
    }
    #freecursor = freecursor;
    if( ! #freecursor ){    config "r+";    }   //  とりあえず freecursor !
    cut;
    disabledraw;    disableinvert;
    gofileend;
    if( x != 0 ){   insertreturn;   }   //  ファイルの最後は改行 !
    #x = x; #y = y;
    paste;  beginsel;   gofileend;
    if( #result == 01 ){
        toupper;
    } else if( #result == 02 ){
        tolower;
    } else if( #result == 03 ){
        tohankaku;
    } else if( #result == 04 ){
        tozenkakukata;
    //T replaceallfast "\\t", "\\t\\t", regular, inselect;  //  [Tab]
    //T setsearch "", 0x00;
    } else {
    }
    escape; insertreturn;   moveto #x, #y;
    beginrect;
    #i = #x-#xt+#xe;
    if( #result == 01 ){
    } else if( #result == 02 ){
    } else if( #result == 03 ){
        #i = #i;    //  #i / 2; //  必ずしもそうでは無い !
    } else if( #result == 04 ){
        #i = #i * 2;    //  まァ、とりあえず !
    } else {
    }
    moveto #i, #y-#yt+#ye;
    cut;    moveto #x, #y;  beginsel;   gofileend;  delete;
    moveto #xt, #yt;
    pasterect;  //  処理がおかしくなったら、paste; で置き換えてください !
    //  paste;  //  こちらのほうが安定するみたいです !
    moveto #xt, #yt;
    if( ! #freecursor ){    config "r-";    }
endmacro;
// end of macro.


[ ]
RE:04220 to lower case in box selectionNo.04221
番頭++ さん 99/10/12 15:08
 
>こんな感じのマクロになります。
>paste; を pasterect; にしました。何かがおかしい ???
>
>//*5    B3.mac
>    if( ! rectselecting ){  endmacro;   }
>    menu "Select Option",

何がおかしいのか、ある程度わかりました。

//*5    B4.mac
    if( ! rectselecting ){  endmacro;   }   //  次の行をこの下に移動してくだ
さい !
    #xt = seltopx;  #yt = seltopy;  #xe = selendx;  #ye = selendy;  //  ここ
に移動 !

selendx が不安定になるみたいです。

01|abcde ↑
02|abcd ↑
03|abc ↑
04|ab ↑

上の 3 行で、 bcd を BOX 選択します。ところが、

    bcde
    bcd
    bc  
    b  

とはならなく、

    b
    b
    b
    b

と解釈される、動きになります。
常駐の秀丸をも含めて、一度すべて終了すると正常になります。

pasterect; を paste; に戻したほうが安定するかも知れません。
根拠はありません。


[ ]
RE:04210 to lower case in box selectionNo.04223
秀丸担当 さん 99/10/12 16:19
 
>ボックス選択しているときに
>右クリックで "to lower case" なんかできると
>便利だなと思ったのですが
>解決法があるでしょうか ?
>それとも windows の仕様で
>本質的に不可能なんでしょうか。

秀丸がボックス選択中の to lower case の機能を備えていないので、
いまのところ番頭++さんのかかれているようなマクロを作って割り当
てるしかできません。

[ ]
RE:04210 to lower case in box selectioNo.04228
ひろ さん 99/10/12 18:24
 
 ardbeg さん今日は、ひろです。
> ボックス選択しているときに
> 右クリックで "to lower case" なんかできると
> 便利だなと思ったのですが
 便利ですよね。私も以前投稿 (ひょっとすると Nifty の方かも) して、要
望 list に入って、検討はして頂いていると思います。

[ ]
RE:04221 to lower case in box selectionNo.04232
番頭++ さん 99/10/13 00:04
 
こんな感じです。まートモな、マクロにしました。
マクロが肥える秋、でも誰が使うのやら ...
そのうちに削除します。

//*5    KZ_SelConv1.mac - 1999/10/12 - K.Nakatake

//*1 【マクロ名】 KZ_SelConv1.mac - Ver. 00.07 - 1999/10/12
//*1    BOX 範囲選択、範囲選択して、マクロを実行してください。<== お勧めです !
//*1    空白 ==> タブ、タブ ==> 空白 の変換は、行単位の範囲選択をして、マク
ロを実行してください。
//*1    やり直し (UnDo-7) は、無条件に、無条件に UnDo を 7 回、行います !
//*1        でも、UnDo を失敗したり、「ファイルの更新」がなくなると、やめま
すです !
//*1    やり直し (UnDo-7) は、 BOX 範囲選択、範囲選択されているとできません。
//*1    やり直し (UnDo-7) は、「ファイルが更新」されていないとできません。
//*1    編集のやり直し (Reopen) も、やり直し (UnDo-7) と同じ制限があります。
//*1    BOX 範囲選択は、マクロ実行後でも指定できます。
//*1    [Esc] で処理を中止してください。
//*1    BOX 範囲選択の変換は、タブ [Tab] があるとあまりうまくいきません !

    if( rectselecting || selecting ){
        #xt = seltopx;  #yt = seltopy;  #xe = selendx;  #ye = selendy;
    } else {
        #xt = x;    #yt = y;
    }
    $tbl_menu1[00] = "【 範囲選択しての変換処理 】";
    if( rectselecting ){
        $tbl_menu1[00] = $tbl_menu1[00] + " : BOX 範囲選択がされています";
    } else if( selecting ){
        $tbl_menu1[00] = $tbl_menu1[00] + " : 範囲選択がされています";
    } else {
        $tbl_menu1[00] = $tbl_menu1[00] + " : 後で BOX 範囲選択をしてください";
    }
    $tbl_menu1[01] = "(&U) - 半角英大文字 (toUpper)";
    $tbl_menu1[02] = "(&L) - 半角英小文字 (toLower)";
    $tbl_menu1[03] = "(&H) - 半角 (toHankaku)"; //  うまくいかないかも !
    $tbl_menu1[04] = "(&Z) - 全角カタカナ (toZenkakukata)"; //  うまくいかな
いかも !
    $tbl_menu1[05] = "(&A) - 全角ひらがな (tozenkakuhirA)"; //  うまくいかな
いかも !
    if( selecting && ( ! rectselecting ) && (seltopx+selendx) == 0 ){
        $tbl_menu1[06] = "(&T) - 空白 ==> タブ (toTab)  行単位の範囲選択のみ";
        $tbl_menu1[07] = "(&S) - タブ ==> 空白 (toSpace) 行単位の範囲選択のみ";
    }
    $tbl_menu1[08] = "(&7) - やり直し (UnDo-7)";    //  UnDo を 7 回実行する !
    $tbl_menu1[09] = "(&R) - 編集のやり直し (Reopen)";  //  UnDo はできなく
なります !
    #tbl_menu1 = 09 + 1;
    if( rectselecting || selecting || ( ! updated ) ){
        #tbl_menu1 = #tbl_menu1 - 2;
        if( $tbl_menu1[06] == "" ){
            #tbl_menu1 = #tbl_menu1 - 2;
        }
    }
    menuarray $tbl_menu1, #tbl_menu1;
    #result = result - 1;
    if( #result < 01 ){ endmacro;   }   //  [Esc] で終わり !
    if( $tbl_menu1[#result] == "" ){    endmacro;   }
    if( #result == 08 || #result == 09 ){
        if( rectselecting || selecting ){   endmacro;   }   //  範囲選択され
ていない !
        if( ! updated ){    endmacro;   }   //  ファイルは変更されていない !
        escape; disabledraw;    disableinvert;
        if( #result == 08 ){
            #i = 7;
            while( #i ){
                undo;
                if( ( ! result ) || ( ! updated ) ){
                    break;
                }
                #i = #i - 1;
            }
            moveto #xt, #yt;
        } else {
            reopen;
        }
        endmacro;
    }
    if( #result == 06 || #result == 07 ){
        if ( ( ! selecting) || (seltopx+selendx) != 0 ){
            message "この変換は、行単位の範囲選択をして実行してください !";
            escape; moveto #xt, #yt;
            endmacro;
        }
    }
    if( rectselecting || selecting ){
    } else {
    //  message "BOX 範囲選択をしてマクロを実行してください !";
    //  endmacro;
        escape;
        $wk1 = midstr($tbl_menu1[#result],6,99) + " - ";
        inputpos $wk1 + "BOX 範囲選択の開始位置を指定してください ! - [Esc]
 : キャンセル";
        if( iskeydown( 0x1B ) ){    //  [Esc]
            escape; endmacro;
        }
        beginrect;
        inputpos $wk1 + "次に、BOX 範囲選択の終了位置を指定してください ! -
[Esc] : キャンセル";
        if( iskeydown( 0x1B ) ){    //  [Esc]
            escape; endmacro;
        }
        #xt = seltopx;  #yt = seltopy;  #xe = selendx;  #ye = selendy;
    }
    if( ( ! rectselecting ) && ( ! selecting ) ){   escape; endmacro;   }
    if( #xt == #xe && #yt == #ye ){ escape; endmacro;   }
    disabledraw;    disableinvert;
    #sw_rect = rectselecting;
    cut;
    #freecursor = freecursor;
    if( ! #freecursor ){    config "r+";    }   //  とりあえず freecursor !
    gofileend;
    if( x != 0 ){   insertreturn;   }   //  ファイルの最後は改行 !
    #x = x; #y = y;
    paste;
    moveto #x, #y;
    beginsel;   gofileend;
    if( #result == 01 ){
        toupper;
    } else if( #result == 02 ){
        tolower;
    } else if( #result == 03 ){
        tohankaku;
    } else if( #result == 04 ){
        tozenkakukata;
    //T replaceallfast "\\t", "\\t\\t", regular, inselect;  //  [Tab]
    //T setsearch "", 0x00;
    } else if( #result == 05 ){
        tozenkakuhira;
    } else if( #result == 06 ){
        totab;
    } else if( #result == 07 ){
        tospace;
    } else {
    }
    escape;
    if( #sw_rect ){
        insertreturn;   moveto #x, #y;  beginrect;
        #i = #x-#xt+#xe;
        if( #result == 01 || #result == 02 ){
        } else if( #result == 03 ){
            #i = #i;    //  #i / 2; //  必ずしもそうでは無い !
        } else if( #result == 04 || #result == 05 ){
            #i = #i * 2;    //  まァ、とりあえず !
        } else if( #result == 06 || #result == 07 ){
            #i = #i;    //  まァ、とりあえず !
        } else {
        }
        moveto #i, #y-#yt+#ye;
        cut;    moveto #x, #y;  beginsel;   gofileend;  delete;
        moveto #xt, #yt;
        pasterect;  //  処理がおかしくなったら、paste; で置き換えてください !
        //  paste;  //  こちらのほうが、安定するみたいです !
    } else {
        moveto #x, #y;
        beginsel;   gofileend;
        cut;
        insertfix "#";  delete; //  dummy for UnDo-7
        moveto #xt, #yt;
        paste;
    }
    moveto #xt, #yt;
    if( ! #freecursor ){    config "r-";    }
endmacro;
// end of macro.


[ ]
RE:04210 to lower case in box selectioNo.04233
安部 さん 99/10/13 11:27
 
ardbegさん、こんにちわ。

>ボックス選択しているときに
>右クリックで "to lower case" なんかできると
>便利だなと思ったのですが
>解決法があるでしょうか ?

僕もこれが出来なくて困っていて、結局自分でマクロを書いて
代用してました。(つたない知識で書いたものですが…)


------ ここから
//==================================================================
//矩形選択対応小文字変換マクロ
//==================================================================

//----- 矩形選択でなければ通常のtolower
if (rectselecting == false) { tolower; endmacro; }

//----- 矩形位置を記憶
##sx = seltopx; ##sy = seltopy; ##ex = selendx; ##ey = selendy;

//----- 変換処理
##i = ##sy;
while ( ##i <= ##ey ) {
    escape;
    moveto ##sx,##i;
    beginsel;
    moveto ##ex,##i;
    tolower;
   
    ##i = ##i + 1;
}

//----- 矩形選択状態を元に戻す
escape;
moveto ##sx,##sy;
beginrect;
moveto ##ex,##ey;
------ ここまで

単に1行ずつ変換させてるだけなので、編集のやり直しは
とても効率が悪いです(^^;


    あべぷ〜        E-Mail:xxxxxx@fsinet.or.jp
                    URL:http://member.nifty.ne.jp/ijokeba/

[ ]
RE:04210 to lower case in box selectionNo.04255
ardbeg さん 99/10/15 09:04
 
>ボックス選択しているときに
>右クリックで "to lower case" なんかできると
>便利だなと思ったのですが

仕事にかまけているうちに
コメントいただいた皆さんに
感謝致します。
しかし、やっぱり私もマクロ使いの
仲間入りですか ^_^;

以上。

[ ]