整形後も選択範囲を維持したいNo.39139
styth さん 21/08/25 09:35
 
 例えば、以下のように、2行選択しておいて、整形コマンドを実行(整形する
位置は適当です)すると、4行になったりします。
 選択範囲(選択文字列)を同じもののままに維持する設定等はあるんでしょう
か?

実行前
1行目 ああああああああああああああああああああああ
2行目 いいいいいいいいいいいいいいいいいいい

実行後
1行目 あああああああああああああああ
2行目 あああああああ
3行目 いいいいいいいいいいいいいいい
4行目 いいい

 整形を実行しても、1〜4行目が反転表示(選択状態)になっているようにした
いのですが、よろしくお願いいたします。

[ ]
RE:39139 整形後も選択範囲を維持したいNo.39140
秀丸担当 さん 21/08/25 11:41
 

範囲選択した状態からの整形コマンドは、確かに範囲選択は維持されていませんでし
た。
維持されるように仕様変更してしまっても影響は少なそうではありますが、慎重に考
えます。

マクロを使ってもよければ、マクロで維持するようにする方法も考えられます。
カラーマーカーを使うと維持するのがやりやすいです。
例:
$layer="testformlayer";
if(selecting){
    selectline 1;
    colormarker 0xff,-1,-1,0,0,$layer;
    form;
    selectcolormarker $layer;
    deletecolormarkerall $layer;
} else {
    form;
}
endmacro;

[ ]
RE:39140 整形後も選択範囲を維持したいNo.39141
styth さん 21/08/25 23:31
 
>範囲選択した状態からの整形コマンドは、確かに範囲選択は維持されていませんで
>した。
>維持されるように仕様変更してしまっても影響は少なそうではありますが、慎重に
>考えます。
 よろしくお願いいたします。

>マクロを使ってもよければ、マクロで維持するようにする方法も考えられます。
>カラーマーカーを使うと維持するのがやりやすいです。
 ありがとうございます。
 こちらを(も)、使わせていただきます。

[ ]
RE:39140 選択範囲文字色を戻したNo.39146
styth さん 21/08/28 22:48
 
$layer="testformlayer";
if(selecting){
    selectline 1;
    colormarker 0xff,-1,-1,0,0,$layer;
    execmacro "form00";
    selectcolormarker $layer;
    deletecolormarkerall $layer;
}

 例えば、上記のような使い方をするとして、
 "form00"この中で、endmacroallすると、文字色が赤のままです。
 文字色を元に戻したいので、

 "form00"の冒頭で
$layer="testformlayer";
if(selecting){
    selectline 1;
    colormarker 0xff,-1,-1,0,0,$layer;
}
 を入れて、

 特別の終わり方をする時の処理として、
selectcolormarker $layer;
deletecolormarkerall $layer;
endmacroall;

 としています。
 これで、一応、文字色は黒になりますが、他に方法はないでしょうか?

 "form00"の冒頭での記述(上記コード)なしで、以下だけの記述では、だめでした。
deletecolormarkerall $layer;
endmacroall;

 そもそも、execmacroを使わなければ、良いのかも知れませんが、よろしくお願い
いたします。

[ ]
RE:39146 選択範囲文字色を戻したNo.39151
秀丸担当 さん 21/08/30 10:11
 

execmacroで呼ばれるマクロの変数名は、呼ばれた元のマクロとは別の空間になって
います。
form00のほうで以下のようにだけすると、$layerは""なので何も起きないです。
deletecolormarkerall $layer;
endmacroall;

form00のほうでも$layer="testformlayer";とするか、変数を使わずに直接書くとい
いです。
例:
deletecolormarkerall "testformlayer";
endmacroall;

[ ]