2016-10-13 2 views
3

私は、XML文字列の中にたくさんのLUAをコーディングしてしまう状況があります。 and it looks quite ugly, to be honest. syntax highlighting for the LUA, since that's the main focus of the fileを持つことが非常にうれしいです。私はこれがサポートされていると確信しています(明らかにSQLはPHP内部でハイライト表示されることもあります)が、構文ファイルの編集方法を探しています。ソリューションの中には、.tmLanguageファイルを編集する必要があると示唆されるものもありますが、これらのファイルを見つけることができず、sublime-syntaxファイルのどれもが同じ種類のフォーマットに見えません。Sublime Text 3のXML引用符内にLUA構文ハイライトを表示するにはどうすればよいですか?

それは状況が任意の容易になります場合は、必ずをLUA を含む文字列は"%function(self)で始まり、彼らはend"と常に終了、と私は本当にXMLでこのハイライト機能が欲しいです。

+1

してくださいすることができますLUAを埋め込んだサンプルXMLファイルをコピーして貼り付けることができます。それを行う方法の詳細なステップで答えと答え:) –

+0

[ここに行く](http://hastebin.com/vawicezuxu.xml)ありがとう! –

答えて

1

最初の手順は、編集のためにXML構文定義を開くことです。私はそれを行う方法を説明します。 tmLanguage(XML形式)ファイルを参照するものは古くなっています。サブライムテキスト3は、すべてデフォルトの構文強調表示のためにsublime-syntax(YAML形式)ファイルを使用します。

公式のgit repo https://github.com/sublimehq/Packagesを複製することをお勧めします(リポジトリのreadmeの説明に従ってください。パッケージのクローンを作成して崇高なテキストがそれを選択する方法を詳しく説明しています)。 gitを使用して正式版にあなたのバージョンに加えられた将来の変更(このカスタマイズされたバージョンで、STで自動的にアップグレードされるデフォルトのものを上書きするので)。 (基本的に、あなたはPreferences -> Browse Packagesメニュー項目に移動して、STからアクセス可能であり、あなたの崇高Packagesフォルダ内のレポからXMLフォルダをしたい。)

我々が興味を持っているファイルがXML/XML.sublime-syntaxです。ご覧のとおり、正規表現がいっぱいです。私たちが最も興味を持っているのは、XML属性を解析する場所です。

double-quoted-string:を検索してください。すぐにこの行の下に、次のように貼り付けます。最初の文字(match-)があった元- match: '"'に並ぶ必要があり

- match: '"(?=%function\(self\))' 
    scope: string.quoted.double.xml punctuation.definition.string.begin.xml 
    push: 
    - clear_scopes: true 
    - match: '"' 
     scope: string.quoted.double.xml punctuation.definition.string.end.xml 
     pop: true 
    - include: scope:source.lua 

注こと。

保存してください。以上です!


基本的に、私たちが何をしているか、である:平野二重引用符(")、それは文字列リテラル%function(self)続く二重引用符を探しますの構文をチェックする前に

  • 。これは先読みを使用して、includesource.luaのスコープになり、そのテキストとコードはLUAとして残りのLUAコードと共に正しく強調表示されます。
  • clear_scopes: trueを使用して、LUAコードがXMLテキスト/属性のように見えないことを確認してください。
  • 次に、閉じるXML属性の引用符(")を探し、スタックからコンテキストを「ポップ」してプレーンなXMLタグの内部に戻します。(私はendの前に"を探すことを選んだので、endはまだLUA構文定義で選択されます。そうでなければ、マッチ正規表現とスコープをXML構文で複製する必要があります。これは理想的ではありません。)

(あなたの地元のレポに新しいブランチを作成し、これらの変更をコミットし、それが簡単で、将来の公式変更をマージできるようにすることにしたいかもしれません。)

lua inside xml

+0

あなたは大歓迎です。 :)私はおそらくスコープ 'source.lua'を使用する方法を知っていたかのように、いくつかの接続点が見つからなかったでしょう。 - コメントの中の何かを明確にするために自由に質問してください:) –

関連する問題