構文ファイル(.msy)に関する要望

  1. お世話になっております。構文ファイルを直接書いてMeryにインポートさせて適用させるという使い方をしています。なので私はコメントや引用符に囲まれた文字列などを設定せず、強調文字列で色分けしています。というのも設定では足りなかったり、意図しない文字列にもマッチングしてしまったりするからです。なので強調文字列が2つ(コメントと文字列)に割り当てられることになり、残り6つで色分けしていたのですが少し足りない場面もでてきました。そこで要望なのですがコメントと文字列を別に#Word Color的な感じで項目を設けてもらえないでしょうか。それとこれはほんとに小さな願いなのですが構文ファイルを反映させるのに「設定モードの編集→プロパティ→インポート→ファイル選択→はい→OK→選択」の距離が遠いのを短くできたらとおもいます。

     |  :e  |  返信
  2. Mery をご愛用いただき、ありがとうございます。

    強調文字列の増設について、コメントや引用符などの標準機能を使わないというのは、ちょっとユニークなアプローチですね。

    個人向けのカスタマイズに該当するので、強調文字列の増設は少々難しい状況ですが、将来的に多くのご要望が寄せられる場合は、検討させていただきますね。

    構文ファイルのインポートまでの操作については、現在の手順を大幅に省略することは難しいですが、コピーと貼り付けを使うことで、手短にできるかもしれません。

    お使いのバージョンが分からないため、Ver 3.6.3 での操作をご紹介します。

    ​​【強調文字列のコピー】

    1. [編集モードの設定] > [プロパティ] を開きます。
    2. [強調文字列] のリストを右クリックし、[すべて選択] をクリックし、[コピー] を選択します。
    3. ダイアログを閉じて、エディター ウィンドウに [貼り付け] します。

    (2) の操作は Ctrl + A、Ctrl + C を使うこともできます。

    テキストの書式については、詳細は割愛させていただきますが、各オプションのオン/オフを切り替えながら、コピーした内容をご確認いただくと理解しやすいかと思います。

    ​​【強調文字列の貼り付け】

    1. 上記の手順で作成/編集したテキストをエディター ウィンドウで [コピー] します。
    2. [編集モードの設定] > [プロパティ] を開きます。
    3. [強調文字列] のリストを右クリックし、[貼り付け] を選択します。

    (3) の操作は Ctrl + V を使うこともできます。

    また、すべての項目を入れ替えたい場合は、[すべて選択] し、[削除] をクリックしてから [貼り付け] することができます。

    ただし、[プロパティ] ダイアログを閉じないとエディター ウィンドウでの [コピー] や [貼り付け] はできないため、ご注意ください。

     |  Kuro  |  返信
  3. 返信ありがとうございます。正規表現での色分けの処理がはやくなって細かくこだわっていたら随分ユニークな使い方へとなってしまいました。色分けのカテゴリを圧縮して通常の使い方から離れず使うのが良策と考え直しやっていきたいとおもいます。
    いろいろアドバイスありがとうございました。

     |  :e  |  返信
  4. 何度もすみません。
    文字列を色分けて使ってみたのですが、文字列中のエスケープ文字は効くが文字列外のエスケープ文字は効かないのは仕様なのでしょうか。

    「"もじれ¥"つ"」は全て文字列になるが
    「もじ¥"れつ」は「"れつ」が文字列になる。
    という意味です。

     |  :e  |  返信
  5. はい、仕様です。

    多くのプログラミング言語では、文字列内のエスケープ文字 (例: \) は引用符 (例: ") との衝突を避けるために使われます。

    しかし、文字列外で同じエスケープ文字が使われた場合、それは通常、その文字自体として解釈されます。

    ご質問の例では、

    1. 「"もじれ¥"つ"」では、引用符で囲まれた各部分が文字列として解釈されます。

    2. 「もじ¥"れつ」では、最初の引用符までが通常の文字として扱われ、残りの「"れつ」は文字列として処理されます。

    ただし、プログラミング言語によっては、異なる仕様のものもあると思います。

    Mery では、一般的なプログラミング言語の仕様に合わせるよう努めていますが、他のケースに対応する場合は、強調文字列で正規表現を利用するなどの方法で対処いただくことになってしまいますね。

     |  Kuro  |  返信
  6. 返信ありがとうございます。
    あれから正規表現でどうにかマッチさせる方法を模索してたのですが、拡張式集合の条件式が使えるライブラリが必要なのですね。それに条件式中に戻り読みを条件に指定できるものが必要で以下でマッチさせることができました。

    (?<!¥¥)(?<var>[¥"¥']).*?(?(<var>)(?<!¥¥)¥k<var>)

    何かの参考になれば幸いです。いろいろありがとうございました。

     |  :e  |  返信
スポンサーリンク