あいまい検索設定をマクロで行なう方法No.07146
rosegardenyk さん 12/10/18 22:33
 
マクロ初心者の rosegarden です。
検索(Ctrl+F) からあいまい検索(F)設定で行う設定内容をマクロから行いたいの
ですがやり方がわかりません。

マクロから、こんなことを設定したいです。
☑半角全角を区別しない
☑空白・タブ文字を無視する
☑特定文字を無視する … [,-術]の3文字

よろしくご教示ください。





[ ]
RE:07146 あいまい検索設定をマクロで行なNo.07147
Iranoan さん 12/10/18 23:00
 
 rosegardenyk さん今日は、Iranoan です。
> マクロから、こんなことを設定したいです。
> ☑半角全角を区別しない
> ☑空白・タブ文字を無視する
> ☑特定文字を無視する … [,-術]の3文字
 これは HmJre.dll の設定になるので、
(1) レジストリの書き換え
(2) レジストリの値を現在の秀丸に反映
(3) あいまい検索のフラグを ON で検索
となります。

 結果、次の様になると思います。
//------------------------------------------------------------
openreg "CURRENTUSER", "Software\\Hidemaruo\\HmJre";
writeregnum "FuzzyFlag", 0xA84;
closereg;
loaddll "hmjre.dll";
##tmp = dllfunc("EnvChanged");
freedll;
searchdown $s, fuzzy;

[ ]
RE:07147 あいまい検索設定をマクロで行なNo.07148
秀まるお2 さん 12/10/19 17:50
 
 一応、Iranoanさんのマクロの通りなんですが、

> (2) レジストリの値を現在の秀丸に反映

 「現在の秀丸に反映」の部分は、「HmJre.dllに反映」というか、HmJre.dllの
EnvChanged関数を呼び出してやる必要があるって意味になります。

 Iranoanさんの書いてくださったマクロはちゃんとそのようになっています。

[ ]
RE:07147 あいまい検索設定をマクロで行なNo.07149
rosegardenyk さん 12/10/19 23:42
 
a.「半角全角を区別しない」にチェックを入れる
b.「空白・タブ文字を無視する」にチェックを入れる
c.「特定文字を無視する」のboxに[,-術]の3文字を入れる

これは HmJre.dll の設定になるので、
(1) レジストリの書き換え
(2) レジストリの値を現在の秀丸に反映
(3) あいまい検索のフラグを ON で検索
となります。

> 結果、次の様になると思います。
>//------------------------------------------------------------
>openreg "CURRENTUSER", "Software\\Hidemaruo\\HmJre";
>writeregnum "FuzzyFlag", 0xA84;
>closereg;
>loaddll "hmjre.dll";
>##tmp = dllfunc("EnvChanged");
>freedll;
>searchdown $s, fuzzy;

どれが a.の設定で、どれが b. c. の設定だかわかりません。
例示だとしたら、すべて具体的に教えていただけると助かります。
"FuzzyFlag", 0xA84;の意味もわかりません。
c.のレジストリ設定では ,-術 の無視対象文字が設定内容の一部に出てくるのか
と思ってました。みあたらないので戸惑っています。
当方の力不足で、すみません。 どうぞ、よろしくお願いします。

[ ]
RE:07149 あいまい検索設定をマクロで行なNo.07150
Iranoan さん 12/10/20 00:30
 
 rosegardenyk さん今日は、Iranoan です。
> どれが a.の設定で、どれが b. c. の設定だかわかりません。
に付いては、
> ☑半角全角を区別しない
> ☑空白・タブ文字を無視する
> ☑特定文字を無視する … [,-術]の3文字
との事なので、
> "FuzzyFlag", 0xA84;の意味もわかりません。
は、この 3 つが ON のマクロにしました。これ一つで個々のオプションの
ON/OFF の状態を表します。writeregnum で最後に指定する数字 (上記例では
16 進数) はビット毎の OR 演算なので、上記以外のオプションでどうなるか
の詳細は、実際に変更してレジストリを見て下さい。
> c.のレジストリ設定では ,-術 の無視対象文字が設定内容
は、CustomIgnore に有ります。マクロでの指定は、
writeregstr "CustomIgnore", ",-術";
になります。

[ ]
RE:07150 あいまい検索設定をマクロで行なNo.07151
秀まるお2 さん 12/10/20 21:01
 
 FuzzyFlagの値の、それぞれのビットの意味は、すみませんがC++言語ソース
コードそのまま書かせていただきますと、

// JreFuzzy.h
#define FUZZYOPTION_NOCASE              1       // 半角英数字の大文字/小文
字を区別しない
//廃止#define FUZZYOPTION_NOCASEZENKAKU     2       // 全角英数字の大文字/
小文字を区別しない
#define FUZZYOPTION_NOHANZEN            4       // 半角/全角を区別しない
#define FUZZYOPTION_NOHIRAKATA          8       // ひらがなとカタカナを区別
しない
#define FUZZYOPTION_NOBIGSMALLKANA      0x10    // 大きい「あ」と小さい
「ぁ」を区別しない
#define FUZZYOPTION_NODAKUON            0x20    // 濁音、半濁音を区別しない。
「は」、「ば」、「ぱ」を同一視する。
#define FUZZYOPTION_KANAHYPHEN          0x40    // かなの「ー」と英数の
「−」を同一視する
#define FUZZYOPTION_NOSPACE             0x80    // 空白/タブ文字を無視する
#define FUZZYOPTION_NORETURN            0x100   // 改行を無視する
#define FUZZYOPTION_CUSTOMIGNORE        0x200   // 特定文字を無視する。V1.09
から。
#define FUZZYOPTION_NOBREAKSPACE        0x400   // V1.88 2007.11.01 No-Break
 Space (ユニコードで0xA0)を半角空白と同一視する。
                                                // NoBreakSpaceの文字コード
: 欧文(CP=1252)だと0xA0

#define FUZZYOPTION_LOCALHEAP           0x800   // 2008.1.21 V1.92 自前でHea
pCreateしたヒープを使うオプション。


#define FUZZYOPTION_CUSTOM1         0x00010000
#define FUZZYOPTION_CUSTOM2         0x00020000
#define FUZZYOPTION_CUSTOM3         0x00040000
#define FUZZYOPTION_CUSTOM4         0x00080000

#define FUZZYOPTION_NORETURN_MASK       0x70000000  // 0〜7 --> 1〜8に対応。
#define FUZZYOPTION_NORETURN_SHIFT      28          // 28ビットシフトさせる。


 のようになります。

 FUZZYOPTION_NORETURN_MASKの所は、改行を無視する場合の最大改行数になり
ます。

[ ]
RE:07151 あいまい検索設定をマクロで行なNo.07152
rosegardenyk さん 12/10/20 23:22
 
Test macro 作って、いろいろ試して REGEDIT で確かめたらやっとわかりました。
Iranoanさん、秀まるお2 さんご教示ありがとうございました。

>#define FUZZYOPTION_NOHANZEN            4       // 半角/全角を区別しない
>#define FUZZYOPTION_NOSPACE             0x80    // 空白/タブ文字を無視する
>#define FUZZYOPTION_NORETURN            0x100   // 改行を無視する
>#define FUZZYOPTION_CUSTOMIGNORE        0x200   // 特定文字を無視する。V1.0
>9から。
>#define FUZZYOPTION_LOCALHEAP           0x800   // 2008.1.21 V1.92 自前でHe
>apCreateしたヒープを使うオプション。

a.「半角全角を区別しない」にチェックを入れる
b.「空白・タブ文字を無視する」にチェックを入れる
c.「特定文字を無視する」にチェックを入れる
このboxに[,-術]の3文字を入れる
だけだと、REGEDITで見ても、レジストリが 0x284なのでまごついてしまいました。

上記 0x200 + 0x800(ヒープ領域) = 0xA00 なので
a, b, c. + ヒープ領域 ON で 0xA84 というわけなのですね。

ヒープ領域についてはHelpに記載がありませんが、やはりチェックを入れといた方が
良いのでしょうか?




[ ]
RE:07152 あいまい検索設定をマクロで行なNo.07153
秀まるお2 さん 12/10/20 23:31
 
> ヒープ領域についてはHelpに記載がありませんが、やはりチェックを入れといた方が
> 良いのでしょうか?

 このオプションは、昔、メモリ不足になって落ちてしまうユーザー様がおられ
て、そのユーザー様に調べてもらう用に、いわゆるデバッグのために追加したオ
プションになります。

 普通はOFFで使っていただく方がいいです。

[ ]