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;
これを修正しようと思います。念のため誰かが正しい正規表現を投稿できますか?