カラーマーカーで確認 & その他No.07963
h-tom さん 13/06/11 23:10
 

h-tom です。

カラーマーカで確認です。
  カラーマーカーにレイヤーが追加されましたが、使用しているレイヤー名をマクロ
から
  取得する方法って、現状ないですよね?

その他
  鬼車/鬼雲を使用した自作の正規表現DLLで、バグがあったので調査していたのです
が、
  以前は、"Jre2GetMatchInfo_HmJre" が呼ばれていたと思ったのですが、現状だと
  "Jre2GetMatchInfo"しか呼ばれていません。
  この辺り、何か変更があったのでしょうか?
  #互換DLLが問題なく動いているので、気にしなくてもいいのですが・・・。
  #見慣れない関数もあったので、ちょっと気になってます。

[ ]
RE:07963 カラーマーカーで確認 & そのNo.07964
秀丸担当 さん 13/06/12 09:57
 

>  カラーマーカーにレイヤーが追加されましたが、使用しているレイヤー名をマクロ
>から
>  取得する方法って、現状ないですよね?

確かに既にあるレイヤー名を取得する方法は無いです。
もし必要であれば何らかの方法を検討します。

>  以前は、"Jre2GetMatchInfo_HmJre" が呼ばれていたと思ったのですが、現状だと
>  "Jre2GetMatchInfo"しか呼ばれていません。
>  この辺り、何か変更があったのでしょうか?

調べてみたところ、Jre2GetMatchInfo_HmJreはV8.01β6のHmJre.dll V3.18のと
きに廃止になり別の関数名に変更になっていました。
代わりにJre2GetMatchInfo_V318という関数名で、HmJre.dllの独自の情報として、
あいまい検索のパラメータも同時に渡すために使われていました。

[ ]
RE:07964 カラーマーカーで確認 & そのNo.07965
h-tom さん 13/06/12 23:28
 

h-tom です。

>確かに既にあるレイヤー名を取得する方法は無いです。
>もし必要であれば何らかの方法を検討します。
現状で困っているという事はないのですが、取得できた方がいいと思います。

レイヤーを使うと、メニューから操作ができないので、他の人が作ったマクロで
レイヤー指定のカラーマーカーを使った場合、ソース見ないと、クリアなど操作
ができないってのも、不便ですし。(取得出来れば、何とかできる?)

いろいろ考えていたら、疑問が出てきました。
・レイヤーって、どの程度の数、作成できるものなんでしょうか?
  限度があるなら、既存のレイヤー名が取得出来れば、そこから算出可能?
 
・一度レイヤーを作成してしまうと、そのレイヤーの寿命って、ウィンドウが
  閉じられるまででしょうか?
  それとも、マーカーを全て削除すると、レイヤーは削除されるんでしょうか?
 
  レイヤーは、マクロの一時的な処理に使う場合が多い様な気がします。
  上限にも関係しますが、かぶらないようにユニークな名前とかつけてしまうと、
  一回しか使われないレイヤーが、たくさんできる場合もあるのかな?


>調べてみたところ、Jre2GetMatchInfo_HmJreはV8.01β6のHmJre.dll V3.18のと
>きに廃止になり別の関数名に変更になっていました。
>代わりにJre2GetMatchInfo_V318という関数名で、HmJre.dllの独自の情報として、
>あいまい検索のパラメータも同時に渡すために使われていました。
hmjre.dllの変更履歴確認しました。
各種判定を行うために、検索実行時のあいまい検索パラメータを渡しているって、
事ですよね?
(「あいまい検索の方法」が、変わったという事ではない。)

[ ]
RE:07965 カラーマーカーで確認 & そのNo.07967
秀丸担当 さん 13/06/13 09:45
 

>レイヤーを使うと、メニューから操作ができないので、他の人が作ったマクロで
>レイヤー指定のカラーマーカーを使った場合、ソース見ないと、クリアなど操作
>ができないってのも、不便ですし。(取得出来れば、何とかできる?)

使われているレイヤーを取得する方法を検討します。

>いろいろ考えていたら、疑問が出てきました。
>・レイヤーって、どの程度の数、作成できるものなんでしょうか?
>  限度があるなら、既存のレイヤー名が取得出来れば、そこから算出可能?

レイヤーには上限があって、内部的な予約されているものと合わせて現状16個ま
でとかなり少ないです。
かなり少なくしているのは、同じ場所に何重にもレイヤーをかけることができて
しまうとパフォーマンスが悪くなることも考え少なく設定していました。

>・一度レイヤーを作成してしまうと、そのレイヤーの寿命って、ウィンドウが
>  閉じられるまででしょうか?
>  それとも、マーカーを全て削除すると、レイヤーは削除されるんでしょうか?

ファイルが閉じられるまでか、または同一レイヤーでカラーマーカーされている
ものが全て消えるまでになります。
別次元の存在となっていて、コマンドの「一時的なカラーマーカーを全て消去」
やdeletecolormarkerall;でレイヤー名指定が無い場合は、名前付きレイヤーは
消えることは無いです。

>  レイヤーは、マクロの一時的な処理に使う場合が多い様な気がします。
>  上限にも関係しますが、かぶらないようにユニークな名前とかつけてしまうと、
>  一回しか使われないレイヤーが、たくさんできる場合もあるのかな?

上限はかなり少なく設定していて、例えば $layername = "xx" + #count; のよ
うに際限なくユニークな名前を付けていくことはお勧めできないというか、16個
までなので事実上できないと思います。
レイヤー名の付け方についての注意書きもヘルプに追記しておきます。

[ ]
RE:07965 カラーマーカーで確認 & そのNo.07968
秀まるお さん 13/06/13 10:30
 
 HmJre.dllについてコメントさせていただきます。

 まず、Jre2GetMatchInfoって関数が以前からありつつも
Jre2GetMatchInfo_HmJreって関数を後から追加したのはどうしてかというと…

 Jre2GetMatchInfo関数のパラメータは、

BOOL EXTAPI Jre2GetMatchInfo( LPJRE2 pJre, LPSTR pszTarget );

 で、Jre2GetMatchInfo_HmJreの方は、実は

BOOL EXTAPI Jre2GetMatchInfo_HmJre( LPJRE2 pJre, LPSTR pszTarget
             , int xEnd );

 のようになっていて、pszTargetで渡される文字列の長さを「xEnd」で指定す
る仕組みになってるだけだったりします。それで、HmJre.dllがstrlenを呼ぶの
が1回省略されて、ほんの少しだけ高速化するという感じになります。特に強調
表示の時に、これによる高速化が効くことを確認して、この関数を追加しました。

 で、問題のJre2GetMatchInfo_V318ですが、これは改版履歴にある通り、「単
語の検索」と「あいまい検索」を両方ONにして検索する時に起きるバグ修正用に、
上記の「_HmJre」の関数からさらにパラメータを追加した物になります。

 追加されたパラメータでは、「単語の検索」のON/OFF状態と、さらに、「動作
環境・検索」の
 「単語の検索で"abc"を検索する時、"abc123"にはヒットさせない」
 「単語の検索で"ワード"を検索する時、"ワードW"にはヒットさせない」

 の値をビットでorして渡しています。その情報を使って正しく「単語の検索+
あいまい検索」を実現しています。

 秀丸エディタの方では、正規表現DLL側にもしもJre2GetMatchInfo_V318がエク
スポートされてればそれを呼び、無ければJre2GetMatchInfoを呼ぶ、という風に
なってまして、HmJre.dllが指定されてれば、基本的にはJre2GetMatchInfo_V318
の方を呼んでるはずだと思います。

 あと、HmJre.dllの改版履歴は、今ちょっと非公開にしてしまってる(どこか
らもリンクされてない)んですが、やはりこういう問い合わせの時に自分自身が
無いと困るので、ちゃんと書くようにしつつ、どこかにリンクも貼るようにさせ
ていただきます。

[ ]
RE:07968 カラーマーカーで確認 & そのNo.07971
h-tom さん 13/06/13 20:57
 

h-tom です。
いろいろ細かい話で申し訳ないです。

> で、問題のJre2GetMatchInfo_V318ですが、これは改版履歴にある通り、「単
>語の検索」と「あいまい検索」を両方ONにして検索する時に起きるバグ修正用に、
>上記の「_HmJre」の関数からさらにパラメータを追加した物になります。
<省 略>
> の値をビットでorして渡しています。その情報を使って正しく「単語の検索+
>あいまい検索」を実現しています。
前回の問いあわせで、Jre2GetMatchInfo_V318は、あいまい検索関連のパラメータ
追加のみとの事でした。
HMJRE.DLLの変更内容を見ても、マッチ位置の判定用に、あいまい検索関連の
パラメータを追加しているだけとは思いましたが、もしかしたら、あいまい検索
自体も変更があったのではないかと思い、確認したかったのです。
(あいまい検索関連でも、Fuzzy_SetOptionAtJre等、見慣れない関数があったり
したので。普通の検索とは関係ないと思いましたが、念の為。)


> あと、HmJre.dllの改版履歴は、今ちょっと非公開にしてしまってる(どこか
>らもリンクされてない)んですが、やはりこういう問い合わせの時に自分自身が
>無いと困るので、ちゃんと書くようにしつつ、どこかにリンクも貼るようにさせ
>ていただきます。
HMJRE.DLLの履歴は、昨日捜した時に、秀丸エディタの履歴の所に、リンクがあり
ましたよ。ちょっと見つけるのが大変でしたが。

[ ]
RE:07971 カラーマーカーで確認 & そのNo.07973
秀まるお さん 13/06/15 10:41
 
 今さらですがコメントさせていただきます。

> パラメータを追加しているだけとは思いましたが、もしかしたら、あいまい検索
> 自体も変更があったのではないかと思い、確認したかったのです。

 あいまい検索の中の処理自体もいろいろ改良してはいますが、呼び出しインタ
フェースの互換性はキープしています。JREFUZZY.Hの中身も

http://homepage3.nifty.com/kons/hidemaru/helpsite/hmjre/html/0007_JREFUZZY_INCLUDE.html

 で公開してる内容と今現在の最新版の内容も同じでした。

> (あいまい検索関連でも、Fuzzy_SetOptionAtJre等、見慣れない関数があったり
> したので。普通の検索とは関係ないと思いましたが、念の為。)

 Fuzzy_SetOptionAtJre関数は、JRE2構造体の中に入ってるJREFUZZYDATAの中の
フラグをセットするように追加した関数のようですが、秀丸エディタからは使わ
れてないし、ヘルプにもJREFUZZY.Hにも追加してないようです。(単に書き忘れ
ただけかもしれないけど、別に無くても困る関数でも無いようです)


void WINAPI Fuzzy_SetOptionAtJre( JRE2* pJre, DWORD flags ) {
    JREFUZZYDATA*   pFuzzy = Fuzzy_GetFuzzyDataInJre( pJre );
    pFuzzy->flags = flags;
}

 こんな関数になっていました。

[ ]
RE:07971 カラーマーカーで確認 & そのNo.07974
秀まるお さん 13/06/15 10:41
 
 あと、HmJre.dllの改版履歴へのリンクですが、たしかにありました。

 失礼しました。

[ ]