デフォルトの構文定義の拡充について

  1. 5 年前から使わせていただいております。

    C# や JavaScript の編集をしていると、
    一部の新しいキーワードが色付けされないことに違和感を覚えます
    (JS で arguments や await、let などが登録されておらず、
     byvalue や operator などの見慣れない単語が登録されている)。

    こちらについてデフォルトの構文定義を更新いただくことはできないでしょうか。

     |  Toru  |  返信
  2. ご愛用ありがとうございます。

    デフォルトの構文定義、確かに結構古くなってますね ^^;
    自分が興味のない言語は完全に放置してます…。

    最新の予約語一覧のデータ (できれば公式のヤツ) があれば、更新することは可能ですので、情報をいただけると助かります。

     |  Kuro  |  返信
  3. JS であればこちらが参考になります。
    https://www.w3schools.com/Js/js_reserved.asp
    async や constructor、get、set はコンテキストキーワード扱いなのか
    リストに含まれていませんが、一緒に含めてもらえると嬉しいです。

    C# はこちらに完全なリストがあります。
    https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/keywords/

    以上よろしくお願いいたします。

    > ご愛用ありがとうございます。
    >
    > デフォルトの構文定義、確かに結構古くなってますね ^^;
    > 自分が興味のない言語は完全に放置してます…。
    >
    > 最新の予約語一覧のデータ (できれば公式のヤツ) があれば、更新することは可能ですので、情報をいただけると助かります。

     |  Toru  |  返信
  4. 情報ありがとうございます。

    > JS であればこちらが参考になります。
    私のほうでも調べてみたのですが、JavaScript の予約語やキーワードってなかなか公式文書は見つかりませんね。Atom や VS Code、Sublime Text、Adobe Brackets で強調されるか確認してみたりしましたが、いずれもいまひとつ。

    > https://www.w3schools.com/Js/js_reserved.asp
    ↑いただいた URL の情報、調査してみましたが信頼性高そうですし、標準の予約語以外 (Other Reserved Words) でブラウザなどで実装されている予約語も掲載されていて良さそうですね。

    上記サイトから「JavaScript Reserved Words」と「JavaScript Objects, Properties, and Methods」と「Other Reserved Words」を登録しようと思います。

    > async や constructor、get、set はコンテキストキーワード扱いなのか
    > リストに含まれていませんが、一緒に含めてもらえると嬉しいです。
    確かに、async などは含まれていませんね。言語仕様に詳しくないので判断しかねますが、個別対応してしまうと次に更新するときに漏れてしまいそうなので、上記 4 つだけであれば後ほど手動で追加していただければ幸いです。

    > C# はこちらに完全なリストがあります。
    > https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/keywords/
    ありがとうございます。
    現状の Mery でも上記 C# のサイトのリストとほぼ同等ですが、こちらは「コンテキスト キーワード」のほうを追加登録ということでよろしいでしょうか?

    C# サパーリなので、「コンテキスト キーワード」が何なのかわかりませんが、abstract とかの通常の予約語 (Mery の強調文字列1) とは別の色 (Mery の強調文字列4ぐらい?) を割り当てておけば良いのかな。

     |  Kuro  |  返信
  5. > C# サパーリなので、「コンテキスト キーワード」が何なのかわかりませんが、abstract とかの通常の予約語 (Mery の強調文字列1) とは別の色 (Mery の強調文字列4ぐらい?) を割り当てておけば良いのかな。
    コンテキストキーワードは言語のアップデートに伴って後から追加されたキーワードです。
    識別子として有効な単語ではありますが、特定の文脈(コンテキスト)においてのみキーワード扱いされます。

    とはいえそのような単語をわざわざ識別子に使うケースはあまりない上、
    世の highlighter は文脈に関係なく通常のキーワードと同じ色で表示するため、
    通常のキーワードと同じ色で大丈夫かと思われます
    (ちなみに VS は文脈を判断した上で通常のキーワードと同じ色で表示します)。

     |  Toru  |  返信
  6. ご返信ありがとうございます。

    なるほど、勉強になりました。それでは、通常のキーワードと同じ色で追加登録しておきますね。次のバージョンで対応できると思いますので、今しばらくお待ちくださいませ。

     |  Kuro  |  返信
  7. > ご愛用ありがとうございます。
    >
    > デフォルトの構文定義、確かに結構古くなってますね ^^;
    > 自分が興味のない言語は完全に放置してます…。
    >
    > 最新の予約語一覧のデータ (できれば公式のヤツ) があれば、更新することは可能ですので、情報をいただけると助かります。
    JS(ECMAScript)の予約語の公式文章はこちらですね(結構重いです)

    ・予約語
    - https://tc39.github.io/ecma262/#prod-Keyword
    [await break case catch class const continue debugger default delete do else export extends finally for function if import in instanceof new return super switch this throw try typeof var void while with yield]
    [let static](NOTE内)

    ・将来のための予約語
    - https://tc39.github.io/ecma262/#sec-future-reserved-words
    [enum]
    [implements package protected interface private public](NOTE内)

     |  S  |  返信
  8. 情報ありがとうございます。
    公式文書なるものが存在したのですね。

    Mery Ver 2.6.9 では、ここで教えていただいた "www.w3schools.com" の予約語一覧をもとに更新しましたが、いま確認してみたところ公式文書の予約語もきちんと含まれていました。

    今後、更新のときには教えていただいた公式文書も参考にさせていただこうと思います。

     |  Kuro  |  返信
  9. 大変遅くなりましたが、構文定義の更新をしていただきありがとうございました。
    おかげさまで大変作業がはかどります。

     |  Toru  |  返信
  10. ご確認ありがとうございます。特に問題なさそうで安心しました。
    こちらこそ、その節は予約語一覧の情報ありがとうございました。

    またお気づきの点などございましたら、よろしくお願いいたします。

     |  Kuro  |  返信
  11. 途中から恐れ入ります。
    phpの構文定義についてですが、
    先日使用した際foreachがキーワードとして認識されないみたいでした。
    他にもphpのwebマニュアルに載っているキーワードが必ずしも認識されていないようでした。
    (Mery (x64) ver2.6.11)
    phpにはあまり詳しくなく大変恐縮ですが、ご確認のほど宜しくお願い致します。

     |  php初心者  |  返信
  12. 書き込みありがとうございます。

    > phpの構文定義についてですが、
    > 先日使用した際foreachがキーワードとして認識されないみたいでした。
    Mery のメニューから [表示] → [編集モード] → [編集モードの設定] で、編集モードの一覧が表示されますので、そこから [PHP] を選択して [プロパティ] より、強調文字列の追加が可能となっておりますので、そちらで登録いただければと思います。

    > 他にもphpのwebマニュアルに載っているキーワードが必ずしも認識されていないようでした。
    そうなんですよね。Mery の編集モードの構文すべてを常に最新に保つのは、私ひとりの力ではなかなか厳しくて、PHP なんかはもうずいぶん昔の状態のままです ^^;

    マニュアルから強調文字を抽出して、キーワードの特性ごとに色分けして、、、と、言語仕様を知らないと、それだけで非常に時間がかかってしまいます。

    PHP に詳しい方のご協力があればなんとかなるかもしれません ^^

     |  Kuro  |  返信
  13. 多くの編集モード(拡張子)に対応させてあるから、それを1人でメンテナンスしようと思うと大変ですね。
    編集モードの強調文字列みたいに、個人で対応できるものは個人に任せてしまって良い気がします。
    そして、個人で対応したもの・・・例えば、強調文字列なら、wiki の構文ファイルのページに載せてもらえたらベストなんでしょうけれど。
    自分は、wiki に載せる方法がよく分かっていませんが。^^;

    ちなみに、現状のキーワード(予約語)の分類基準はどうされているのでしょうか?
    言語を余り知らないので、それぞれでの言語での適切な表現が分かりませんが、現状の5、6個の編集モードを見た限り、↓のように受け取りました。

    強調1:コマンド/命令/関数
    強調2:タグ
    強調3:HTMLの属性
    強調4:ECHO/#/クラス?コンストラクタ?
    強調5:%, @/メソッド?
    強調6:
    強調7:
    強調8:

     |  名無し  |  返信
  14. php初心者 さんへ

    foreach は、以前の版(2012/06/27)には強調文字に含まれていたのですが、
    2年前に更新(2016/09/03)された時に、なぜか消えていました。

    他にもいつくかのキーワードの増減がありました。
    現在のマニュアルページ(http://php.net/manual/ja/reserved.php)にある、
    クラス/関数のすべてを更新するところまではすぐにはできませんでした。
    まったく PHP 言語に詳しくないのですが、
    更新で消えたものを復活した程度でも良ければ、ご用意できます。

    構文ファイル
    php.msy
    https://gist.github.com/inuuik/3c5d7e860ec64c1240561b55cf418424
    ここから Download ZIP をクリックすると、
    3c5d7e860ec.. から始まる、長い名前の zip が受信できます。

    これを解凍してフォルダを開いてゆくと、php.msy があります。

    この php.msy を Mery のインストールされたフォルダなどに移動してから、

    Mery で、何か php のファイルを開き、
    表示 > 編集モード > PHP > 編集モードの設定 > PHP > プロパティ

    "PHP" のプロパティ が開いたら…

    まず現在の内容を保存しておくために、[エスクポート(X)...]
    で php_now.msy などの名前で保存してください。

    [インポート(P)...] をクリックして、先ほど移動した php.msy のある場所
    から php.msy を [開く(O)] します。

    すぐに上書き確認が表示されますので、上書きします。

    これで、強調と構文の表示設定が変更されます。
    個々のキーワードの色は必要に応じて書き換えてお使い下さい。

    この php.msy は、どなたかの良い作品を待つ間の簡易(確認甘々)対応です
    ので、転載なしでお願いいたします。

    Kuro さん おひさしぶりです。
    これまでたくさんのお願いを聞いて下さって、あらためまして、
    本当にありがとうございます。

     |  inuuik  |  返信
  15. > 編集モードの強調文字列みたいに、個人で対応できるものは個人に任せてしまって良い気がします。
    そうなんですよね、編集モードのカスタマイズ機能がついているわけですし…。
    もちろん、デフォルトで対応できるに越したことはないですから、データさえ頂ければデフォルトとして登録するのですけどね。

    > そして、個人で対応したもの・・・例えば、強調文字列なら、wiki の構文ファイルのページに載せてもらえたらベストなんでしょうけれど。
    ですです (w
    私も、そういう魂胆で、誰かが作ってくれたらいいなーと思って MeryWiki を作りましたからね~。投稿してくださる方に感謝です。

    > ちなみに、現状のキーワード(予約語)の分類基準はどうされているのでしょうか?
    基準はありません ^^;
    見た目がカッコイイエディタ (Sublime Text の Monokai テーマ) などを参考に、適当に割り当てています。C++ とか C# とか Python とか Ruby とかサッパリわからないですから…。

     |  Kuro  |  返信
  16. ご対応ありがとうございます、そしてお久しぶりですね ^^

    > 2年前に更新(2016/09/03)された時に、なぜか消えていました。
    たぶんその時に、最新にしたろ!と思ってどこぞの IDE やエディタなどから強調文字列を拝借してきたのだと思います。PHP 公式の IDE などがあればありがたいのですけどね。

    > これまでたくさんのお願いを聞いて下さって、あらためまして、
    > 本当にありがとうございます。
    こちらこそ面白いアイデアをありがとうございました。

    たしか Chakra 以来でしょうか。その時に、今度コメントを頂いたときにお伝えしようと思っていた機能ですが、辞書ファイル (Ext フォルダ) の中の txt の 1 行目に「^」を書いておけば、単語補完で文書内からの単語の抽出を抑制できます。

    html.txt だとこんな感じ。
    --------
    ^
    DOCTYPE
    a
    abbr
    ad
    address
    .
    .
    .
    --------

    どのバージョンから実装したか忘れましたが、たぶん Chakra 対応の時だと思います。最近、記憶喪失気味なので、すでにお伝えしていたらスミマセン… ^^;

     |  Kuro  |  返信
  17. ご回答ありがとうございます。
    了解しました。

    別件で、「単語のみ」とか「大文字小文字を区別」などの条件は複数の文字列についてまとめて変更できますが、文字色はまとめて変更できないのでしょうか?
    エクスポートして msy ファイルを直接編集すれば良いので、現状でできなくても特に問題はありませんが。

    あと、「タグ開始」とか「タグ終了」とかが設定されている編集モードに、そこが未設定の msy ファイルを上書きでインポートしても、以前の設定は消えないのですね。
    通常、そのようなことをすることはないと思いますので、これもそれほど問題ないと思いますが、一応ご報告。

     |  名無し  |  返信
  18. 上記は、「編集モードの設定」での強調文字列の設定についてです。

     |  名無し  |  返信
  19. ご返信ありがとうございます。

    > 別件で、「単語のみ」とか「大文字小文字を区別」などの条件は複数の文字列についてまとめて変更できますが、文字色はまとめて変更できないのでしょうか?
    これは画面の設計上、対応が難しい部分ですね。
    マウスクリックによる色選択は便利だと思ったのですが、その反面、そういった不都合が発生してしまいますか…。

    やるとしたら、下記のパターンが考えられますね。

    (1) 色をマウスクリック (またはスペースキー) したら、その項目の色に、選択中の項目もすべて合わせる

    (2) 色をマウスクリック (またはスペースキー) したら、選択中の項目の色をすべて +1 する

    (3) 色をマウスクリックする方式を廃止して、[タグの終了] の下あたりに [色] を選択するドロップダウンリストを設ける

    こんな感じでしょうか。(3) は面倒くさそうですが、(1) か (2) なら実装できると思います。

    > あと、「タグ開始」とか「タグ終了」とかが設定されている編集モードに、そこが未設定の msy ファイルを上書きでインポートしても、以前の設定は消えないのですね。
    はい、これはあえてそういう仕様にしたようです。プログラムを確認したところ、空っぽだったら上書きしないっていう処理をわざわざ設けていました。要望があってそうしたのか、何か企みがあったのか覚えていませんが…

     |  Kuro  |  返信
  20. あ、「追加」と「上書き」、選べたんですね。単純に上書きのパターンを作り忘れているだけかも…

     |  Kuro  |  返信
  21. ご回答ありがとうございます。

    色選択について、現状のマウスクリックによる操作が良いと思います。
    異なる色が設定されている文字列を一度に選択した場合の動作までは考えていませんでした。
    色をまとめてずらしたい場合は (2) も便利だとは思いますが、個人的には (1) が普通の動作のような気がします。

    コメントしておいて難ですが、色選択も上書きインポートもそれほど需要があるとは思いませんので、対応を要望したいほどのことではありません。

    もうひとつ別件で。
    並び順を色→アルファベットの順にしておきたいのですが、[追加]ボタンをクリックしたときに選択している文字列の次あるいは前に追加されるようにするのは難しいでしょうか?
    (これでも、次だと一番最初、前だと一番最後には追加できませんが。)
    [ソート]ボタンや[上へ][下へ]ボタンみたいな機能は望みません。
    現状の、最後に追加されていく方式のほうが便利なのかな?
    エクスポート→上書きインポートすれば良いだけですし、これもそれほど需要があるとは思いませんが。

     |  名無し  |  返信
  22. ご返信ありがとうございます。

    > 色をまとめてずらしたい場合は (2) も便利だとは思いますが、個人的には (1) が普通の動作のような気がします。
    そのほうがわかりやすいかもしれませんね。
    (1) か (2) の方式ならたぶん数分で実装できますし、項目が増えるわけでもないので使わない人には気づかれないレベルだと思いますから、ちょっと作ってみます。

    > 並び順を色→アルファベットの順にしておきたいのですが、[追加]ボタンをクリックしたときに選択している文字列の次あるいは前に追加されるようにするのは難しいでしょうか?
    強調文字列に並び順を設けていないのは、ユーザさんに画面上で並び順を意識してもらいたくないからです。

    エディタエンジンの仕様上、色分けを高速に行うために内部で速度優先の並び替えを行っているので画面上で見えている並び順に意味はありませんが、もし画面上で並び順が変更できてしまうと構文解析の優先度だと思われてしまいますから…。

     |  Kuro  |  返信
  23. ご回答ありがとうございます。
    並び順について、そういう意図があったのですね。
    了解しました。
    以前に、文字列が重複するような設定をしたときに思ったような表示にならなかったような記憶がありますが、内部的な優先順位が関係したのですね。

     |  名無し  |  返信
  24. 色選択のほうは実装できた気がします。
    ちょっと提案していた仕様から変更しましたが、柔軟性があって良い感じに仕上がりました。

    > 以前に、文字列が重複するような設定をしたときに思ったような表示にならなかったような記憶がありますが、内部的な優先順位が関係したのですね。
    そうなんです。

    マーカー機能のほうは強調文字列と設定画面が似ていますが、上下ボタンがついてます。

    これはマーカーの登録数って多くても 100 個ぐらいかなーってことで、上から順にマッチングさせていっても実用に耐える速度が出るので、ユーザさんが順序を変更できるようになっています。

    普通に上から順にマッチングすると、画面上の文字数 x 強調文字の登録数 (と場合によっては文字列の長さ) 回のマッチングがキャレットを移動させるたびに発生するので非常に遅くなってしまうんです。

    強調文字列のほうは普通に登録数が 1000 個を超えたりするので、内部で強調文字リストを分解して索引を付けたり並べ替えたりしてすごいがんばってます。

    検証したときは 5 万単語ぐらい登録してもサクサク動いていました。正規表現を有効にした場合は、そもそも索引なんて関係なくなるので 1000 個も行くと結構重くなりますけどね… ^^;

     |  Kuro  |  返信
  25. 強調文字列はユーザー側では変更できないと思い込んでおりましたが、
    だいぶ前に実装されていたのですね。orz
    よく調べずに質問をしてしまい申し訳ございませんでした。

    それで、inuuikさんのphp.msyを適用したところ、
    foreachはもちろん、
    [PHPマニュアル > 付録 > 予約語の一覧]
    http://php.net/manual/ja/reserved.keywords.php
    に載っているキーワードについても網羅されておりました。
    私が使用する範囲では十分ではないかと思います。
    使えそうな予約語一覧のデータを見つけたり、
    今回のmsyファイルを使用して気づいた点等があればご報告したいと思います。
    (でも、私も少し調べてみましたが、予約語一覧のデータはありそうでなかなか無いものですね。)

    Kuroさん、inuuikさん、ご親切にどうもありがとうございました。

     |  php初心者  |  返信
  26. > …してきたのだと思います。PHP 公式の IDE などがあればありがたい…

    なるほど、出典が別だと、ありがちですね。公式 IDE はない様子なので、今回は自前で
    なんとかしてみようかと思います。もしかしてできた時には、お知らせします ^^/
    現在のマニュアルページ(http://php.net/manual/ja/reserved.php)とそのリンクを参照
    してみます(しかし php.msy は大きい)。

    > その時に、今度コメントを頂いたときにお伝えしようと思っていた機能

    ありがとうございますっ!
    思いもかけず、本当に有難いです。お礼すらしていなかったこと深く反省、実に面目ない。
    内容がここと関連なくなってしまうので、フォーラムの別エントリに続きを書きます。

     |  inuuik  |  返信
  27. php初心者さん

    > http://php.net/manual/ja/reserved.keywords.php
    > に載っているキーワードについても網羅されておりました。
    > 私が使用する範囲では十分ではないかと…

    仮データ php.msy をお試し下さり、ありがとうございます。
    なんとか使えそうとのこと、何よりです。

    元の削除項目に加えて、キーワード・予約語・定数は、予定分も含め
    記載項目を入れました。
    http://php.net/manual/ja/reserved.php
    キーワードのリスト
    定義済のクラス
    定義済みの定数
    コアの定義済みの定数
    マジック定数
    http://php.net/manual/ja/language.constants.predefined.php
    標準の定義済み定数
    コアモジュール の定数
    その他の予約語の一覧

    php では、とてもたくさんのクラス/関数とそれらの定数が、リストに
    含まれるため、コアの照合の途中でくじけました。
    さらに、添付と PECL の記載分は、さらに時間と気力が… ^^;
    http://php.net/manual/ja/extensions.membership.php

    今回は php.msy と同じ内容で単語補完(入力補完)用の php.txt も
    あります。Ext フォルダにある php.txt の名前を変更または移動してから、
    この Ext に解凍した php.txt をコピーしてお使いください。

    単語補完辞書ファイル
    php.txt
    https://gist.github.com/inuuik/2b6e6b767d0385aed001c70cef77df8c
    ここから Download ZIP をクリックすると、
    2b6e6b767d0.. から始まる、長い名前の zip が受信できます。

    先の php.msy と同様に解凍してください。

    できることならデフォルトで対応していただけるよう、材料を集めて
    みます。

     |  inuuik  |  返信
  28. > 色選択のほうは実装できた気がします。
    > ちょっと提案していた仕様から変更しましたが、柔軟性があって良い感じに仕上がりました。
    余り使わないであろう機能かもしれませんが、実装ありがとうございます。

    強調表示の仕組みについては、なるほどです。
    処理速度を考慮して、いろいろと工夫・動作確認されているのですね。感謝です。

     |  名無し  |  返信
  29. inuuikさん、重ね重ねありがとうございます。m(_ _)m
    ありがたく使わせていただきます。

     |  php初心者  |  返信
  30. > > あと、「タグ開始」とか「タグ終了」とかが設定されている編集モードに、そこが未設定の msy ファイルを上書きでインポートしても、以前の設定は消えないのですね。
    > はい、これはあえてそういう仕様にしたようです。プログラムを確認したところ、空っぽだったら上書きしないっていう処理をわざわざ設けていました。要望があってそうしたのか、何か企みがあったのか覚えていませんが…

    > あ、「追加」と「上書き」、選べたんですね。単純に上書きのパターンを作り忘れているだけかも…

    と回答をいただいていますが、Mery のメモを作っていてちょっと気になったので、念のために確認させていただきます。

    編集モードのプロパティ ダイアログで、
    タグ開始などに任意の文字を設定、
    スクリプトの特別な構文に「HTML埋め込み」を設定、
    引用符に囲まれた文字列の 1 重引用符/ 2 重引用符/次の行へ続くにチェックを入れてある状態で、

    タグ開始などに設定なし(空欄)、
    スクリプトの特別な構文に「無し」を設定、
    引用符に囲まれた文字列の 1 重引用符/ 2 重引用符/次の行へ続くにチェックを入れてない
    構文ファイルをインポート(「上書き」も「追加」も同様)すると、

    タグ開始などは以前の設定のまま、
    特別な構文/ 1 重引用符/ 2 重引用符/次の行へ続くは設定が反映されますが、
    後者は「空っぽではない」から構文ファイルの設定が反映されると言うことでよろしいでしょうか?

    動作的にちょっと納得できないところもありますが、余り使われない機能ですし、以前の回答時に理由は覚えていないとのことでしたので、改めて検証・調査していただく必要はありません。
    構文ファイルをインポートするときには、たいてい空っぽの状態のところにインポートするでしょうし。

    また、このとき、スクリプトの開始/終了が入力可のままです。

    逆に、スクリプトの特別な構文に「無し」が設定してある状態で、「HTML埋め込み」が設定してある構文ファイルをインポートすると、
    スクリプトの開始/終了が入力不可のままです。

    そこで、編集モードのプロパティ ダイアログを開きなおしたり、選び直せば正常になりますので、それほど問題ありませんが、一応ご報告。

     |  774  |  返信
  31. ご報告ありがとうございます。

    > 特別な構文/ 1 重引用符/ 2 重引用符/次の行へ続くは設定が反映されますが、
    > 後者は「空っぽではない」から構文ファイルの設定が反映されると言うことでよろしいでしょうか?
    はい、プログラムを確認してみましたところ「空っぽではない」項目はインポートされるようになっている模様です。

    > 動作的にちょっと納得できないところもありますが、余り使われない機能ですし

    前回の回答で書いた通りで、上書き・追加の仕組みが [強調文字列] 以外の項目については、そもそも搭載されていないので、そのあたりの項目のインポート仕様は「なんやこれ?」な感じですね。すみません ^^;

    そうなんですよね。ほとんど使われない機能なので細かいところまで作りこんでないのが正直なところです…。

    > また、このとき、スクリプトの開始/終了が入力可のままです。
    わーお、凡ミスですねー ^^; 次のバージョンでは修正しておきますね。

     |  Kuro  |  返信
  32. ご回答、ありがとうございます。
    了解しました。

    複数のパソコンで設定を同じにするのに、編集モード、テーマのインポート/エクスポートは重宝しています。
    Mery Wiki にあるものを取り込むこともできますし。

    >> Toru さん
    表題から少しずれたことでここを使ってしまい、失礼しました。

     |  774  |  返信
  33. そういえば先日ちょこっとバッチファイルを作りました。3行ほどでテキストファイルを繋げるだけの簡単なものですが、その時Typeコマンドが強調表示されないなと気づきました。

    バッチファイルなんて、私はそう頻繁に触るものでもないし、稀にちょっと作るかとなっても適当に調べて目的を達成したらそれで満足してしまうので使いこなせるわけでもないのですが、編集モードの設定を見てみたところ、少ないなと感じました。

    一応、コマンドプロンプトを立ち上げてhelpと打って表示されるコマンドを追加して、比較演算子6種類とリダイレクトなど、記号のいくつかも追加してみたmsyファイルはあるのですが、これって構文ファイルのところに公開した方が良いですか?

    何がバッチの正式仕様なのか、よく知らないんです。バッチに詳しい人が載せてくれるのを期待して待っていた方が良いですか?

     |  シリル  |  返信
  34. 私もバッチファイルは頻繁には使わないですし、詳しくもないので予約語はどういったものが正解なのかは分からないです。

    Mery に登録されている単語は help と打って表示されるコマンドから拝借したような気がするのですが、時代の流れによって help で出てくるヤツが増えてるのかもしれません。(気のせいかもしれませんが…)

    > 一応、コマンドプロンプトを立ち上げてhelpと打って表示されるコマンドを追加して、比較演算子6種類とリダイレクトなど、記号のいくつかも追加してみたmsyファイルはあるのですが、これって構文ファイルのところに公開した方が良いですか?

    比較演算子などはちょっと分からないのですが、help と打って表示されるコマンドの追加だけで良ければ標準の色分けで対応しても良いかも?とも思います。

    > 何がバッチの正式仕様なのか、よく知らないんです。バッチに詳しい人が載せてくれるのを期待して待っていた方が良いですか?

    私もバッチの正式仕様はわからないので、ツッコミを待ち続けて 10 年になりますが、一度も指摘されたことがなかったので、必要としている人が少ないのではないでしょうか?

    MS も PowerShell への移行を推奨していますし、バッチファイルは今後も廃れていく一方だと思いますので、MeryWiki に msy ファイルを登録していただけると、私としましては非常に助かるのですが、利用ユーザは少ないという予感がしなくもなくもなくもないです ^^;

     |  Kuro  |  返信
  35. 私もバッチファイルはほとんど作りませんし、作ってもバックアップのためにファイルをコピーするだけのような簡単なコマンドしか使いませんが、強調文字列に COPY も入っていませんでした。
    でも、簡単なコマンドしか使わないので「まっいいか」と思って放ってあります。

    > 構文ファイルのところに公開した方が良いですか?
    > 何がバッチの正式仕様なのか、よく知らないんです。バッチに詳しい人が載せてくれるのを期待して待っていた方が良いですか?
    内容の良し悪しに関わらず、公開することに意味はあると思います。
    少なくとも私は、バッチファイルについてはあれば欲しいかも(なくても別に構わないが)。

    Wiki だから、それを元にして、詳しい人・過不足や不具合に気づいた人がどんどん編集していけば良いものに仕上がっていきそうですが、他の人が作ったものに手を加えるのはハードルが高いかな?
    私もちょっと躊躇すると思うので。

    >> Kuro さん
    上のほう(https://www.haijin-boys.com/discussions/3655#discussion-3770)でコメントされていますが、1つの編集モードに対応するだけでも大変そうですし、ましてや全てについてメンテナンスしていくのは現実的に厳しいと思いますし、それに時間をかけるのなら、Mery 開発に限らず他に使って欲しいと思います。

     |  774  |  返信
  36. Mery の JavaScript マクロ用にキーワードを寄せ集めたものをつくってみましたが、どのように色(グループ)分けすればよいかわからないので、どなたか仕上げていただけないでしょうか…
    https://www.haijin-boys.com/wiki/Mery_Macro_JS
    ※wikiの「構文ファイル」のページ上ではとりあえず非表示(コメントアウト)にしてあります。

    仮バージョンを ZIP でアップロードしてあり、wiki のマクロリファレンス内にあったマクロ専用のタームと、前出のリンクや MSDN のリファレンスなどから集めた JavaScript のターム、マクロ内でしばしば利用される WSH の FileSystemObject などのタームを詰めてあります。

     |  sukemaru  |  返信
  37. >MeryWiki に msy ファイルを登録していただけると、私としましては非常に助かるのですが、

    そういうことならば!と、774さんにも「公開することに意味はある」と言っていただけたことですし、恥ずかしながら先程、登録させて頂きました

    >利用ユーザは少ないという予感がしなくもなくもなくもないです ^^;

    10年ツッコミなしということは、やはり……とは思いますが、仕様をよくわかってない私が構文ファイルを投稿しちゃってもいいかな☆テヘッっていう気楽さはありました

    それにしてもWikiがよくわかんなくて悪戦苦闘しました練習ページも使わせて頂きましたが色々失敗しちゃって……たぶん平気だと思いますが何かまずいことをやらかしていたらすみません

     |  シリル  |  返信
  38. MeryWiki へのご投稿ありがとうございます。そして、お疲れ様です。

    > 10年ツッコミなしということは、やはり……とは思いますが、仕様をよくわかってない私が構文ファイルを投稿しちゃってもいいかな☆テヘッっていう気楽さはありました
    全然大丈夫です!

    774 さんもおっしゃられていましたが、Wiki はみんなで編集するための仕組みなので、他の人が作ったページを編集したりして、より良いものにしていくっていう考え方ですから、間違っていても大丈夫ですし、たとえ作りかけだとしても大丈夫です。

    > それにしてもWikiがよくわかんなくて悪戦苦闘しました練習ページも使わせて頂きましたが色々失敗しちゃって……たぶん平気だと思いますが何かまずいことをやらかしていたらすみません
    Wiki、拝見いたしましたが、問題ないと思います。Wiki の編集って慣れてくるとなかなか楽しいものですが、最初は苦労しますよね。本当にお疲れさまでした ^^

     |  Kuro  |  返信
  39. いただきました。ありがとうございます。

    さらっと見て、強調文字列 (1) でコマンドではなさそうなものは、ON/OFF(定数?)、NOT(演算子?)、EXIST/ERRORLEVEL(条件?)くらいなのか。

     |  774  |  返信
  40. 自己レスです。
    Mery の JavaScript マクロ用の構文ファイル「Mery Macro JS」に一応色分けをしてみました。
    https://www.haijin-boys.com/wiki/Mery_Macro_JS
    書庫には色分けなし/色分け済みの MSY ファイル、入力補完用とスペルチェック用辞書ファイル、編集モードの自動選択マクロを同梱してあります。

    入力補完用 js.txt ファイルの内容はコチラ → https://pastebin.com/A2ms7Vdm

     |  sukemaru  |  返信
  41. > さらっと見て、強調文字列 (1) でコマンドではなさそうなものは、ON/OFF(定数?)、NOT(演算子?)、EXIST/ERRORLEVEL(条件?)くらいなのか。

    チェックありがとうございます
    その5つは私の環境でもhelpと打って出てこないので、なんと言いますか、グループを分けるべきだったか、または比較演算子をわざわざ分けないで一緒くたにした方が良かったかもなのですが、気づいてませんでした
    気づいた今どうするかというと、OFFを@echo offで使うくらいなのでやっぱりよくわかんないので手をつける自信がありません

     |  シリル  |  返信
  42. おつかれさまです、早速いただきました
    文字列が強調されないところとか気になって#QuoteDouble=Trueなどちょこちょこ変更しましたが、本格的な見た目になったと思います、ありがとうございました

     |  シリル  |  返信
  43. ご返信、ありがとうございます。

    久しぶりにバッチファイルをいじってみて、実際には使わないだろうと思いますが、自分用にちょっと追加、修正してみました。

    Wiki にファイルを追加してみようと思いましたが、ページを開いて編集タブを選んだ時点で断念。
    https://dotup.org/uploda/dotup.org1686476.txt
    拡張子:msy はアップロードできなかったので、txt にしています。

    強調のグループを変更
     ON/OFF/NOT/EXIST/ERRORLEVEL
    : を変更
     CALL コマンドでラベルにジャンプするときにラベルに渡すパラメータは強調しないように変更
     (例 CALL :LABEL_1 HIKISU1)
     goto コマンドでは : を付けないから : が先頭にある場合のみを対象にしたほうが良いかな?
    条件?を追加
     DEFINED/CMDEXTVERSION
    デバイス?を追加
     NUL/CON/PRN/LPTX/AUX/COMX
    環境変数を追加
     %CD%/%DATE%/%TIME%/%RANDOM%/%ERRORLEVEL%/%CMDEXTVERSION%/%CMDCMDLINE%/%HIGHESTNUMANODENUMBER%

    強調のグループは後からまとめるのは簡単だと思うので、とりあえず適当に分けてみました。
    強調1:コマンド、強調2:演算子、強調3:ラベル、強調4:ECHO、
    強調5:記号、強調7:定数?・環境変数・条件?・デバイス?

    確かに ON/OFF は私も ECHO しか使いみちを知らないから、グループを別にする必要はないかもしれませんね。
    IN/DO は FOR 文で使うみたいですが、どこに分類すべきか分からず、そのままです。

     |  774  |  返信
  44. > 久しぶりにバッチファイルをいじってみて、実際には使わないだろうと思いますが、自分用にちょっと追加、修正してみました。
    >
    > Wiki にファイルを追加してみようと思いましたが、ページを開いて編集タブを選んだ時点で断念。
    > https://dotup.org/uploda/dotup.org1686476.txt
    > 拡張子:msy はアップロードできなかったので、txt にしています。

    おぉー!修正ありがとうございます
    早速構文ファイルのところに追記してみましたが、こういう書き方でいいんだろうか……たぶんいつかどなたかが修正するときには経緯が見えた方がわかりやすいとは思うのだけど、私がアップしたファイルは消してしまいたいし、トップの名前も変えた方がいいな
    もう少しいじってみます、その他何かあればお願いします

     |  シリル  |  返信
  45. うぐ、ファイルが重複してしまった。消し方がわからない><
    Kuroさん、皆さん、ご迷惑をおかけしてしまい、誠に申し訳ないです

     |  シリル  |  返信
  46. 感想のコメントをいただき、ありがとうございます。 :)

    「タグ」や「二重引用符」、行コメントマーク( // )は私好みの仕様という部分もあり、デフォルト状態でははずしてあります。特に「二重引用符」などは、私の投稿した「カッコで囲う」「引用符/コメント」「引用符を追加/削除」などのコードと相性が悪いし…。むしろ、デフォルト状態だと強調されないのはユーザー変数/関数/文字列部分ぐらいのはずです。 :D

    使う方が自分好みにカスタマイズしやすいように? というかんじで資料的な意味をふまえての注釈付き版(色分けなし)と、とりあえずお試しください的な軽量版(色分けあり)をパックしておきました。
    一応プロパティやメソッド、定数などのスペルミスがその場で分かるので、マクロの JS を編集するさいにけっこう便利になるんじゃないかとおもいます。

    インポートしてしまうとアルファベット順でソートされてしまうので、MSYを直接いじれる人でないと使いづらいかもとおもったりおもわなかったり…。 MSY を直接編集するさいは該当編集モードで見るほうが色分けがわかりやすいということもあり、正規表現をバリバリ書くとき以外は「Mery MSY」専用の自作編集モードを使うことがなかったりします。

    入力補完辞書のほうは文字数の多い定数(引数)をそのまま収録したので、Ctrl+Space のポップアップの幅に収まらないものがけっこうあってイマイチかもしれませんね。

    Mozilla などの Web 開発用のリファレンスを調べたら意味不明なぐらいいっぱいキーワードがあるようで、そちら方面にいっさい不案内なわたしには収録・編纂することはできませんでした(マクロの JS にですら四苦八苦しているレベルですので)。 :( そんなわけでタイトルには JavaScript 用という部分を堂々と出さず JS とだけ添えている次第。

     |  sukemaru  |  返信
  47. > 早速構文ファイルのところに追記してみました
    追記、ありがとうございます。お手数をおかけしました。

    でも、強調文字列として ELSE が抜けていました。
    他にもあるかもしれませんが。

     |  774  |  返信
  48. 某エディタのものを参考にするのもありかも。
    https://hide.maruo.co.jp/lib/hilight/batch3.html など

     |  774  |  返信
  49. 秀丸の JavaScript 用の強調定義をDLして「Mery Macro JS」モードで見たら、私の作ったものの倍ぐらいのキーワードを収録していそうでした…。 内容語を振り分けする知識もないのでマネはできそうにないです。 :(
    それは別として強調されるはずのもので漏れがあったり、Mery のキーワードに漏れ・間違いがあったので、wiki の「Mery Macro JS」は差し替えました。自動補完辞書とスペルチェック辞書もふくめて更新して、「Mery Macro JS」から Mery の固有キーワードを抜いた「JavaScript.msy(仮)」を追加しておきました。

    自動補完機能のポップアップのサイズは Mery.ini の [CompletionForm] セクションで変更できるんですね。
    うちのフォントサイズだと Width=360 ぐらいがちょうどよいようでした。 :)

     |  sukemaru  |  返信
  50. > でも、強調文字列として ELSE が抜けていました。

    チェックありがとうございます
    ELSEと合わせて以下のコマンドを追加しました

    CTTY/ELSE/IPCONFIG/LFNFOR/LH/LOADHIGH/LOCK/RSH/TRUENAME/UNLOCK

    環境変数?やデバイス?として以下も追加しました

    %COMSPEC%/DIRCMD/PATHEXT/LPT/COM/USB/TTY

    某エディタのコマンドっぽい箇所を上から順に見ていって、一応、「バッチ 〇〇」とググってみて、いくつかコマンドプロンプトの解説サイトが表示されたら、追加していく形で作業しました。コマンドっぽくない箇所はよくわからないので見なかったことにしました。

    デバイスに追加したLPTやCOM等はLPT1,COM2のように数字付きで表現されるようですが、数字全部追加するの面倒だなと思ったのと、%1,%2などは確か変数のように扱えたかと思いますが、これも個別に登録してないので数字以外の部分を強調表示でいいやと思いこのようにしています。独断と偏見ですので「いやいや、ちゃんと登録するべき」という人が現れたら反対はしません、その人にお任せです。

    SEPARATEなどコマンドのオプションらしき単語は、追加すると際限がなくなると思い無視しました。

    KEYS/GRAFTABL/DPATH/CLOCK などのように「バッチ 〇〇」とググってもヒットしなかった単語も無視しました。

     |  シリル  |  返信
  51. おお! Batch3.hilight の中身を全部ではないにせよ取り込んだのですね。
    いただきました。ありがとうございます。

    > 某エディタのコマンドっぽい箇所を上から順に見ていって、一応、「バッチ 〇〇」とググってみて、いくつかコマンドプロンプトの解説サイトが表示されたら、追加していく形で作業しました。
    お疲れさまでした。

    いただいた Bat.msy を Batch3.hilight に使ってみたら、残っている(強調表示されない)のは確かによくわからなそうなものですね。

    > その人にお任せです。
    それで良いと思います。

    Batch3.txt を見ると、in do on off exist などは、コマンドオプションと呼ばれているみたいですね。

    >> sukemaru さん
    マクロは今後も作らないとは思いますが ^^;、いただきました。ありがとうございます。

    行頭に # でコメントにできるのですね。
    #TagBegin= とか #Word とかの msy ファイルでのキーワードは当然ダメでしょうが。
    勉強になりました。

     |  774  |  返信
  52. > 行頭に # でコメントにできるのですね。

    自作編集モードをエクスポートしたときに「^」と「#」のまえに「^」が付いていたので、「^」は退避修飾のメタ文字で「#」はコメントアウト(無効化)につかえるメタ文字だろうとアタリをつけていじってみたらビンゴでした(Kuro さんのお墨付きももらっています)。
    編集モードから再エクスポートで上書きすると消えちゃいますけど、あれぐらい項目や分類があると注釈がないと不親切ですよね。色分けのしかたに自信がないから、という理由も大きいのですが… 。 :(

    以前、正規表現用の編集モードを作るさいにメタ文字が多重にかかっててわけ分からなくなるので Mery MSY 用の構文ファイルも作りました。長くて複雑な正規表現だと「編集モードのプロパティ」の枠内で記述するのはたいへんですから…。 :)

    > #TagBegin= とか #Word とかの msy ファイルでのキーワードは当然ダメでしょうが。

    「#」+「TagBegin」 とか 「#」+「Word」 というキーワードでしょうから、##TagBegin とか ##Word にすれば「#」+「#TagBegin」 、「#」+「#Word」となり意味が変わって?実質的に無効化されます。
    「#Word Color」の行は「WholeWord」以降のオプションそれぞれに「##」をつけないと無効化されないようでしたが、MSY 構文ファイルからのインポートで上書きされたくないオプションは「=」の右辺を空にしておくのが無難でしょうね。
    アップロードした構文ファイルでは基本的に「TagBegin」などのオプションの右辺は空、「RightAll」オプションを削ってありますが、上書きインポートしても設定済みの「タグ」などが消去されることはなく、「行の右をすべて強調」のチェックが外されてしまうことはありませんでした。

     |  sukemaru  |  返信
  53. ご説明、ありがとうございました。

    > 「^」は退避修飾のメタ文字
    Mery Macro JS の (?^#半角数字 123 )(?<!\w)[0-9]+(?!\w) などの (?^#半角数字 123 ) 部分がどういうことかと思いましたが、# がエスケープされていたのですね。

    で、エスケープされていない表記だと正規表現中に置くコメントになり、
    正規表現を使う場合に限られますが、強調文字列を
    編集モードのプロパティダイアログで編集する場合は、(?#コメント)
    構文ファイル(.msy)を直接編集する場合は、(?^#コメント)
    を入れておけば、その文字列に対するコメントが付けられるわけですね。

    > Mery MSY 用の構文ファイルも作りました。
    そんなに複雑なことをやるわけではありませんが、いただきました。
    ありがとうございます。

    > 長くて複雑な正規表現だと「編集モードのプロパティ」の枠内で記述するのはたいへんですから…。
    キーワードになる文字列を他からまとめて持ってくる場合も、直接編集したほうが楽ですしね。

     |  774  |  返信
  54. 一般的な退避修飾子 \ だと正規表現内ですでに \\ で記述されている部分を \\\\ にしないといけなくなるので ^ を退避修飾子にしているのでしょうね。
    正規表現でつくった編集モードを MSY で開く人は少なそうですが、じっさいに開いてながめてみると眩暈が…。

    MSY ファイルのいじり方をおぼえると編集モードの項目の並び(上下)を自由に変更できますから、「編集モードのプロパティ」パネルに「上へ/下へ」ボタンがなくてツライ人や、きれいにグループ分けしてソートしたい人などはチョットだけ幸せになれますよね。
    「エクスポート」で既存の MSY ファイルに上書き保存すると並び順が意図せぬカタチでキレイになってしまうのでお気をつけて。 :)

    一応、MSY 編集の小技・豆知識?はもう少しあります。

    ・分類用の見出しをつける場合は、文書の文字列にマッチしなくなるようにテキトーな記号を付加したり、英数字や記号、カタカナなどの全角/半角をイレギュラーなかたちにするとよい
    ・くわえて、正規表現を使う項目なら「|」で区切って注釈をつけたり、 (?^# ... ) 形式でコメントを挿入したりできる → エスケープ 「^」 がとれて正規表現の注釈形式 (?# ... ) になる
    ・正規表現で記述した項目なら「正規表現」オプションを OFF (RegEx=False) にすれば項目の 有効/無効 を切り替えできる
    ・正規表現でない項目なら、先頭に記号か全角スペースを2~3コつけると文書内でマッチしなくなるので実質的に無効化できる
    ・正規表現をムダに多用するとエディタのスクロールが重くなる (逆に単語の羅列で構文ファイルが長くなると…)
    ・でかい構文ファイルをいくつも入れると mery.ini が肥大化して Mery の起動が少し遅くなる(HDD 環境ならデフラグすると少しだけ改善する)

    私やシリルさんのような説明ページを設けず、ほかの方たちのように「構文ファイル」のトップページに直リンだけ置くこともできますので、自作の編集モードも投稿してみてはいかがでしょうか。 :)
    ZIP でアップロードしたら「構文ファイル」のトップページに &#91;&#91;ファイル:"ファイル名.zip"&#93;&#93; (実際にはダブルクオートは不要)と記述するだけです。※外部サイトにアップロードした場合は &#91;URL "編集モード名"&#93;

     |  sukemaru  |  返信
  55. 失敗、実体参照は使えないようですね。

    ZIP でアップロードしたら「構文ファイル」のトップページに [[ファイル:"ファイル名.zip"]] (実際にはダブルクオートは不要)と記述するだけです。
    ※外部サイトにアップロードした場合は [URL "編集モード名"]

     |  sukemaru  |  返信
  56. 小技・豆知識、ありがとうございます。
    私が作る文書程度であれば正規表現をたくさん使っても動作に大差ないとは思いますが、強調表示に正規表現はなるべく使わないようにしているので、それほど利用する機会はありませんが、使うときには参考にさせてもらいます。

    > 自作の編集モードも投稿してみてはいかがでしょうか。 :)
    ちょっと前に、シリルさんが作ったところのファイルダウンロードのページにファイルを追加しようと思いそこの編集タブをクリックしたら、編集するところがほぼ真っ白な状態だったので、それからどうすれば良いのかわからず断念しました。
    テキストや HTML のソースみたいなものが出てきてそこから編集するものと思っていましたので。

    そもそも、新たに投稿するような編集モードがありませんが。

    別件ですが、グループ分け(色分け)はどういう感じにするのがわかりやすいのでしょうね?
    既存の一部の編集モードについては、このディスカッションの上のほうにちょこっと挙がっていますが。
    個人個人の好みかな?

     |  774  |  返信
  57. > グループ分け(色分け)はどういう感じにするのがわかりやすいのでしょうね?
    Pastebin に貼ったマクロ.js だと "文字列" は青、 .Property() は紫(カッコは緑)、数字は赤、コメント文は緑、演算子など punctaion と /RegExp/ も緑、命令文は紺色 ... となっているようでした。Mery 固有のプロパティやメソッドも紫になっていたのでキーワードではなくドットと開きカッコの間にあるものを紫にしているだけかも?とおもいきや、カッコがうしろにない .length とかも紫 ... 。
    GitHub の JS はキーワードで着色しているようですが、特定のキーワードは青、数字と /RegExp/ も青、.Property() は紫、演算子などの記号は赤、命令文も赤、"文字列" は紺色、コメント文はグレー ... 。

    私は雑文を書くのが主ですし、マクロ以外のプログラムを書けませんから適当です。青と紺色は区別していませんが、一応 PasteBin のをベースにしているかんじでしょうか?
    強調色 1~4 は Mery のデフォルトの青、紫、赤、緑。特定の文字種やキーワードを見分けたり誤入力チェックしやすいように 5~7 をシアン、ピンク、太字の赤にして、8番はグレー(構文ファイルの注釈部分に書いたとおりです)。
    プログラム用のフォントを入れていないので、ゼロ 0 とオー O、イチ 1 アイ I と エル l と バー | を見分けるのにマーカーも使っています(頻度の低いオー O とアイ I に文字色=背景色=透明で下線 "I|O" )。数字は赤、バー | はピンクで強調(正規表現)。

    > 私が作る文書程度であれば正規表現をたくさん使っても動作に大差ないとは思いますが、強調表示に正規表現はなるべく使わないようにしているので、それほど利用する機会はありませんが、使うときには参考にさせてもらいます。
    「正規表現」を有効にしたほうが強調表示の優先度が高いようなので、先の構文ファイルではメタ文字を正規表現項目にしてあります …簡易的な条件付けしかしていませんが。 :|
    動作を犠牲にしてでも強調させたいキーワードは正規表現! :D

     |  sukemaru  |  返信
  58. ご返信、ありがとうございます。

    なるほど。グループ分け(色分け)は、色分けされて表示されるページも参考になるのですね。
    いろいろとあって余計混乱しそうでもありますが。

    if などの制御命令、その他の命令、オブジェクト、プロパティ、メソッド、定数など種類で分けるのが良いかなと思いましたが、それをやりだすと全ての文字列がどれに当たるのかを知らないといけないので、よほど詳しい人でないと調べなければいけないので厳しいですね。

    > 特定の文字種やキーワードを見分けたり誤入力チェックしやすいように 5~7 をシアン、ピンク、太字の赤にして、8番はグレー
    > プログラム用のフォントを入れていないので、ゼロ 0 とオー O、イチ 1 アイ I と エル l と バー | を見分けるのにマーカーも使っています(頻度の低いオー O とアイ I に文字色=背景色=透明で下線 "I|O" )。数字は赤、バー | はピンクで強調(正規表現)。
    そういう使いみちもあるのですね。参考になりました。
    マーカーの併用や、強調文字列に太字や下線を使うのも良さそうですね。

    > 「正規表現」を有効にしたほうが強調表示の優先度が高いよう
    これも、なるほどです。
    今のところ重複するようなものはなさそうですが、優先させたいものがあるときには役に立つかも。

     |  774  |  返信
  59. > なるほど。グループ分け(色分け)は、色分けされて表示されるページも参考になるのですね。
    > いろいろとあって余計混乱しそうでもありますが。
    ご当家 Mery Wiki のマクロライブラリも PasteBin や GitHub とはちがう色使いですね。

    > マーカー
    Version 2.6.12 のふるまいでは「強調文字列色」+「マーカーの下線(透明)」がうまくいっているだけでして、強調表示の仕様は次のバージョンでも変更されるようですからどうなるでしょうね。マーカーと検索文字列のかけ合わせの変更だけならこのままいけそうかしら? :|

    > > 「正規表現」を有効にしたほうが強調表示の優先度が高いよう
    「行の右を強調」した行で重複したときに単語の強調色が勝つ可能性が高いかも?ぐらいのオマジナイですね。
    「正規表現」を有効にすると検索/置換ダイアログの場合と同様に「単語のみ」オプションは暗黙的に無効になるなるようですから、かえってジャマになる場合もあるとおもいます。

    > if などの制御命令、その他の命令、オブジェクト、プロパティ、メソッド、定数など種類で分けるのが良いかなと思いましたが
    注釈上の分類は MSDN のリファレンスに依拠したものなのですが、同じキーワードがべつの形式の説明にもご登場なさったりして。 :o

     |  sukemaru  |  返信
  60. 確認してみましたところ、強調色1番に集めたキーワード abstract - yield は基本的に notepad++ や gPad でもひとまとめのグループになっていました。notepad++ で null はこのグループ、gPad (登録されたキーワードは少なくて大文字/小文字の区別なし)だと Boolean, Delete, Function, null もココでした。小文字で記述するのがデフォのリテラル値 null は、真偽値リテラル true, false と同じ扱いとしてココに入れられているのかもしれませんが、Mery Macro JS では undefined と同様に「定数」というくくりで3番に入れました。どちらも定義を上書きしちゃいけない予約語グループというで。

    「JSオブジェクト」として集めたものはオブジェクトでいいとして。 ?
    「プロパティ」はそもそも意味が大きい分類のようで、Text プロパティ(→ String)、length プロパティ(→ Number)など、オブジェクトのようにふるまうものもあって意味不明…。 :(
    くわえて、定義されている関数にはオブジェクトのように扱えるものとメソッドのような機能的なものとがあり、そもそも「メソッド」ってプロパティのなかのの分類のようなものらしいとか…(なるほど? と、この程度の理解までに数時間)。
    こんなかんじで強調色2番のグループに集めたものは色分けを諦めました。あえて強調色を分けるなら、うしろのカッコの有無を正規表現でとか。

    3番の定数は問題ないですよね? (数学苦手な自分が記述するような場面もないのであまり気にしていません) NaN, null, undefined がここにあるので、自分用の編集モードでは false や IsEmpty などの否定的な意味のキーワードも3番に入れて赤くしてます。
    正規表現で5番に集めた定数値の引数はリテラル引数を集めた4番に統合したほうがよかったらそのように、ということで。定数値の引数は、強調の優先度が高く不要なら無効化しやすい「正規表現」にしていますが、算術演算子やカッコとは別色のほうが見やすいかな?ぐらいで、色を分けたことにあまり意味はありません。そもそもエンコード定数は2,3種類しか使わないでしょうし、コマンド定数を使うマクロなんてめったにないですから、まとめて無効化してしまうのが吉。
    残りが5番=分類不明のキーワードグループ…( notepad++ でもおおむねひとくくりになっていました)。数値の引数は WholeWord=True にしても RegEx=True とバッティングして意味ないのですが、正規表現のスラッシュの項目とと混ざらないようにあえて。
    ※ 5番に入れてある「正規表現の / 」だけを区別できる正規表現のうまい書き方をご存知でしたら教えてください(コメントマークや URL との区別)。あと「ドット . 」などのメタ文字も URL に誤爆しまくるんですよね。

    6~8番は色の使い方も人それぞれであろうとおもって、とりあえずメタ文字などを集めただけです。ここで JavaScript のキーワードと Mery 固有のもの、WSH のものを色分けすることも考えましたが、Mery と WSH のキーワードでカブるものがあったり、そもそも大文字/小文字の区別をなくせば JS のキーワードとカブっていますし…。うまいことふりわけできるようでしたらそのように使ったり、お好みで気になるキーワードに割りあててくださいね、ということで。 :)

    MDN (Mozilla) のリファレンスは… 入り口から数ページだけ開いただけでくじけてしまいブラウザを閉じて寝ました。今後私があそこを訪ねることはないとおもうので、秀丸エディタの javascript.highlight ファイル(2006/06/30)内のすべてに色を付ける仕事はほかの方にお譲りします。
    そもそもあちらの仕様が分からないのですが、オブジェクト名と一部の予約語(おもに命令系)だけが「225」で他はまとめて「161」のようですから、問答無用で2番か5番に入れて重複行を削除するだけ? :|
    マクロ用の構文ファイルと別に JavaScript.msy(仮)を用意してありますので、秀丸さんに負けたくない人はやってみてください。 :)

    Web 開発をしない人なら自分の環境の JavaScript エンジンで定義されていないキーワードを入れてもあまり意味がないですし、余計なキーワードを増やすと自作マクロのユーザー定義の変数や関数で使っちゃいけない予約語かどうか判断しづらくなるだけということで、エディタのデフォルト状態では1番と3番あたりのキーワードしか登録されていないのかもしれませんね。
    ※ 一応、JavaScript.msyのキーワード(約480語)のうち約190語は、javascript.highlight ファイル(約710語)で未収録です(大文字/小文字は区別して)。Mery Macro JS ならさらに WSH のキーワード70語以上と Mery 固有のキーワード約270語プラス約30種のメタ文字に対応!

    ▼MDN のリファレンスで少しだけ回収したけど収録しなかったキーワード▼

    ^#JS予約語(?)
    async
    target
    #または
    # function
    #new.target
    
    ^#JSオブジェクト
    AsyncFunction
    Atomics
    EvalError
    InternalError
    RangeError
    ReferenceError
    SyntaxError
    TypeError
    URIError
    Generator
    GeneratorFunction
    Intl
    Iterator
    ParallelArray
    Proxy
    SIMD
    SIMD.Bool8x16
    SIMD.Bool16x8
    SIMD.Bool32x4
    SIMD.Bool64x2
    SIMD.Float32x4
    SIMD.Float64x2
    SIMD.Int8x16
    SIMD.Int16x8
    SIMD.Int32x4
    SIMD.Uint8x16
    SIMD.Uint16x8
    SIMD.Uint32x4
    SharedArrayBuffer
    StopIteration
    Uint16Array
    Uint32Array
    Uint8Array
    Uint8ClampedArray
    WebAssembly
    WebAssembly.Module
    WebAssembly.Instance
    WebAssembly.Memory
    WebAssembly.Table
    WebAssembly.CompileError
    WebAssembly.LinkError
    WebAssembly.RuntimeError
    
    ^#JS関数(旧)
    uneval

    ほとんどは非推奨の注記つきのものでしたし、他にもたくさんの漏れがあるとおもうので、きっと気休めにもなりませんね。そのうえ、私には使い方のわからないプロパティや関数も集めるなんて無理です…。 :|
    長文にて失礼しました。

     |  sukemaru  |  返信
  61. ご返信、ありがとうございます。

    > 「行の右を強調」した行で重複したときに単語の強調色が勝つ可能性が高いかも?ぐらいのオマジナイですね。
    ああ、そういう場合は実際にありえますね。
    日本語を強調表示するケースは誤記防止みたいな使い方くらいしか思いつきませんが、例えば、
    テキスト:中学校
    強調1:中学
    強調2:学校
    この場合、強調表示されるのは、「中学」のみ。
    強調2:学校の[正規表現]にチェックすると、強調表示されるのは、「中」と「学校」。
    こういうのを想定しました。

    どうでもいいことですが、正規表現は除くと文字同士で優先順位はなさそう(文字の位置が優先されていそう)ですね。
    例えば、
    テキスト:あいうえおあいうえおあい
    強調1:あいう
    強調2:うえお
    強調3:おあい
    この場合、強調表示されるのは、1つ目の「あいう」、1つ目の「おあい」、2つ目の「うえお」。
    まあ、こんなことする人はいないでしょうが。

    > 確認してみましたところ
    それほど深い意味があってコメントしたわけではありませんが、わざわざ確認していただき、お手数をおかけしました。
    sukemaru さんの分類基準をだいたい理解しました。
    他のエディタでもそれほど厳密には分類していない(そもそも分類しづらいものもある)のですね。
    結局は、あとは自分の使用状況に合うように個人個人にお任せするのが良さそうですね。

    > そもそも「メソッド」ってプロパティのなかのの分類のようなものらしいとか…(
    言語(編集モード)によって違いがあるのかもしれませんが、かなり前にオブジェクト指向を教えてもらったときに、こんな感じだったと思います(うろ覚え)。
     オブジェクト:あるもの、独立している機能体
     プロパティ:オブジェクトの属性、データ(オブジェクトの状態や性質などを表すもの)
     メソッド:オブジェクトが実行できる操作、命令(動作的なもの)
    例えが適当かわかりませんが、車というオブジェクトのプロパティは色とか車種とかなど、メソッドは動かすとか止まらせるとかなど。
    JavaScript は全く分かりませんが、Mery のマクロリファレンスを見るとプロパティも動作的に見えますが、オブジェクト自体の状態などを取得/変更するのであって根本は状態を表していると理解しています。

    > ※ 5番に入れてある「正規表現の / 」だけを区別できる正規表現のうまい書き方をご存知でしたら教えてください(コメントマークや URL との区別)。あと「ドット . 」などのメタ文字も URL に誤爆しまくるんですよね。
    正規表現は基本的なことしか分からないので、私には分かりません。^^;

    もう出かける時間なので、間違っていたり変な文章になっていたら、ごめんなさい。
    あと、表題からちょっとズレているのでこのあたりで止めにしておきます。

     |  774  |  返信
  62. 「Mery Macro JS」のソースコードのリンク先にしてある PasteBin のページの閲覧数が 100 を超えてました~。
    マクロ用としてなのか JavaScript 用としてなのかはわかりませんが、けっこう需要があるようで作った甲斐がありました。 :)

     |  sukemaru  |  返信
  63. こちらは自分個人の Mery_Macros_JS 用に include ライブラリの関数を追加するためにまとめたものです。
    使用中の Mery_Macro_JS をエクスポートした MSY ファイルに追記してインポートしなおすか、別途追加インポートしてください。

    include ライブラリ内の JS ファイルを開いたさいに include 関数を強調色5で装飾できるので、ソースコード内で「何が関数として使える部分なのか」を見分ける助けになるかとおもいます。

    ※すでに Wikiで公開している Mery Macro JS をそのままインポートしてある場合、一部の関数名は登録済みの Mery 固有のメソッド名や JS ネイティブの関数/メソッド名、 WSH のオブジェクト名などと重複するので、こちらの include ライブラリ拡張用の語群では # で無効化(コメントアウト)してあるものがあります。
    オブジェクト名からつなげて "IO.Path" や "IO.Folder.Copy" , "IO.File.Copy" などのように書き換えてインポートすれば、衝突を回避できます、多分…

    ####  強調色5(WordColor 4)
    #Word Color=4, WholeWord=True, RightSide=False, RightAll=False, MatchCase=True, InsideTag=False, RegEx=False
    ^#includeライブラリ ==============
    ^# IO.js =====================
    IO.
    # Path
    # Add
    GetParent
    IsExist
    GetExtension
    # GetFileName
    GetBase
    # GetDrive
    GetAbsolute
    IsFolder
    IsFile
    SetCurrent
    GetCurrent
    CreateFolder
    LoadFromFile
    SaveToFile
    SaveBinaryToFile
    SaveDocumentToFile
    Serialize
    Deserialize
    Include
    # Folder
    # GetObject
    GetAttributes
    SetAttributes
    GetDateCreated
    GetDateLastAccessed
    GetDateLastModified
    GetName
    SetName
    GetParentFolder
    GetPath
    GetSize
    GetType
    GetFiles
    GetFolders
    # Copy
    # Delete
    # Move
    # File
    IsDirectory
    # Exec
    LoadText
    SaveText
    Attribute
    Normal
    # ReadOnly
    Hidden
    System
    Volume
    Directory
    Archive
    Alias
    Compressed
    ^# BookmarkList.js ===========
    BookmarkList.
    GetOnSelect
    GetOnArea
    GetOnDocument
    SetToDocument
    ^# FindReplace.js ============
    FindReplace.
    FindAsIndex
    FindAsIndexUseMery
    FindAsArray
    ReplaceByArray
    ^# HTTP.js ===================
    HTTP.
    DownloadFile
    GetHtml
    GetHeader
    ^# MathEx.js =================
    MathEx.
    _ceil
    _floor
    _round
    sinD
    cosD
    tanD
    asinD
    acosD
    atanD
    atan2D
    _random
    ^# MD5.js ====================
    MD5.
    HashBinary
    Hash
    ^# MeryInfo.js ===============
    MeryInfo.
    GetSettingFolderPath
    GetMacroFolderPath
    GetIniPath
    IsPortable
    IsWrap
    IsTab2Space
    IsAutoIndent
    GetTabSpace
    GetStartDate
    ^# Registory.js ==============
    Registory.
    WriteNumber
    WriteString
    WriteBool
    Read
    HasKey
    # Delete
    GetSubKeys
    ^# StateBackup.js ============
    StateBackup.
    Backup
    Restore
    ^# StopWatch.js ==============
    StopWatch.
    Restart
    Stop
    IsRunning
    Elapsed
    # toString
    ^# StringEx.js ===============
    StringEx.
    # trim
    equalsIgnoreCase
    startsWith
    # endsWith
    count
    # repeat
    width
    align
    # Format
    ptCodeToChar
    ptCharToCode
    ptCharToCode_r
    toCodeArray
    fromCodeArray
    toCodeArray_s
    fromCodeArray_s
    length_s
    substring_s
    slice_s
    substr_s
    indexOf_s
    lastIndexOf_s
    search_s
    charAt_s
    charCodeAt_s
    fromCharCode_s
    split_s
    GetCRC
    ^# WindowsInfo.js ============
    WindowsInfo.
    GetUserName
    GetArchitecture
    GetVersion
    GetServicePackMajorVersion
    GetServicePackMinorVersion
    GetName
    IsDotNetInstalled
    ^#includeライブラリ定数 ==========
    isClear
    isCaseSensitive
    hasBOM
    isGetRecursive
    isOverwrite
    isForce
    isIgnoreCase
    left
    center
    right
    isHex
     |  sukemaru  |  返信
  64. Mery ver 3.0.x / マクロリファレンス:3 に対応させた「Mery_Macros_JS.msy」のダウンロード用 ZIP 書庫を投稿したのですが、Wiki の説明用ページの更新に失敗してしまうのでこちらにてご報告を。

    マクロリファレンス:3 にある Mery のマクロ用キーワード全般と、「includeライブラリ」のキーワード、JavaScript (JScript) と WSH Shell.Application / Folder object / Scripting.FileSystemObject / ADODB.Streaming / Scripting.Dictionary などをふくむ)のテキスト操作およびファイルシステム操作に関するキーワードを強調表示できます。

    ・ZIP 書庫のダウンロード用ページ
    https://www.haijin-boys.com/wiki/ファイル:Mery_Macros_JS_3.zip

    ・Pastebin

    Mery_Macros_JS.msy (ver 3)
    https://pastebin.com/r23JeYk2
    https://pastebin.com/raw/r23JeYk2 (RAW)

    自動補完用 js.txt
    https://pastebin.com/GbzLVmgM
    https://pastebin.com/raw/GbzLVmgM (RAW)

     |  sukemaru  |  返信
スポンサーリンク