画面表示のまま整形No.03781
山紫水明 さん 03/06/25 23:18
 
haruさん,セイさん,こんばんは。

「秀丸エディタβ版&鶴亀メール常連さんフォーラム・秀丸エディタβ版」
#01976の続きです。
 少し不具合がありましたので修正しました。

//------ ReformX.mac ---------------------------------------//
//画面表示のまま改行を入れて整形
//範囲選択していれば選択範囲内,
//していなければカーソルのある行または全文を対象

#tabspace = 1; // 1:タブスペース変換の問い合わせをする  0:しない
openreg "CURRENTUSER", "Software\\Hidemaruo\\Hidemaru\\Env";
#cb =  getregnum( "CRBurasage" );
if( !#cb ) {
    question "改行文字をぶら下げにします,いいですか?";
    if( result == yes ) {
        writeregnum "CRBurasage", 1;
        envchanged;
    } else {
        closereg;
        endmacro;
    }
}
closereg;
if( !kinsokustate ) config "k+";
if( selecting ) {
    #topy = seltopy;
    escape;
    moveto selendx, selendy;
} else {
    menu "&1 カーソル行のみ", "&2 全  文";
    if( result ==1 ) {
        golinetop2;
        #topy = y;
        golineend2;
    } else {
        #topy = 0;
        gofileend;
    }
}
if( ( code != 0x0d ) && x > 0 ) insertreturn;
#endy = y;
moveto 0, #topy;
disabledraw;
while( y < #endy ) {
    if( code == 0x09 ) #tab = 1;
    while( !return ) {
        golineend;
        right;
        #x = x;   //改行の次のカーソル位置
        insertreturn;
        while( x < #x ) insert " ";    //インデントなどの処理
    }
    moveto 0, y + 1;
}
if( #tab == 0 || #tabspace == 0 ) endmacro;
question "タブを半角スペースに変換しますか?";
if( result) {
    moveto 0, #topy;
    beginsel;
    moveto 0, #endy;
    tospace;
    escape;
}
endmacro;
//------------------------------------------------------------//

       では, (^^)/~

[ ]
RE:03781 画面表示のまま整形No.03782
haru さん 03/06/26 09:21
 
> 少し不具合がありましたので修正しました。
 ありがとうございます。
 うまくいっています。
 また何かありましたら、よろしくお願いします。

[ ]
RE:03781 画面表示のまま整形No.03788
seih さん 03/06/27 19:47
 
At Wed, 25 Jun 2003 23:18:01 +0900,
山紫水明 wrote:
> 「秀丸エディタβ版&鶴亀メール常連さんフォーラム・秀丸エディタβ版」
> #01976の続きです。
>  少し不具合がありましたので修正しました。

どうもありがとうございます (> 山紫水明さん)。

私の試した範囲では、思った通りに「画面表示のまま整形」できま
した。今後、愛用させていただきます ;)

-- 清

[ ]
RE:03788 画面表示のまま整形No.03789
山紫水明 さん 03/06/28 09:31
 
 haruさん,清さん,こんにちは。

 お二人のお眼鏡にかなったようで一安心です。
 ライブラリにアップする予定です。

     では, (^^)/~
                                        山紫水明

[ ]
RE:03781 画面表示のまま整形No.03802
ひろ さん 03/07/01 23:44
 
 山紫水明さん今日は、ひろです。
 横から失礼します。ソースを見ていて、ちょっと気になることがあります。
>         insertreturn;
 上書きモードの時期待通りの動作を為ませんよ。overwrite,
overwriteswitch による判定/設定の切り替えが必要でしょう。

> if( ( code != 0x0d ) && x > 0 ) insertreturn;
 最後が改行されていない場合は。無理に改行しなくともよいのでは? この仕
様だと、ファイル全体を処理する場合、必ずファイルの最後で必ず改行してし
まいます。確り確認していませんが、
if(  code != 0x0D && x > 0 && (!return) ) insertreturn;
で如何でしょう?

>         while( x < #x ) insert " ";    //インデントなどの処理
 「ファイルタイプ別の設定」で「自動インデント」の各種オプションが ON
になっていると、その分も空白が挿入されます。直前に
while( x > #x )backspace;
等が必要でしょう。

[ ]
RE:03781 画面表示のまま整形No.03803
haru さん 03/07/02 08:46
 
 使わせて頂いております。
 ありがとうございます。

 ところで、機能追加なんですが、
 行頭が、>の時は、整形処理を一切しない(元のまま)という風
にして頂きたいのですが。
 可能でしょうか?
 勝手なお願いですみません。よろしくお願いします。

[ ]
RE:03802 画面表示のまま整形No.03811
山紫水明 さん 03/07/02 23:44
 
 ひろさん,こんばんは。

》 横から失礼します。ソースを見ていて、ちょっと気になることがあります。

 どうも,点検の労を賜り恐縮です。

》 上書きモードの時期待通りの動作を為ませんよ。

 はい,このことはアップのあと,自分でも気づいていたところでした。

》 最後が改行されていない場合は。無理に改行しなくともよいのでは? この仕
》様だと、ファイル全体を処理する場合、必ずファイルの最後で必ず改行してし
》まいます。

 この点は,迷ったところですが,整形したものをコピーして別のテキストに挿
入した場合,改行があった方が形が崩れないと判断しました。それに最後に改行
を付加してとくに具合が悪いこともないと思いました。

》>         while( x < #x ) insert " ";    //インデントなどの処理
》 「ファイルタイプ別の設定」で「自動インデント」の各種オプションが ON
》になっていると、その分も空白が挿入されます。

 考えたつもりでしたが,点検が甘かったようです。まずいバグですね。

     では, (^^)/~
                                        山紫水明

[ ]
RE:03803 画面表示のまま整形No.03812
山紫水明 さん 03/07/02 23:44
 
 haruさん,こんばんは。

》 ところで、機能追加なんですが、
》 行頭が、>の時は、整形処理を一切しない(元のまま)という風
》にして頂きたいのですが。
》 可能でしょうか?

 えーっと,引用行は最後に改行があるので,今でも何もしていないと思います
が・・・
 何か誤解しているのかなー,サンプルを示していただけますか?

     では, (^^)/~
                                        山紫水明

[ ]
RE:03811 画面表示のまま整形No.03813
ひろ さん 03/07/02 23:54
 
 山紫水明さん今日は、ひろです。
>  この点は,迷ったところですが,整形したものをコピーして別のテキストに挿
> 入した場合,改行があった方が形が崩れないと判断しました。それに最後に改行
> を付加してとくに具合が悪いこともないと思いました。
 この点はその通りですね。
 ただこの目的なら、
insertreturn;
より
insert "\n";
の方が良いと思います。そうしないと、
> 》 「ファイルタイプ別の設定」で「自動インデント」の各種オプションが ON
> 》になっていると、その分も空白が挿入されます。
の絡みで、余分な空白が挿入されることがあり、前回の私のアップした修正方
法では、この点は駄目です(^^;。

[ ]
RE:03812 画面表示のまま整形No.03815
haru さん 03/07/03 11:50
 
>》 ところで、機能追加なんですが、
>》 行頭が、>の時は、整形処理を一切しない(元のまま)という風
>》にして頂きたいのですが。
>》 可能でしょうか?

> えーっと,引用行は最後に改行があるので,今でも何もしていないと思います
>が・・・
> 何か誤解しているのかなー,サンプルを示していただけますか?

 例えば、
>あああああああああああああああああああああああああああああああああ[改行]

 これを、折り返し文字数を60にして整形すると、

>あああああああああああああああああああああああああああああ[改行]
ああああ[改行]

 となります。整形後、文中に挿入される改行をなしにして頂きた
いのですが。
 見た目通りに整形するという仕様に反してしまうのですが、可能
でしょうか?
 よろしくお願いします。

[ ]
RE:03815 画面表示のまま整形No.03816
山紫水明 さん 03/07/03 20:54
 
 haruさん,こんばんは。

》 見た目通りに整形するという仕様に反してしまうのですが、可能
》でしょうか?

 マクロの主旨に沿わないので標準でつけるわけにはいきませんが,必要であ
れば,マクロの後から10行目
if( #tab == 0 || #tabspace == 0 ) endmacro;
の直前に,
replaceall "^>.+\\f\\n\\f[^>]", "\\0\\2", regular;
の1行を挿入してください。

     では, (^^)/~
                                        山紫水明

[ ]
RE:03813 画面表示のまま整形No.03817
山紫水明 さん 03/07/03 20:54
 
 ひろさん,こんばんは。

》 ただこの目的なら、
》insertreturn;
》より
》insert "\n";
》の方が良いと思います。

 なるほど,ここで両者の使い分けができるのですね。
 これでいくか,いっそ,インデントそのものを一時的に無効にして,処理後に
復帰するという作戦もありそうです。

     では, (^^)/~
                                        山紫水明

[ ]
RE:03816 画面表示のまま整形No.03821
haru さん 03/07/07 13:01
 
> マクロの主旨に沿わないので標準でつけるわけにはいきませんが,必要であ
>れば,マクロの後から10行目
>if( #tab == 0 || #tabspace == 0 ) endmacro;
>の直前に,
>replaceall "^>.+\\f\\n\\f[^>]", "\\0\\2", regular;
>の1行を挿入してください。
 ありがとうございます。
 うまくいきました。

[ ]