行選択についてNo.39305
styth さん 21/10/26 09:08
 
 秀丸エディタのヘルプ 目次− 動作環境− 編集−高度な編集2、カーソルの動作 で、

>行番号クリックの行選択時のカーソル位置は範囲選択の末尾
> 行番号をクリックまたはドラッグした場合には行選択を行いますが、ドラッグせ
>ずに1行だけの行選択をする場合、カーソル位置は範囲選択の先頭にあります。
> このオプションをONにすると、1行だけの行選択であればカーソル位置は範囲選
>択の末尾になります。
 「末尾」の意味なんですが、画面を見る限りは、次行の行頭ということだと思いま
すが、「末尾」と言われると、行末のような気がしてなりません。

 このオプションをONにすると、1行だけの行選択であればカーソル位置は範囲選択
の「次行の行頭」になります。

 的な説明であれば、しっくりします。

 ところで、お願い(要望)なんですが

>selectlineは、行単位の選択を行います。(エディタ的な行単位、改行まで)
>selectline 数値
 これをたびたび使うのですが、「改行まで」というのを忘れてしまい、悩むことが
あります。
 マクロで、この改行を除去していますが、selectline 数値、の数値に何かを指定
したら、

 selectline 数値n
 行単位の選択を行います。(エディタ的な行単位、「行末(改行の前)まで」)

 というオプション追加というわけには、いかないでしょうか?
 ご検討のほど、よろしくお願いいたします。

 それと、質問なんですが、
 「行番号クリックの行選択時のカーソル位置は範囲選択の末尾」がONかOFFか、マ
クロで知りたいのですが、教えて下さい。
 OFFなら、ONにする方法を、教えて下さい。

(追伸)
>マクロのleft;やright;は、通常このオプションがOFF相当で動作するので、マクロ
>でもON相当にするには、setcompatiblemodeで0x10000000を指定してください。
 この記述を、秀丸エディタマクロヘルプにも、追記して頂けないでしょうか。ちょ
っと探しましたが見当たりませんでした。

[ ]
RE:39305 行選択についてNo.39306
秀丸担当 さん 21/10/26 12:28
 

「行番号クリックの行選択時のカーソル位置は範囲選択の末尾」は、確かにちょっと
わかりづらいかもしれません。次行の行頭という説明も補足として書いておこうと思
います。

selectlineで改行を含まないオプションを作ることは不可能ではないと思いますが、
マクロを書いて選択するのであれば、改行を含まないように選択することはそれほど
難しいことではないと思います。
既に行われていると思いますが、マクロ上でそうなるように選択したり、除去したり
といったことをしてほしいところです。
例えばカーソルのある行の一行の選択であれば、
golinetop2;
beginsel;
golineend2;
endsel;
としてできます。
「行番号クリックの行選択時のカーソル位置は範囲選択の末尾」のON/OFFを取得した
り設定したりする方法は、現状では用意されていません。

setcompatiblemodeの0x10000000については、V9.00のβ版であれば、setcompatiblem
odeのページに書かれていますが、up, down, right, left文のページにも書かれてい
ます。
どこか他に適切なページがあったら教えてもらえると助かります。

[ ]
RE:39306 行選択についてNo.39307
styth さん 21/10/27 09:11
 
>selectlineで改行を含まないオプションを作ることは不可能ではないと思いますが、
>マクロを書いて選択するのであれば、改行を含まないように選択することはそれほ
>ど難しいことではないと思います。
>既に行われていると思いますが、マクロ上でそうなるように選択したり、除去した
>りといったことをしてほしいところです。
 分かりました。そうすることにします。
 ところで、左クリックのキー割り当ては、無いみたいなんで、無理だとは思うので
すが、
 左クリックしたときに、「カーソルが行番号上であれば、1行選択(自作マクロ
で)。じゃない時は、普通(従来通り)」ということは、出来ないでしょうか?

>例えばカーソルのある行の一行の選択であれば、
 一行の選択の判定は、
 「行番号クリックの行選択時のカーソル位置は範囲選択の末尾」のON/OF、で、
if ( seltopy == selendy && seltopx == 0 && selendx == 0 ) {} offの時
if ( seltopy == selendy && seltopx == 0 && selendx+1 == 0 ) {} onの時
 でよろしいでしょうか?もっと簡潔なやり方があれば、教えて頂きたいのですが。

>「行番号クリックの行選択時のカーソル位置は範囲選択の末尾」のON/OFFを取得し
>たり設定したりする方法は、現状では用意されていません。
 レジストリーのどこかを使って何とか出来ないでしょうか?

>setcompatiblemodeの0x10000000については、V9.00のβ版であれば、setcompatible
>modeのページに書かれていますが、up, down, right, left文のページにも書かれて
>います。
 失礼しました。確認不足でした。

[ ]
RE:39307 行選択についてNo.39308
秀丸担当 さん 21/10/27 10:15
 

左クリックについては、基本的な動作のためキー割り当てしたりマクロを割り当てた
りすることはできないです。すみません。

行選択されているかどうかの判定は、まず、selectingの判定があったほうがいいで
す。選択されていない場合、以前のseltopx等の値が残ったままになっている場合が
あります。

折り返しがあるかもしれないので、折り返しを含んで改行の次までの選択かどうかを
判定するとしたら、seltopcolumn, seltoplineno, seltoplineno, selendlinenoで調
べたほうがいいです。

if(selecting){
  if ( (seltoplineno+1) == selendlineno && seltopcolumn == 0 && selendcolumn
 == 0 ) {
    //
  }
}

「行番号クリックの行選択時のカーソル位置は範囲選択の末尾」は、カーソル位置が
違うだけで、範囲選択が変わるということではないので、判定は同じでいいです。

[ ]