正規表現DLLの動的な変更についてNo.38155
fzok4234 さん 20/04/13 02:23
 
連投すみません。

正規表現のDLLをHmJre.dllから一時的に別のものに差し替えたいのですが、「動作環
境」->「環境」->「正規表現」のところでDLLの変更を行うと秀丸エディタ全体に影
響が出て、既にHmJre.DLL依存のパターンで記述済みの自動起動マクロや強調表示な
どが正常に動作しなくなってしまいます。

具体的には、「動作環境」->「環境」->「正規表現」のところでHmJre.dllをデフォ
ルトの正規表現エンジンとしつつ、検索/置換/grepで一時的に別のエンジンを使用し
たり、マクロでsetsearch文などの実行単位で別々のエンジンを適用したりして柔軟
な運用をしたいのですが、これを実現するためのサードパーティー製のマクロなどが
見つからないのが現状です。

背景として、例として鬼車/鬼雲系エンジンなどの非常に高性能なサードパーティー
製エンジンの出現があります。これらのエンジンには、

・unicodeの特定の文字プロパティの1文字にマッチさせる。
・数字ではなく任意の名前で使用可能なタグ付き正規表現。
・タグ付き正規表現とは異なり、検索パターンそのものを記憶して再利用する。これ
により括弧の入れ子構造に正しくマッチさせることが可能。

といったHmJre.dllにまだ実装されていない機能が備わっている一方で、前方一致/不
一致で .* などの可変長の条件パターンが使えないなどのHmJre.dllと互換性のない
ところもあります。

このため、本来であれば「動作環境」->「環境」->「正規表現」のところでサード
パーティー製エンジンを登録したいところですが、これを行うためには今まで作成し
たHmJre.dll依存のマクロや強調表示などを同時に一斉に書き換えなければならず、
作業負担が大変大きくなってしまいます。そのため、上記の例で示したHmJre.dllに
無い機能を使いたい時だけ一時的に別のエンジンを使用できればと思った次第であり
ます。

そこで、要望としてはデフォルトの正規表現DLLを「動作環境」->「環境」->「正規
表現」のところで保持しつつ、正規表現が使用可能な場面で随時別の正規表現DLLを
使用可能にしてほしいところであります。具体的な改良案として、

・検索/置換/grepのダイアログの「正規表現」のチェックボックスの横に正規表現DL
Lを明示的に指定する入力欄を設ける。
・「ファイルタイプ別の設定」の「複数行コメント」と「強調表示」の各項目の「正
規表現」のチェックボックスの横にもDLL指定欄を設ける。この場合は.hilightファ
イルの書式の拡張が必要になる。
・マクロに、別の正規表現DLLをロードして有効にする「loadregulardll $DLL名」文
と、これを解除して「動作環境」->「環境」->「正規表現」のところで指定した正規
表現DLLに戻す「freeregulardll」文、現在有効な正規表現DLL名を返す「regulardl
l」キーワードを新設する。loadregulardll文とfreeregulardll文で囲った範囲内で
はsearchdialog文の呼び出しなどの正規表現の実行は指定したDLLで行われる。

などが挙げられます。今後のアップデートでご検討の方よろしくお願いします。



[ ]
RE:38155 正規表現DLLの動的な変更についNo.38157
秀丸担当 さん 20/04/13 13:41
 

正規表現DLLは確かに1つの指定のみで、状況によって一部だけで切り替えるという
ことはできないです。
いままでの定義とかが合わなくなったりするので、一時的に変えたいという希望はわ
かります。
ご意見参考にさせていただきつつも、検索ダイアログや何らかの定義1つ1つにユー
ザーインターフェースを追加して形式も変更してやるのは大変かもしれません。
(複数のDLLを呼び変えるDLLがあったりしてデフォルトはHmJreだけど、(?#鬼)みた
いなコメントを入れるとそれだけ変わるとか、そういうラッパーDLLがあるといいよ
うな気も…)

[ ]