colormarker関係についてNo.08689
たけとり さん 18/05/29 22:29
 
 お世話になります。
 表記について、マクロで使う上で確認&お願いしたいことがございますので、投稿
します。

Q1. レイヤーの上限、ユーザーデータの上限
マクロヘルプには
>レイヤーの数には上限があります。
>際限なく幾つもレイヤーを作るような使い方は避けてください。
とありますが、具体的にはいくつぐらいでまずい感じになるでしょうか。
 1マクロで1ファイル20レイヤー程度の作成なら支障は生じにくいでしょうか。
(1レイヤーで10個程度のマーカーを想定。)

 また、ユーザーデータは数値型をとりますが、
>数値型変数は4バイトの符号付きの値を記憶することができます。
の制限を受けるという感じでしょうか。
 ユーザーデータの部分に、順番とかではなくユニークIDみたいなのを割り振ったり、
あるいはフラグみたいなのを設定しようとした場合に、桁が足りないので、
たくさんの桁数がとれたらなぁと思っています。

Q2. 1ファイル中に、同一のユーザーデータ&レイヤーを持つ複数マーカーをすべて選
択する方法
 同じレイヤーの複数のマーカーすべてを選択する場合、
selectcolormarker レイヤー名
でいけますが、同じユーザーデータ&レイヤーのマーカーをすべて選択する場合、
nextcolormarker (0x01 | 0x04), #userData, $layerName;
if(!result)  endmacro;
beginsel;
nextcolormarker (0x02 | 0x04), #userData, $layerName;
reservemultisel;
escape;
という感じで、複数選択予約しておいてからの
selectreservedmultisel;
みたいな方法しかないでしょうか?

selectcolormarker レイヤー名, ユーザーデータ
という形式(ユーザーデータを第2引数にとる)もOKになればありがたいです。
 あるいは、0x01 | 0x02 が第1引数に含まれていたら次のマーカーの開始から終了
までを範囲選択する 0x10 を、next/prevcolormarkerの第1引数に作っていただいて、
nextcolormarker (0x01 | 0x02 | 0x04 | 0x10), #userData, $layerName;
というようにしたら、次のマーカーが範囲選択されたりできるようになるとうれしい
です。

 よろしくお願いします。

[ ]
RE:08689 colormarker関係についてNo.08690
秀丸担当 さん 18/05/30 07:59
 

>Q1. レイヤーの上限、ユーザーデータの上限

レイヤーの上限はV8.50以降では内部的に32個までですが、検索の色付けや比較結果
など内部的に使用しているものが11個くらいあるので、任意のレイヤーは21個までに
しないと不都合になる可能性がありました。
V8.50未満では内部的に16個で、任意のレイヤーは11個まででした。
ヘルプに追記しておきます。
現状で22個以上も追加できてしまうので、今後のバージョンでは内部的な上限を増や
したうえで任意のレイヤーは32個はできるようにしようと思います。

ユーザーデータは4バイトの数値相当の情報になっています。
これを増やすのは難しそうです。
なんとかするとしたら、setstaticvariableで静的な文字列変数として番号と関連付
けて覚えておく方法が考えられます。
setstaticvariable自体も上限があるので、際限なくというわけにはいきませんが、1
0個くらいのカラーマーカーならなんとかなると思います。


>Q2. 1ファイル中に、同一のユーザーデータ&レイヤーを持つ複数マーカーをすべて選
>択する方法

確かに現状ではnextcolormarkerなどの面倒な方法しかないと思います。
>selectcolormarker レイヤー名, ユーザーデータ
のような指定があったらいいと思います。
今後のバージョンで検討したいと思います。

[ ]
RE:08690 colormarker関係についてNo.08691
秀丸担当 さん 18/05/30 09:54
 

V8.83β1で上限等の修正と、selectcolormarkerを修正してみています。
setstaticvariableで現在の秀丸エディタ(共有でないほう)の上限も増やしました。

以下のページの「先行開発バージョンはこちら」からダウンロードできます。
https://hide.maruo.co.jp/software/hidemaru.html

[ ]
RE:08691 colormarker関係についてNo.08692
たけとり さん 18/05/30 23:04
 
>V8.83β1で上限等の修正と、selectcolormarkerを修正してみています。

 以下のようなマクロを"aaa~中略~aaa"といった行に対して試したところ、きちんと
"failed:33"と表示されているのを確認しました。
 ありがとうございました。

#ud = val(input("userdata","0"));
#i = 1;
while(#i <= 40){
 colormarker -1, -1, 2, 2, #ud, str(#i), lineno, column, lineno, column+1;
 if(!result){
  message "failed:" + str(#i);
  break;
 }
 right 2;
 #i = #i + 1;
}

>setstaticvariableで現在の秀丸エディタ(共有でないほう)の上限も増やしました。

 まさにこれもお願いしようかと思っていたものでした。ありがとうございます。
 拙作マクロのみでしか静的変数を使わないのであれば、32KBもあれば十分です。

 ところで、以下のようなマクロで試したところ、$sの文字数が小さい場合、☆の結
果は257個の変数名を表示していました。
(200文字の時は、#i=152でループを抜け、変数名を151個表示していました。)
 確認ですが、32KB未満であっても、変数自体も一定の個数以上は設定できない…と
いうことでしょうか?
 単なる確認なので、もし個数に上限があったとして、それが256前後であったとし
ても全くかまわないです。

 ただ、個数の上限を超えると古いのから消えていく?ようなので、この辺、result
(またはgetresultexでも結構です)あたりで、
個数の上限を超えてる(超えた、超えそう…でも結構です)旨がわかればありがたいで
す。
 よろしくお願いします。

$s = "0";
#i = 1;
while(#i <= 999){
 setstaticvariable str(#i), $s, 0;
 if(!result){
  message "failed:" + str(#i);
  break;
 }
 #i = #i + 1;
}
insert getstaticvariable("", 0);  //☆
setstaticvariable "", "";

[ ]
RE:08692 colormarker関係についてNo.08693
秀丸担当 さん 18/05/31 09:36
 

早速のご確認ありがとうございます。
setstaticvariableはサイズの上限だけでなく個数の上限もありました。
失敗した場合はresultでわかるはずでしたが、個数の場合で判断できませんでした。
resultで失敗がわかるように修正します。
というか個数の上限は考えなくてもいいように対策して修正させていただきます。

[ ]
RE:08693 colormarker関係についてNo.08698
たけとり さん 18/06/07 22:11
 
 8.83 Beta 2 にて、(変数の個数が256個前後ではなくて、)容量が32KBぐらいにな
るところで、resultがfalseになることを確認しました。
 対応、ありがとうございました。

[ ]