新旧漢字・異体漢字・同義別体同時検索No.06694
hideya さん 11/07/24 14:40
 
秀まるお 様

すみません。
前にこんなのがあったと思うんですが、

#sinkyu.txt 新旧漢字・異体漢字・同義別体同時検索。gkk.pl用

使い方を忘れてしまって覚えがないんですね。
ちょっとヒントを教えていただけないんでしょうか?
自分のテキストには漢字の新字と旧字、異体字、同義別体字が多いので、……。
それと、日本語バージョン8.10をインストールしても異なる言語のOS上では新旧文
字のあいまい検索が出来ないことがわかりました。
だから先のマクロの辞書を使って検索する方法が知りたいわけです。
大変申し訳ないんですがどうぞよろしくお願いします。

ひでや

[ ]
RE:06694 新旧漢字・異体漢字・同義別体同No.06696
秀まるお2 さん 11/07/24 15:00
 
 このファイルは、あいまい検索でのカスタム同一視指定ファイルとして使う用
の物だと思います。

 秀丸エディタの検索ダイアログで「あいまい検索」をONにして、そこの右側の
「設定...」を押して出てくるウィンドウの「カスタム1」の所の右側の「参照」
ボタンを押してそのファイルを指定してやって、あとはそこのチェックをONにし
て検索すればいいってことだと思います。

 ただ、先ほどの話にもある通り、英語版秀丸エディタだとあいまい検索が指定
出来ないようです。日本語版でならうまく検索出来ると思います。

[ ]
RE:06696 新旧漢字・異体漢字・同義別体同No.06697
hideya さん 11/07/24 16:13
 
秀まるお 様

ただただ本当に有り難うございます。!!!
コメントを頂いて本当に大喜びでした。

ところで、この前に載せました私のマクロ構文では
正規表現とあいまい検索の構文をどのように記入すればよいんでしょうか?
御教授どうぞよろしくお願いします。

正規表現 ON
あいまい検索 ON 
辞書位置 指定


ーーーーーーーーーーーーーーーーーーー
disabledraw;
 $f ="D:\\DATABASE\\*.txt";
 $$s_str = input("Please input the word.\n" +
                     "個人文書検索");
    if( (!result) || $$s_str == "" ) endmacro;
    grep ",[^,]*"+$$s_str+"[^,]*,.+$",$f,hidemarudir,fuzzy,subdir;
    endmacro;
ーーーーーーーーーーーーーーーーーーー

[ ]
RE:06697 新旧漢字・異体漢字・同義別体同No.06698
秀まるお2 さん 11/07/24 16:41
 
 そのマクロのままで「正規表現ON, あいまい検索ON」になってるはずですが、
ただ、あいまい検索の設定が、sinkyu.txtを使って同一視するような設定になっ
てないとダメです。

 そのあいまい検索の設定をすることが、英語版秀丸エディタでは現状不可では
ないかと思います。(秀丸担当に聞いてみないと分かりませんが)

 日本語版でしたらその辺設定出来ると思いますけども。

[ ]
RE:06698 新旧漢字・異体漢字・同義別体同No.06699
hideya さん 11/07/24 20:13
 
秀まるお 様

ご返答をどうも大変有り難うございます。

確かに英語版では無理です。
しかし、マクロを使えば出来るんじゃないかと思ったんですが。。。
余計な話かもしれませんが、日本語版のメニュー文字をもう少しユニコード化するば
別に英語版を作らなくてもいいのではないでしょうか?
それと、
マクロ検索の場合、$$s_str = input;を開かないでそのまま選択した文字を検索でき
るようにする時にはこの辺の構文をどのように書いたらよろしいんでしょうか?
とりあえずそれだけでもお教えください。
大変申し訳けありません!!
休日なのにわざわざご返答頂き、本当に感謝いたします。

ひでや

[ ]
RE:06699 新旧漢字・異体漢字・同義別体同No.06700
秀丸担当 さん 11/07/25 13:45
 

こちらにまとめて回答させていただきます。

英語版にあいまい検索のチェックボックスが無いのは初期の頃からずっとそうで
した。
それを引き継いでいるためそうなっていますが、チェックボックスが表示されて
いれば動くはずです。
秀丸エディタ本体としてはチェックボックスがあるかないかだけなので、動作さ
せること自体は簡単です。
ただ、あいまい検索の設定のダイアログが日本語だったり一部文字化けすると思
うので、そのあたりの対応が必要だと思います。
今後のバージョンアップで検討させていただきます。

現状であいまい検索の設定のダイアログはマクロから一応呼び出すことができま
した。英語版でもこれで呼び出すことができました。

  loaddll "hmjre.dll";
  #x=dllfunc("Fuzzy_OptionDialog",hidemaruhandle(0));
  endmacro;

(ちなみに今調べたら公開されていない関数として英語版を想定した
"Fuzzy_OptionDialogMaruo" という関数もありました)


>確かに英語版では無理です。
>しかし、マクロを使えば出来るんじゃないかと思ったんですが。。。
>余計な話かもしれませんが、日本語版のメニュー文字をもう少しユニコード化するば
>別に英語版を作らなくてもいいのではないでしょうか?

日本語版のメニューやダイアログもUnicode化させれば英語版Windowsでも動かせ
ていいと思います。
懸案事項の1つです。
英語版で回避できてしまうせいもあってなかなか手を付けていませんが、今後や
るべきと考えています。


>マクロ検索の場合、$$s_str = input;を開かないでそのまま選択した文字を検索でき
>るようにする時にはこの辺の構文をどのように書いたらよろしいんでしょうか?

現在の選択された文字列を変数に入れるには

  if(selecting&&rectselecting==false){
    $$s_str = gettext(seltopx,seltopy,selendx,selendy,1);
  }

といいう感じに書くといいと思います。

[ ]
RE:06700 新旧漢字・異体漢字・同義別体同No.06701
hideya さん 11/07/25 20:10
 
秀丸担当 様

凄いですね!〜!!!
よく動きます。成功しました。
本当に素晴しいです〜!!!
大変感謝、感激でした。
自分でやってみようと色々と工夫してみたんですが成功できなかったもんで、ご返答
を頂いて嬉しくて飛び上がりました。
素人の知識ではこんなことできるはずがないんですよね。

今度はこんなことを思いつきました。
マクロを実行すると
クリップボードにコーピされたものを直接検索語として検索実行できるといいですね。
この場合、文字が選択されなかった場合には自動的にクリップボードにコーピされた
ものをする方法で如何でしょうか?
小さいメニュを作って3つの場合を想定して、キャンセル(実行中止)など選択でき
るようにすると完璧ではありますが。
これは可能でしょうか?

[ ]
RE:06701 新旧漢字・異体漢字・同義別体同No.06702
秀丸担当 さん 11/07/26 09:54
 

>クリップボードにコーピされたものを直接検索語として検索実行できるといいですね。
>この場合、文字が選択されなかった場合には自動的にクリップボードにコーピされた
>ものをする方法で如何でしょうか?
>小さいメニュを作って3つの場合を想定して、キャンセル(実行中止)など選択でき
>るようにすると完璧ではありますが。
>これは可能でしょうか?


選択されているかどうか(ただしBOX選択ではない)を判定するには、前のマク
ロにもありますが以下ような感じでできます。

  if(selecting&&rectselecting==false){
    //選択されている場合の処理
  } else {
    //選択されていない場合の処理
  }

クリップボードの内容を読み取るには以下のようにしてできます。

  beginclipboardread;
  $$s_str = getclipboard;

この場合は取得されるのは一行だけで、目には見えないですが複数行がある場合
は改行も最後に付いてくるので注意が必要です。詳しくはマクロヘルプを参照し
てほしいです。

小さいメニューを作って処理を分けるには、menu文を使うとできます。
マクロヘルプのmenu文にのところにサンプルが書かれているので参考にしてほし
いです。

[ ]
RE:06702 新旧漢字・異体漢字・同義別体同No.06704
hideya さん 11/07/26 14:08
 
秀丸担当 様

うまくいきました。
どちらでもいけます。
ただ検索中に中止ボタンがないですね。
それと検索結果がなかった場合、
ファイルを閉じるようにするには
どうすればいいのでしょうか?


[ ]
RE:06704 新旧漢字・異体漢字・同義別体同No.06706
秀丸担当 さん 11/07/26 16:30
 

>ただ検索中に中止ボタンがないですね。

grep文では「grep処理中」の小さなダイアログが出てそこで中止できると思いま
す。
もしopenfile "/h";などで非表示の状態にしているとしたら中止できるダイアロ
グは出ないです。この場合のことだとしたら、非表示になるようにしてあるので
仕様ということになります。
同じマクロを教えてもらえると何かわかると思います。

>それと検索結果がなかった場合、
>ファイルを閉じるようにするには
>どうすればいいのでしょうか?

grep文を実行した後にresultというキーワードでヒットした数か、grepを中断し
たかどうかの結果を知ることができます。
または、結果の数はlinecountキーワードで行数が1よりも大きいかどうかで判別
してもいいと思います。

現在のファイルを閉じるにはexit文で終わらせることができます。
他のファイルはclosehidemaru文で終わらせることができます。

[ ]
RE:06706 新旧漢字・異体漢字・同義別体同No.06707
hideya さん 11/07/26 19:15
 
秀丸担当 様

こんばんは!
お世話になっております。

ああ、ダイアログはありました。
結果はgrepを実行した後の結果が0ということでした。

「若し検索の結果が0であったならばエキサイトせよ」と
マクロ形式の構文があると思うんですが、
やってみたんですけれども私の力では無理でした。
そこでもう少し詳しく教えていただけないでしょうか?
大変申し訳ないです。

[ ]
RE:06707 新旧漢字・異体漢字・同義別体同No.06709
秀丸担当 さん 11/07/27 09:56
 

結果が0の場合に終了させるには、grep文の直後に以下のように書きます。
(「...」の部分は省略しています)

  grep ...
  if(result==0){
    exit;
  }

grepを途中で中断した場合も終了させる場合は以下のようにするといいと思いま
す。

  grep ...
  if(result<=0){
    exit;
  }

[ ]
RE:06709 新旧漢字・異体漢字・同義別体同No.06710
hideya さん 11/07/27 17:31
 
秀丸担当 様

早速ご返答を頂き、誠に有難うございました。
お手数をおかけしましたけれども、大変助かりなりました。
深く御礼を申し上げたいと思います。
これからも愛情を持って秀丸を使わせていただきたいと思います。
今後ともよろしくお願いします。

ひでや

[ ]
RE:06710 新旧漢字・異体漢字・同義別体同No.06711
hideya さん 11/07/28 16:31
 
秀丸担当 様

こんにちは!
この度は大変お世話になりまし有難うございます。

今日、異体漢字辞書を使って検索してみました。
秀丸の基本的な文字コードはShift+Jisだからか異体漢字を含むUnicode辞書ファイル
は読めなかったことがあります。
これからは全体文字体系をUnicode化する必要があると感じました。
マクロもShift+Jisに依存しているから一括変換の時でも変換が出来なくなります。
まだまだ文字コードの問題解決の課題が残っているんですね。
一応、ユーザーの要望としてご報告しておきたいと思います。
どうも有難うございました。

ひでや

[ ]
RE:06711 新旧漢字・異体漢字・同義別体同No.06712
秀丸担当 さん 11/07/28 17:20
 

>秀丸の基本的な文字コードはShift+Jisだからか異体漢字を含むUnicode辞書ファイル
>は読めなかったことがあります。

秀丸エディタは、Unicodeのテキストファイルも読むことはできます。

具体的なファイルがどういうものかわからないのでなんとも言えないですが、
UTF-16のBOMありのファイルだとしたら、通常は認識に失敗することなく開けま
す。
UTF-8のBOMなしのファイルだとしたら、ファイルの内容からエンコードを自動的
に推測する具合によっては、失敗する可能性はあります。
[ファイル]→[エンコードの種類]より明示的にエンコードを指定して読み込みし
なおすとうまくいく場合があると思います。
辞書ファイルがテキストファイルではないとしたら、文字化けすると思います。

ファイルは読み込めても一部の文字だけが文字化けするということだとしたら、
該当文字を含むフォントに変更するとできることがあります。

>マクロもShift+Jisに依存しているから一括変換の時でも変換が出来なくなります。
>まだまだ文字コードの問題解決の課題が残っているんですね。

マクロはUTF-16のBOMありで保存すると、Unicodeで書くこともできます。
例えばreplaceallを幾つか書いたようなマクロの場合、Unicode独自の文字を文
字列中に書くこともできます。

[ ]
RE:06712 新旧漢字・異体漢字・同義別体同No.06713
hideya さん 11/07/28 20:49
 
秀丸担当 様

大変お世話になっております。

>秀丸エディタは、Unicodeのテキストファイルも読むことはできます。

今のところ、読み込むのは問題ないです。

>マクロはUTF-16のBOMありで保存すると、Unicodeで書くこともできます。

これでやって見たんですけれども失敗しました。
何か原因があると思うんですが……。
ずいぶん前からreplaceallを使って変換したことがありますが、
これは知りませんでした。Shift-JISで外字を保存したらこんなふうになりました。
 replaceall "\x1Aコ゚\x0C" , "強" , casesense;
 replaceall "\x1Aウ・" , "鋭" , casesense;
 replaceall "\x1A踵\x0E" , "復" , casesense;
 replaceall "\x1A吁\x0C" , "尚" , casesense;
不便ながらこれで変換して使ってたんです。
教えられたとおりに、同義別体の辞書をUTF-16のBOMありで保存して
検索見ますと、やはりエラーが出ます。
ちょっとこの問題が十年も前からの難義でした。
基本環境のフォント設定はMS UI Gothic、UTF-16に指定しています。
ご教示よろしくお願いします。

ひでや

[ ]
RE:06713 新旧漢字・異体漢字・同義別体同No.06714
秀丸担当 さん 11/07/29 09:10
 

>これでやって見たんですけれども失敗しました。
>何か原因があると思うんですが……。
>ずいぶん前からreplaceallを使って変換したことがありますが、
>これは知りませんでした。Shift-JISで外字を保存したらこんなふうになりました。

そうでしたか。
そうだとしたら、バージョンがV8.00よりも下ものを使われていると、Unicodeの
マクロは失敗し、キー操作の記録を使われていると思うのですが、キー操作の記
録ではUnicodeがおかしな記録のされかたをされてしまうことがありました。
V8.00以降であればUTF-16のマクロファイルや記録に対応しています。
現在の最新版はV8.10になっています。
もし古いバージョンをお使いでしたら、最新版にされるといいと思います。

[ ]
RE:06714 新旧漢字・異体漢字・同義別体同No.06715
hideya さん 11/07/29 17:00
 
秀丸担当 様

こんにちは!
早速ご返答下さいまして本当に有難うございました。

確かにマクロに関してはユニコードに対応しており、特に問題はありませんでした。

ただし、あいまい検索用のテキスト辞書はユニコードに変えると認識できなくなるの
です。いろいろと試した結果、ここだけはユニコード対応になってないことが確認さ
れました。
とりあえずここをマクロ言語を使って修正出来ればいいと思います。
何度も煩うことを言って申し訳ないと思います。
どうぞよろしくお願いします。

ひでや

[ ]
RE:06715 新旧漢字・異体漢字・同義別体同No.06716
秀まるお2 さん 11/07/29 17:13
 
 あいまい検索のカスタム同一視指定ファイルは、すみませんがユニコード対応
してないです。

 以前から時々ご要望いただく話ではあるのですが、内部的な都合で、あいまい
検索を高速化する用のテーブルがあって、それをもしもユニコード化したらメモ
リ使用量がとんでもないことになってしまうというのがあって、ちょっと対応が
困難です。

 遅くてもいいならそれなりに対応は可能だと思うんですけども、今の所まだ対
応してないです。

[ ]
RE:06716 新旧漢字・異体漢字・同義別体同No.06717
hideya さん 11/07/29 18:51
 
秀まるお 様

どうも今晩は!
ご返答有難うございました。

メモリを大量に使い、速度が遅くなるということですね。
それでも構いませんが。。。
何でもできる方法が分かるといいですね。
複雑なことならばこれでいいと思います。
十分満足しており、本当に感謝しております。

ご参考に、秀丸ファイラーClassicは英語のOSでも問題なく日本語のメニューがよ
く表示されます。

ひでや

[ ]
RE:06717 新旧漢字・異体漢字・同義別体同No.06718
秀まるお2 さん 11/08/01 17:53
 
 今一度、HmJre.dllのあいまい検索関係の処理を見直してみたんですが、特に
メモリ使用量は増やさずとも、カスタム同一視指定ファイルのユニコード対応は
可能なようでした。ただ、遅くはなりますけども…

 遅くなるといっても、現状でも、同一視指定文字列が2文字以上の文字「列」
になってる場合は同様に遅くなる仕組みなので、それと同程度です。

 ということで、なるべく近い将来のバージョンで対応予定とさせていただきま
す。

[ ]
RE:06718 新旧漢字・異体漢字・同義別体同No.06719
hideya さん 11/08/02 21:52
 
秀まおる2 様

どうも本当に有難うございました。
じゃ、気を長くして近い将来を待ってみたいと思います。
どんどんと改善していて素晴しいものになっていくと思います。
グローバル時代に多言語対応は必要なんでしょう。
マクロなどを生かせば、無眼の可能性のあるエディタだと
思いますので、その可能性を追求するのが、開発者とユーザの役割だと考えます。
頑張りたいと思います。
大変お世話になり、有難うございました。
では、失礼いたします。

まるや

[ ]
RE:06719 新旧漢字・異体漢字・同義別体同No.06723
秀まるお2 さん 11/08/03 16:01
 
 とりあえず手元のバージョンではユニコード対応が出来ました。

 次のβ版には添付出来ると思います。(秀丸メールが先になるかもしれませ
ん)

[ ]
RE:06723 新旧漢字・異体漢字・同義別体同No.06724
hideya さん 11/08/03 18:36
 
秀まるお2 様

どうもご親切で、有り難いかぎりです。
いや、やりましたね!!
これで文字のこととはすっかり忘れます。
使いながらも有り難さを感じます。
あとは異なる環境でも化け文字にならないようにすることでしょうか。
次のβ版をお待ちしております。
御機嫌よう!

まるや

[ ]