連結についてNo.29630
styth さん 11/03/22 20:31
 
整形ラインの位置に改行がある場合、改行を削除して次の行と連結します。

と、ヘルプにありますが、

 整形ラインを超えた位置に改行がある場合も、改行を削除して次の行と連結す
るみたいです。

 それと、要望なんですが、選択範囲が複数行にまたがる場合は、整形ライン以
下の位置に改行があっても、それらの行を連結するようにはして頂けないでしょ
うか?

 私的な使い方としては、整形ライン以下の区切りの良いところで改行すること
がありますが、これらをまとめて連結して、整形したいところです。
 よろしくお願いします。

[ ]
RE:29630 連結についてNo.29631
Iranoan さん 11/03/22 23:02
 
 styth さん今日は、一ユーザの Iranoan です。
> 選択範囲が複数行にまたがる場合は、整形ライン以
> 下の位置に改行があっても、それらの行を連結するようにはして頂けないでしょ
> うか?
 これは、既存の改行を全て削除して、整形する処理と同じなので、実用的で
ないと思います。

 例えば、末尾のように、
・行頭の改行
・行頭に空白
の場合を除外して改行を削除してから、整形をするマクロで処理したほうが良
いと思います。
//------------------------------------------------------------
setcompatiblemode 0x0200;
$s = searchbuffer;
#s = searchoption|0x80000000;
#s2 = searchoption2;
begingroupundo;
disabledraw;
if( selecting )moveto seltopx, selendx;
else gofiletop;
searchdown2 "\n(?![  \t])", regular, inselect;
while( result ){
  if( column )delete;
  finddown2;
}
form;
endgroupundo;
setsearch $s, #s, #s2;

[ ]
RE:29631 連結についてNo.29634
秀丸担当 さん 11/03/23 10:42
 

>整形ラインの位置に改行がある場合、改行を削除して次の行と連結します。
>
>と、ヘルプにありますが、
>
> 整形ラインを超えた位置に改行がある場合も、改行を削除して次の行と連結す
>るみたいです。

ご指摘ありがとうございます。
正しくは、整形ラインの位置以降の改行も対象でした。
ヘルプのほうを修正させていただきます。

> 選択範囲が複数行にまたがる場合は、整形ライン以
> 下の位置に改行があっても、それらの行を連結するようにはして頂けないでしょ
> うか?

こちらは整形ライン関係なしに単純に改行を削除するということになると思いま
す。
改行削除というようなコマンドがあったらいいということで参考にさせていただ
きます。
現状ではIranoanさんも書かれているような方法で、マクロでできるかもしれま
せん。

[ ]
RE:29634 連結についてNo.29637
styth さん 11/03/23 18:09
 
>ヘルプのほうを修正させていただきます。
 よろしくお願いします。

>改行削除というようなコマンドがあったらいいということで参考にさせていただ
>きます。
 是非、よろしくお願いします。

[ ]
RE:29631 連結についてNo.29638
styth さん 11/03/23 18:37
 
 ありがとうございます。
 範囲選択していないと、改行削除は、うまく行くような気がします。

> 例えば、末尾のように、
>・行頭の改行
>・行頭に空白
>の場合を除外して改行を削除してから、整形をするマクロで処理したほうが良
>いと思います。
>//------------------------------------------------------------
>setcompatiblemode 0x0200;
>$s = searchbuffer;
>#s = searchoption|0x80000000;
>#s2 = searchoption2;
>begingroupundo;
>disabledraw;
>if( selecting )moveto seltopx, selendx;
 範囲選択すると、改行削除は、うまく行かないような気がします。

>else gofiletop;
>searchdown2 "\n(?![  \t])", regular, inselect;
>while( result ){
>  if( column )delete;
>  finddown2;
>}
>form;
 範囲選択に関係なく、整形しません。
 マクロのことは、詳しくないのですが、deleteで範囲解除されるのではないで
すか?

 整形は、「範囲選択されていない場合は、カーソルがある行が対象になりま
す。」と、ヘルプに記述があります。
 全文を整形したい時は、全文選択していないといけないのでは、ないでしょう
か?


[ ]
RE:29638 連結についてNo.29639
Iranoan さん 11/03/23 22:56
 
 styth さん今日は、一ユーザの Iranoan です。
>  範囲選択していないと、改行削除は、うまく行くような気がします。
 範囲選択している時帆処理が間違っていました。
 前回のマクロでは、範囲選択していると、結果的に、選択範囲以降の全ての
改行を削除するようになっていました。

>  範囲選択に関係なく、整形しません。
 ???
 条件無しで form 文を使っているので、整形はするはずですが??
 どちらにしても、行削除のルーチンが間違っていたので、末尾のマクロで確
認し直して下さい。

>  全文を整形したい時は、全文選択していないといけないのでは、ないでしょう
> か?
 「整形」の基本的な使い方としては、そうです。

 また今回のマクロも、あくまで例に過ぎないので、手抜きです。単純に
> ・行頭の改行
> ・行頭に空白
> の場合を除外して改行を
検索して、最後に見つかった改行の位置だけ整形をします。

 このあたり、どう処理したいかはケース・バイ・ケースなのも、
> マクロで処理したほうが良い
と答えた理由です。
//------------------------------------------------------------
setcompatiblemode 0x0200;
$s = searchbuffer;
#s = searchoption|0x80000000;
#s2 = searchoption2;
begingroupundo;
disabledraw;
if( selecting )#last = !xtocolumn( selendx, selendy );
else gofileend;
searchup2 "\n(?![  ])", regular, inselect;
if( #last )findup2;
while( result ){
  if( column )delete;
  findup2;
}
form;
endgroupundo;
setsearch $s, #s, #s2;

[ ]
RE:29639 連結についてNo.29643
styth さん 11/03/24 18:42
 
> また今回のマクロも、あくまで例に過ぎないので、手抜きです。単純に
>> ・行頭の改行
>> ・行頭に空白
>> の場合を除外して改行を
>検索して、最後に見つかった改行の位置だけ整形をします。
 こういう仕様であれば、okだと思います。ありがとうございます。

[ ]