0

vim用のangularjs構文強調表示ファイルを作成しようとしています。ファイルの一部は次のとおりです。

syn match ngMethods                /\.[0-9A-Za-z_\-\$]\+\s*\((\|=\)/ contains=AngularMethods
syn keyword AngularMethods         contained $addControl $anchorScroll $animate ...

syn match ngObjMethods             /^\s*[0-9A-Za-z_\-\$]\+\s*:/ contains=AngularObjectMethods
syn keyword AngularObjectMethods   contained compile controller link ...

等...

下に私が持っています:

hi def link AngularMethods       Function

hi def link AngularObjectMethods Function

最初の正規表現 ( for ) は、次のAngularMethodsようなものをキャプチャすることになっています。$addControl

myelement.$addControl()
myelement.$addControl = function ()

2 番目の正規表現 ( for AngularObjectMethods) は、次のようなものをキャプチャcompileします。

    compile : function () {}

1AngularMethodsつは機能しませんが、後者は機能します。誰でも問題を見ることができますか?また、正規表現を使用してみました:

/\.\zs[0-9A-Za-z_\-\$]\+\ze\s*\((\|=\)/

/\.[0-9A-Za-z_\-\$]\+\s*\((\|=\)\@=/

前者は正確な単語に一致します。後者は、別の構文ファイルで見たものです。何か案は?ご協力いただきありがとうございます!

編集:

キーワードについては、Kent (下記) が正しかった。これにより、別の正規表現があるという本当の問題が明らかになりました。

syn match ngProperties          /\.[0-9A-Za-z_\-\$]\+\s*[^(=]/ contains=AngularProperties
syn keyword AngularProperties   contained $attr $dirty $error ...

これは ngMethods 正規表現の補数であるはずです。ngProperties正規表現をコメントアウトすると、正規表現がngMethods機能します。これngPropertiesは悪いことを意味します。次のようなものをキャッチすることになってい$attrます。

var myAttribute = element.$attr;

これを修正しようと思います。念のため誰かが正しい正規表現を投稿できますか?

4

1 に答える 1