5

typedefそのため、崇高なテキストで、C ++ファイルの の名前に構文の強調表示を追加する方法を見つけようとしています。

たとえば、強調表示しtypedef long long integer;たい場合integer(できれば他のタイプと同じ色: intboolなど)。C.tmLanuage ファイルを調べて、次の正規表現コード^typedef.*?\s(\w+)\s*;storage.type.c(49 行目) に追加しようとしましたが、機能しませんでした。という単語を追加するstringと、単語文字列のすべてのインスタンスが強調表示されます。C++.tmLanguage ファイルにアクセスして、正規表現コードを に追加しようとしましたstorage.type.c++が、それでも機能しませんでした。

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

また、クラス名の構文を強調表示する方法はありますか? stringorを宣言するとしましょう。 orを強調表示しvectorたいと思います。stringvector

4

1 に答える 1

2

必要typedef foo;な動作を得るには、tmLanguage ファイルにもう少し複雑なパターン エントリを作成する必要があります。言語ファイルは TextMates に基づいているため、これを参考にしてください ( http://manual.macromates.com/en/language_grammars#language_grammars )。また、 PlistJsonConverterを使用することをお勧めします(XML で作業するよりも JSON で作業する方が簡単です)。おそらく begin と end のパターンを定義する必要があります (begin はおそらくtypedefend になります;)。その後、そのグループに任意のパターンを適用できます。

クラス名の強調表示については、スコープが適用されているかどうかを確認します。そうでない場合は、それらにスコープを適用する正規表現を考え出す必要があります。次に、色のエントリを追加するか、配色から定義されたものを使用できます。

編集:

実際には JSON ではないようです。()というより、なるほど[]。JSON は非常に簡単に理解できます。より詳細な情報を探すこともできますが、ウィキペディアから始めるのがよいでしょう。おそらく興味があるのは、「ルールキー」セクションの下にあるものです。私はいくつかの検索を行いました (より良い例がいくつかあることを知っていたので)、 http://docs.sublimetext.info/en/latest/extensibility/syntaxdefs.htmlに出くわしました。構文定義をゼロから調べますが、最も関連性の高いセクションはおそらくhttp://docs.sublimetext.info/en/latest/extensibility/syntaxdefs.html#analyzing-patternsです. クラス名を見つけるための正規表現を持っていないので、自分で考え出す必要があります。まだ行っていない場合は、周囲を検索して、他の誰かが自分に合った方法で言語ファイルを実装しているかどうかを確認することをお勧めします。

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

于 2013-04-07T21:29:06.030 に答える