1 件の投稿を表示中 (合計 12 個)
  • 作成者
    投稿
  • #10471
    Autumn
    参加者

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

    置換ダイアログでは、以前設定した検索、置換文字列の履歴がいくつか、記憶されているのですが、新しい文字列を入力すると、古い順から削除されてしまいますよね。

    せっかく、履歴には、検索文字列と置換文字列とその時の設定がセットで記憶されているのですから、何らかの形で任意で残せるようにできたらなぁと思います。

    正規表現のテストであれや、これや、試していると、よく使うものが履歴が消えてしまうことが多々ありまして、その度にメモをたよりに設定しなおしている状況です。

    ご検討いただけたらと思います。

    #10472
    Yutaka Emura
    キーマスター

    kanon 様

    いつも EmEditor Professional をお使いいただき、誠にありがとうございます。

    次のようなマクロを書くと、複数の置換を一度に実行できるようになります。

    document.selection.Replace( “find 1”, “replace 1”, eeReplaceAll );
    document.selection.Replace( “find 2”, “replace 2”, eeReplaceAll );
    document.selection.Replace( “find 3”, “replace 3”, eeReplaceAll );

    しかし、将来のバージョンでは、このような置換機能の改善も検討いたします。
    貴重なご意見ありがとうございました。
    他にもご質問がございましたら、ご遠慮なくご連絡ください。
    今後もどうぞよろしくお願い申し上げます。

    #10473
    Autumn
    参加者

    アドバイス、ありがとうごごいます。

    貴社ソフトでは、
    置換ダイアログにて、「正規表現を使用する」にチェックをいれ
    「検索する文字列」の項目の「>」というマークのボタンをクリックすると
    ずらっ、と説明付きの正規表現のリストが表示されて
    非常に重宝しているのですが

    上記のような形で、ユーザーが任意の名称で
    よく使う正規表現を登録できたらいいのになとふと、思いまして。

    ヘルプなしで正規表現がぱぱっと書ければ
    問題ないのですけれども・・

    気長にお待ちしておりますので、よろしくお願いします。

    #10474
    Yutaka Emura
    キーマスター

    kanon 様

    いつも EmEditor Professional をお使いいただき、誠にありがとうございます。

    ご希望のような機能も将来のバージョンで検討します。
    貴重なご意見ありがとうございました。
    他にもご質問がございましたら、ご遠慮なくご連絡ください。
    今後もどうぞよろしくお願い申し上げます。

    #10480
    Delフサ
    参加者

    EmEditor Plugin ReplaceText.dll Readme
    http://delfusa.main.jp/delfusafloor/download/replacetext/readme.html

    私自身は重宝しています。
    正規表現も使えます。

    #10481
    Autumn
    参加者

    ご親切にありがとうございます。

     教えていただいたプラグインは一括で複数の置換を実行するという機能を探していた時に、一度参照したことがあったのですが、その時は使い方がよくわからず、断念しましたが。

     おっしゃるとおり、使いこなせれば、私の要望に近いことも可能ですね。再度挑戦してみます。

     

    #10487
    Autumn
    参加者

     本来は、プラグインのフォーラムでお聞きするべきですが、よく使用されているとのことですので、ご存知でしたら教えてください。

    置換前 あああ
        いいい
    置換後 //あああ
        //いいい

    としたい場合

    ReplaceText.dllでは

    行頭に//を追加(行の始め)タブ^⇒//タブ/r
    と表記しても

    置換前 あああ
        いいい
    置換後 //あああ
        いいい

    となり、最初の行のみ//が追加されます。
    すべての行に//を追加したい場合は、どう表記するのでしょうか。

     ReplaceText.dllプラグインの正規表現はEmEditorとは異なる部分があるとのことで、明記されたホームページやそのホームページを一部日本語に抜粋したページを参照しましたが、わからず、それならば、実践でといろいろと試してみたのですが・・。

    #10488
    Delフサ
    参加者

    こんにちは。

    私がプラグインの作者なので、よく使用しているのですが
    正規表現オプションはあまり使ってないです。

    どういう用途で正規表現を使うのでしょうか…
    使用例を教えて欲しいです。

    正規表現にはTRegExpというライブラリを使っていましたが、その部品の作者が行方不明になってしまっているようです。
    調べたところ、日本語ヘルプによると次のように書かれていました。

    http://delwiki.info/?%E3%82%B3%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%8D%E3%83%B3%E3%83%88%2FTRegExpr%2F%E6%97%A5%E6%9C%AC%E8%AA%9E%E3%83%98%E3%83%AB%E3%83%97%2FSyntax%20of%20Regular%20Expressions

    >デフォルトでは “^” は入力文字列 / テキスト中の先頭に、”$” は終端にマッチすることのみ保証されます。間にあるラインセパレータ (改行) は “^”, “$” にマッチしません。
    >しかし入力した文字列を複数行のバッファとして扱いたい場合、つまり “^” をあらゆる改行の直後にマッチさせ、 “$” を改行の直前にマッチさせたいことがあります。モディファイヤ /m をオンにするとそのように動作します。

    ということのようで
    プラグイン側でモディファイヤ/mというのをONにする必要があるようです
    可能なら、近いうちにプラグインを改造してみます。

    改造前の対策として、
    正規表現行頭置き換え[TAB]^⇒//[TAB]rn⇒rn//[TAB]/r

    このように設定していただくのはいかがでしょうか?
    動作としては、お望みのものになります。

    もしくは、行頭挿入でしたら
    http://delfusa.main.jp/delfusafloor2/download/download_f.html
    の、InsertQuoteプラグインを使っていただくほうが使い勝手がよいと思います。

    また、改造する場合
    他の部品に乗せ変えたり
    EmEditor標準の正規表現文字列置き換え機能を利用した機能になるかもしれません。

    よろしくです。

    #10489
    Autumn
    参加者

    お世話になります。

    正規表現の用途としましては、少し複雑な(私にっては)
    正規表現で置換する処理を
    メニュー一発で呼び出せるようにしたいのです。

    たとえば、

    ●指定文字の指定番目までの文字列の直前にタブを挿入
     指定文字列 一番目の「

    検索 (^[^「]*)「
    置換 1t「

    ●abを含んで、かつ、bcを含んで、かつ、cdを含む行を検索する。

    ^(?=.*ab)(?=.*bc)(?=.*cd).*$

    といったものを登録する、とか。
    今のところ
    事前にメモしておいたものを参照して
    EmEditorの置換ダイアログにコピー&貼り付けて・・としています。

    もっと単純な正規表現では
    行末に強調表示のインポート用CSVファイルとするため
       ,3,0,0,0,0,0,0(青)
       ,3,0,0,0,0,0,0(蛍光黄色)

    と置換するよう。色分けにメニューを作っても便利そうですし。

    マクロに登録すれば、一行マクロになり、
    それをたくさん作る方法も考えましたが
    マクロが山ほどできて、管理が大変になりますし
    呼び出すのも大変です。

    ReplaceText.dllプラグインならば
    段階わけにメニュー表示して、分類できますし
    今までメモしてきたたくさんの正規表現を
    登録するのに使いたいと思っているのです。

    EmEditor標準の正規表現文字列置き換え機能を
    利用した機能になるなら
    私にとっては大歓迎です。

    改良していただけると大変ありがたいので
    よろしくお願いいたします。

    #10490
    Delフサ
    参加者

    暫定的においてみました。
    http://delfusa.main.jp/temp/ReplaceText.zip

    たぶん、これで大丈夫だと思うのですが、どうでしょうか。
    試してみてください。

    行頭文字指定は動きました。

    単語単位指定や、大文字小文字対応も動くと思うんですが…

    以下、
    開発者にしか分からないですが、ソースはこんな感じ。
    コンパイラをD2007からDelphiXEに変更したのですが、ちゃんと動いているみたい。

    メイン抜粋
       EmReplaceFlag :=
        FLAG_FIND_REG_EXP or

        FLAG_REPLACE_SEL_ONLY or
        FLAG_REPLACE_ALL or
        FLAG_FIND_NO_PROMPT or
        FLAG_FIND_CLOSE;

       if ReplaceFlagWord then {←単語単位指定}
       begin
        EmReplaceFlag := EmReplaceFlag or FLAG_FIND_ONLY_WORD;
       end;
       if ReplaceFlagCaseCompare = ccCaseSensitive then {←大小文字区別指定}
       begin
        EmReplaceFlag := EmReplaceFlag or FLAG_FIND_CASE;
       end;

       for i := 0 to Length(OldPatterns)-1 do
       begin
        Editor_ReplaceW_Delphi(hwnd,
         OldPatterns, NewPatterns, EmReplaceFlag);
       end;
       Editor_ExecCommand(hwnd, EEID_ERASE_FIND_HILITE);

    関数部分
    procedure Editor_ReplaceW_Delphi(hwnd: HWND;
    const OldPattern, NewPattern: WideString;
    nFlags: Longword = FLAG_REPLACE_ALL+FLAG_REPLACE_SEL_ONLY);
    var
     WideStr: WideString;
    begin
     WideStr := OldPattern + #0 + NewPattern + #0;

     Editor_ReplaceW(hwnd, nFlags,
             PWideChar(WideStr));
     {↓検索強調文字の解除}
    // Editor_ExecCommand(hwnd,EEID_ERASE_FIND_HILITE);
    end;

    #10491
    Autumn
    参加者

    fusa様

    早速の対応ありがとうございます。

    試したものは、単純な表記のものばかりで
    数も少ないですが、
    動作を確認いたしました。
    下記、ReplaceText.datより抜粋

    正規表現
    行頭に//を追加 ^⇒// /r
    行頭に3を追加 ^⇒3 /r
    行頭の●以前を削除 ^.*●⇒ /r
    行頭から一番目の)以前を削除 ^[^)]*)⇒ /r

    強調文字列インポート用
    行末に,3,0,0,0,0,0,0(青) $⇒,3,0,0,0,0,0,0 /r
    行末に,0,0,0,0,0,0,0(蛍光黄色) $⇒,0,0,0,0,0,0,0 /r

    単語単位動作テスト
    AAA→BBB AAA⇒BBB /w
    宇宙→space 宇宙⇒space /w
    space→宇宙 space⇒宇宙 /w

    大小を区別して変換
    AAA→BBB AAA⇒BBB

    大小関係なく変換
    AAA→BBB AAA⇒BBB /i

    蛇足ですが、一度、プラグインってどんなものなんだろうと
    ソースをのぞきにいったことがあります。

    メインソースってこんなふうになっているのですね
    if ~ then ~end
    とか、
    forとかの繰り返しとかに見覚えがある程度ですが。

    これから、改良していただいたプラグインを
    どんどん活用したいと思います。
    何か気付いた点がありましたら、報告いたします。

    今一度お礼を申し上げます。
    本当に助かりました。ありがとうございます。

    #10496
    Delフサ
    参加者

    動いてよかったです。

    諸事情で
    DLLのサイズが800KBとプラグインにしては大きくなりすぎてしまったので、もう少しサイズ減らしてから自分のページで正式リリースしてみます。

    私はDelphiって言語を使っています。
    EmEditor本体や他のプラグインはC++言語で作られることが多いですね。
    C++だと、if(){} else {} こんな感じでしょうね。

    一度、プラグインの動作する開発環境を作ってしまえば
    私にはマクロより作りやすいので機能拡張は全部プラグインでやっています。

    使っていただいて何よりです。

    もう少ししたらDelphiXE2という64bit版がリリースされるらしいので、64bit対応のプラグインも用意していけそうですが、開発環境のバージョンアップ費用がちょっと気が重いところです。

    誰かのウチでコンパイルだけさせてもらったりとか、そういうのじゃいけないもんなのですかね。

1 件の投稿を表示中 (合計 12 個)
  • このトピックに返信するにはログインしてください。