tabstopについてNo.09446
styth さん 21/06/05 10:14
 
 refreshtabstop   「列の幅のテキスト幅揃えを更新」
 というコマンドはあるのですが、
「この列のテキスト幅揃えを更新」というコマンドは、ないのでしょうか?

 それと、一番右の列の番号を知る方法を教えて頂きたいのですが、よろしくお
願いいたします。(実際のデータの数が、行によって、右端で1,2個多くて、ず
れています。)
 linecount的なものはないでしょうか?

[ ]
RE:09446 追加の要望No.09447
styth さん 21/06/06 11:44
 
backtab;
backtab;

 と書くところを

backtab 2;

 という風には、出来ないでしょう?
 よろしくお願いいたします。

[ ]
RE:09446 tabstopについてNo.09448
h-tom さん 21/06/06 18:20
 
h-tom です。

> それと、一番右の列の番号を知る方法を教えて頂きたいのですが、よろしくお
>願いいたします。(実際のデータの数が、行によって、右端で1,2個多くて、ず
>れています。)
行末に移動して、tabcolumn 見ればいいのでは?

[ ]
RE:09446 tabstopについてNo.09450
秀丸担当 さん 21/06/07 10:47
 

「この列のテキスト幅揃えを更新」に相当するコマンドなどはありませんでした。
V8.98β11でrefreshtabstop_current等を追加します。

右端の列を知るには、h-tomさんも書かれている通り、行末に移動してからtabcolumn
で知ることができると思います。

backtab 2;といったような数値指定は確かにできないです。
そういう指定もできたらいいので、ご意見参考にします。
現状でできそうな方法として、backtabを複数回でもいいですが、selectcolumnで座
標のように考えることもできそうでした。
例:
disabledraw;
#a=-2;
selectcolumn tabcolumn+#a,tabcolumn+#a,lineno,lineno;
escape;

[ ]
RE:09450 tabstopについてNo.09451
styth さん 21/06/07 17:47
 
>「この列のテキスト幅揃えを更新」に相当するコマンドなどはありませんでした。
>V8.98β11でrefreshtabstop_current等を追加します。
 よろしくお願いいたします。

>右端の列を知るには、h-tomさんも書かれている通り、行末に移動してからtabcolum
>nで知ることができると思います。



(1行目)A\t
(2行目)B\tB\tB
     ・
     ・
     ・

 上記のような場合、カーソルを、行末に移動したい行が2行目なら、良いんで
すが、1行目ではだめです。
 一番、データの多い行のtabcolumnで知るには、どうすれば良いでしょうか?



>backtab 2;といったような数値指定は確かにできないです。
>そういう指定もできたらいいので、ご意見参考にします。
 よろしくお願いいたします。

[ ]
RE:09451 tabstopについてNo.09452
h-tom さん 21/06/07 20:01
 
h-tom です。

>(1行目)A\t
>(2行目)B\tB\tB
>     ・
>     ・
>     ・
>
> 上記のような場合、カーソルを、行末に移動したい行が2行目なら、良いんで
>すが、1行目ではだめです。
> 一番、データの多い行のtabcolumnで知るには、どうすれば良いでしょうか?
最大の tabcolumn を示すキーワードはないので、全行総当たりするしかないのでは?

まぁ、検索を使うのが楽そうですが。
1)1行目が基準なら、1行目の tabcolumn を取得
2)取得した値を元に正規表現パターンを作成(1行目より多い物にマッチするようにする)
3)作成した正規表現パターンを使って検索し、マッチした箇所の tabcolumn を調べる
4)マッチしなくなるまで検索し、最大値を求める
こんな感じ。

[ ]
RE:09452 tabstopについてNo.09454
秀丸担当 さん 21/06/08 15:56
 

全行のうちで最大のtabcolumnを一発で取得する方法はありませんでした。

一応、内部的には最大の列に相当する情報はあります。
[その他]→[ファイルタイプ別の設定の設定]→[デザイン]の、「折り返し桁数の縦
線」は、TSV/CSVモードの場合は自動計算後の最大列の位置を表示するようになって
います。
この値を取得できるようにしてもいいかと思って試してみたのですが、編集直後のテ
キスト幅揃えが完了していないときとかは正確ではなかったので、結局のところ全行
チェックして最大値を得るしかなさそうでした。
どちらにしてもマクロとして一発で取得できるキーワードがあったらいいので、そう
いうものを検討しようと思います。

[ ]
RE:09454 tabstopについてNo.09462
styth さん 21/06/14 08:59
 
>どちらにしてもマクロとして一発で取得できるキーワードがあったらいいので、そ
>ういうものを検討しようと思います。

> 2021/06/10 V8.98β12
>tabcolumnmaxキーワード追加。
 ありがとうございます。
 ところで、どの行がこれに該当するか(一番、データの多い行)、を知る方法
を教えて下さい。
 よろしくお願いいたします。

[ ]
RE:09462 tabstopについてNo.09463
秀丸担当 さん 21/06/14 13:10
 

どの行が一番長いかを知るには、キーワードとして用意するのもちょっと違うと思う
ので、やっぱり総当たりで調べるしかないと思います。

例えば、一番長い行にジャンプするとしたら以下のような感じです。

disabledraw;
#i = 0;
#maxtabcolumn = 0;
#maxy =0;
while( #i < linecount ) {
    moveto linelen[#i], #i;
    #a=tabcolumn;
    if( #a > #maxtabcolumn ) {
        #maxtabcolumn = #a;
        #maxy = y;
    }
    #i=#i+1;
}
moveto 0,#maxy;

[ ]
RE:09463 tabstopについてNo.09467
styth さん 21/06/16 08:22
 
>例えば、一番長い行にジャンプするとしたら以下のような感じです。
 一番長い行が、複数個あった場合、その行全部を反転(選択)表示したいのですが、
やり方がわかりません。
 キー操作の記録で、ctrl+行番号クリックを複数回、実行しましたが、駄目で
した。

[ ]
RE:09467 tabstopについてNo.09468
秀丸担当 さん 21/06/16 10:28
 

複数選択は、キー操作で任意の場所を増やしていくにはカーソル移動した時点で選択
は消えるため、「複数選択予約」と「複数選択予約を選択」コマンドを使います。
複数選択に追加したいところを「複数選択予約」で追加していって、最後に「複数選
択予約を選択」をすると、まとめて選択されます。

マクロの場合は、reservemultiselとselectreservedmultiselに相当します。

例えば、1行おきに3行選択する場合、以下のような操作になります。
・行の選択
・複数選択予約
・下矢印2回
・行の選択
・複数選択予約
・下矢印2回
・行の選択
・複数選択予約
・複数選択予約を選択

キー操作の記録をすると以下のようなマクロになります。

    setcompatiblemode 0x10000F;
    selectline;
    reservemultisel;
    down 2;
    selectline;
    reservemultisel;
    down 2;
    selectline;
    reservemultisel;
    selectreservedmultisel;

複数選択に対応したマクロはsetcompatiblemode 0x100000;が必要で、これも自動で
付きます。

[ ]
RE:09462 tabstopについてNo.09496
styth さん 21/07/02 09:53
 
>>どちらにしてもマクロとして一発で取得できるキーワードがあったらいいので、そ
>ういうものを検討しようと思います。
>> 2021/06/10 V8.98β12
>>tabcolumnmaxキーワード追加。
 浮動小数点数版で、

message str(tabcolumnmax);
message tabcolumnmax;

 を実行しましたが、エラーになります。ベータ版では、確認しませんでした。

[ ]
RE:09496 tabcolumnmaxについてNo.09500
styth さん 21/07/07 07:45
 
 見落とされていると、思います。
 お時間のある時に、ご確認ください。
 よろしくお願いいたします。

[ ]
RE:09500 tabcolumnmaxについてNo.09501
秀丸担当 さん 21/07/07 09:01
 

すみません。見落としていました。
tabcolumnmaxはV8.98β12,13ではできていたのですが、β14,正式でできないように
なってしまっていました。
とりあえずV9.00β2で再びできるようにして、V8.99を出す場合はそちらでも修正し
ようと思います。

[ ]