web-dev-qa-db-ja.com

Notepad ++での言語定義の拡張(コードの強調表示用)

私はTWIGで最近開発を行っています。非常にシンプルで堅牢なhtmlテンプレート言語です。

.twigファイルを自動的にhtmlとして扱うようにnotepad ++を設定しました。これは問題ありませんが、twig関数では構文を強調表示できません。

twig構文は(設計により)非常にシンプルであり、notepad ++に簡単に追加できます。問題は、この問題について私が見つけるすべては、新しい言語定義の作成に関するものです(そして私はHTML定義を再発明したくない)、または言語の既存の構文ビットの色を変更したくない。

言語定義をコピーして、メモ帳++で変更する方法はありますか?そうでない場合、notepad ++で既存の言語定義に構文ビットを追加する方法はありますか?

edit

TWIGは、htmlテンプレート言語/エンジンです。それらの構文はhtmlと同じですが、制御ステートメントにいくつかの開閉タグ(具体的には{%%}、{{}}、および{##})が追加されています。詳しくは the twig website をご覧ください。

編集#2

Brian Deragonの回答に基づいて、私は3つのファイルを調査しています。これまでに私が理解/実行したことは以下のとおりです。

  • \ plugins\APIs\html.xml-オートコンプリートのために、キーワードを定義しているようです。 twig.xmlという名前のファイルのコピーを作成しました
  • langs.model.xml-繰り返しになりますが、1つのXMLファイルにすべての言語を含むキーワードのリスト。 HTMLオブジェクトをコピーして、nameおよびextパラメーターをtwigに置き換えました。
  • stylers.model.xml-さまざまなアイテムのリストと、それぞれのスタイル情報(色、bg色、フォントなど)があります。 HTMLセクションをコピーし、名前とdescパラメータをtwigに変更しました。

これらの変更が完了したら、twigファイルをNotepad ++で開いて、それが言語オプションにリストされていることを確認したいと考えていました。残念ながら、このファイルは表示されず、一部がハードコーディングされていると信じるようになりました。 (したがって、私が望むことは不可能かもしれません)。

ただし、stylers.model.xmlは興味深いものです。各エントリには、次のように定義された一連のアイテムがあります。

<LexerType name="twig" desc="TWIG" ext="">
    <WordsStyle name="DEFAULT" styleID="0" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="1" fontSize="" />
    <WordsStyle name="COMMENT" styleID="9" fgColor="008000" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" />
    <WordsStyle name="TAG" styleID="1" fgColor="0000FF" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" />
    <WordsStyle name="TAGEND" styleID="11" fgColor="0000FF" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" />
    ...
</LexerType>

これらは、さまざまな要素に対してスタイルが定義される場所のようです。これらの要素が定義されている場所はどこにもありません。 langs.model.xmlにはコメントの開始/終了の定義がありますが、その他の区切り文字の定義はありません。私が本当に必要なのは、notepad ++に{}を区切り文字として扱うように指示する場所です。

編集#3

私はまた、notepad ++のユーザー定義言語のこのリストを見ています http://sourceforge.net/apps/mediawiki/notepad-plus/index.php?title=User_Defined_Language_Files ユーザー定義言語は別のエンジンを使用しています、しかし私はそれを適応できるほど十分にhtmlに似ているものをそこで見つけることができるかもしれません。

26
MrGlass

ここで蛍光ペンを作成しました: https://github.com/Banane9/notepadplusplus-twig

10
Banane9

XML定義ファイル(html.xml)をコピーして編集するだけでよいはずです。コードの折りたたみ、大文字と小文字の処理ブロックまたは複数の条件に基づく高度な色分け、先頭文字の個別の書式設定、ラベルの色分け、xmlベースのコメント、言語の混合(色分け)など、基本を超えるものを必要としない限り埋め込みスクリプト)、アヒル型のカラーリングのサポートなど。「高度な」ものが必要な場合は、独自のレクサーを作成する必要があります。その場合、以下のほとんどが適用されます。

それでも、以下にリストするテンプレートを使用すると、独自の言語定義ファイルをすぐに開始できます。


私の知る限り、Notepad ++はScintilla Lexersを使用してコードルールを決定しています。

独自のレクサーを作成する必要がありますが、HTML Scintillaレクサーは既にScintilla ソースコード に含まれています。

次に、- プラグイン を使用して、カスタムレクサーを挿入します(例: GaryのLua Highlighterプラグイン )。

カスタムレクサーを構築するためのリソース:

そうは言っても、 Geany はNotepad ++(同じエンジン、Scintillaに基づく)に非常に似ているので、Geany用に既に行われているか、またはオープンソースプロジェクトがあるかどうかを確認したい場合があります。作品の中で。これは少なくともあなたに有利なスタートを与えるでしょう。

それでも問題が解決しない場合は、TwigがサポートされているIDEおよびエディタが次のように組み込まれています。

GEditは、言語のXML定義 here を公開しています。これは、独自の定義ファイルまたはレクサーを作成する際の参照として役立つ場合があります。また、Twig here )の人たちから公開された別のテンプレートも参考になります。

以下に、私が見つけたカスタムレクサー/ユーザー定義言語を作成するためのNotepad ++固有の最高のチュートリアルを示します。

勇気を出して独自のScintilla dllを構築したい場合は、これらのスレッドを参照して、それを機能させた人を確認し、言語リストに表示します(前のスレッドまたは次のスレッドメッセージを使用して、応答またはスレッドインデックスを確認します) ;メーリングリストなので、UIは最適ではありません)

それがあなたの助けになるか、あなたが少なくとも有利なスタートを切ることを願っています!

15
Brian Deragon