2013-04-06 13 views
5

typedefの名前のシンタックスハイライトをC++ファイルで崇高なテキストで追加する方法を解明しようとしています。例えば構文崇高なテキストの強調表示2

Iはtypedef long long integer;を持っている場合、私は(他のタイプとして、好ましくは、同じ色:intbool、等)integerが強調表示されたいです。私はC.tmLanuageファイルを見て、次の正規表現コード^typedef.*?\s(\w+)\s*;storage.type.c(行49)に追加しようとしましたが、動作しませんでした。単語を追加すると、単語stringのすべてのインスタンスが強調表示されます。私はC++のtmLanguageファイルに入り、storage.type.c++に正規表現コードを追加しようとしましたが、それでも動作しませんでした。

typedefさんが崇高なテキストで強調表示される方法を知っていますか?

また、クラス名の構文ハイライトを取得する方法はありますか? stringまたはvectorと宣言したとします。stringまたはvectorのいずれかをハイライトしたいとします。

答えて

2

typedef foo;の行に沿って何かがあった場合、その正規表現は動作すると思います。あなたが望む動作を得るには、tmLanguageファイルに少し複雑なパターンエントリを作成する必要があります。言語ファイルはTextMatesに基づいているため、これを参照(http://manual.macromates.com/en/language_grammars#language_grammars)として使用することをお勧めします。 PlistJsonConverter(JSONでの作業はXMLでの作業よりも簡単です)を使用することをお勧めします。おそらく開始パターンと終了パターンを定義する必要があります(おそらくtypedefの終わりはおそらく;になります)。そのグループに必要なパターンを適用することができます。

クラス名の強調表示については、スコープが適用されている場合、何が表示されるかを見ていきます。存在しない場合は、それらにスコープを適用する正規表現を提出する必要があります。次に、カラーエントリを追加するか、カラースキームから定義されたものを使用します。

編集:

実際に彼らはJSONではありません。 []ではなく、()と表示されます。 JSONはかなり理解しやすいです。もっと深いものを探すことができますが、wikipediaは良い場所です。あなたが興味を持っているのは、「ルール・キー」セクションのものです。私はいくつかの検索をしました(そこにいくつかの良い例があることが分かっていたので)、http://docs.sublimetext.info/en/latest/extensibility/syntaxdefs.htmlに来ました。構文定義は一からやりますが、もっとも関連性の高いセクションはおそらくhttp://docs.sublimetext.info/en/latest/extensibility/syntaxdefs.html#analyzing-patternsです。私はクラス名を見つけるための正規表現を持っていないので、自分で自分自身を作り出さなければならないでしょう。あなたがまだいない場合は、あなたのために働く方法で他の誰かが言語ファイルを実装しているかどうかを調べたいかもしれません。

組み込みtmLanguageファイルから始め、Plistからjsonに変換したいと思うでしょう。そのファイルを編集して元に戻すことができます。

+0

私はJSONに精通していませんが、私がJSONで書いたリンクの言語文法ですか?もしそうなら、私はリンクに書かれているものに似た何かを書いて、コンバータを使ってそれを変換すると言っていますか?変換を.tmLanguageファイルに入れる必要がありますか?また、クラス名には正規表現が含まれていないので、正規表現を作成してそれらのスコープを適用するにはどうすればよいですか? – OGH

+0

私は長い間コメントをいただきましたように、私の答えを広げました。 – skuroda

関連する問題