summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--after/syntax/proto.vim12
1 files changed, 9 insertions, 3 deletions
diff --git a/after/syntax/proto.vim b/after/syntax/proto.vim
index ea026df..d0cdae2 100644
--- a/after/syntax/proto.vim
+++ b/after/syntax/proto.vim
@@ -32,7 +32,7 @@ syn keyword pbOneofKeyword oneof nextgroup=pbOneofName skipwhite
syn match pbOneofName +\<\w\+\>+ nextgroup=pbOneofBody contained skipwhite
syn region pbOneofBody start=+{+ end=+}+ contains=@oneofContains contained
-syn match protoFieldType "\<[A-Za-z]\%(\w\|\.\)\+\>" nextgroup=protoFieldName skipempty skipwhite
+syn match protoFieldType "\<\([A-Za-z0-9_]\+\|\_s*\.\_s*[A-Za-z0-9_]\+\)\+\>" nextgroup=protoFieldName skipempty skipwhite
syn match protoFieldName "\<\w\+\>" nextgroup=protoFieldEquals contained skipwhite
syn match protoFieldEquals +=+ contained nextgroup=protoFieldNumber,protoFieldNumberBad contained skipwhite
syn match protoFieldNumber +[1-9][0-9]*+ contained
@@ -46,14 +46,20 @@ syn match pbEnumTypeName "\<\w\+\>" nextgroup=enumBody skipempty skipwhite conta
syn region enumBody start=+{+ end=+}+ contains=enumValue,protoComment,protoInt,pbAnnotation fold contained
syn match enumValue "\zs\w\+\ze\s*=" contained
+syn keyword pbExtendKeyword extend nextgroup=pbMessageQualifiedName skipwhite
+syn match pbMessageQualifiedName "\<[a-zA-Z0-9_.]\+\>" nextgroup=pbMessageBody skipempty skipwhite
+
+hi! link pbExtendKeyword protoExtend
+hi! link pbMessageQualifiedName pbMessage2
+
syn keyword pbMessageKeyword message nextgroup=pbMessage2 skipwhite
syn match pbMessage2 "\<\w\+\>" nextgroup=pbMessageBody skipempty skipwhite
-syn region pbMessageBody start=+{+ end=+}+ contains=@top fold contained
+syn region pbMessageBody start=+{+ end=+}+ contains=@top,pbExtendKeyword fold contained
syn region protoAnnotString start=/"/ skip=/\\./ end=/"/ contained
syn region protoAnnotString start=/'/ skip=/\\./ end=/'/ contained
-syn region pbAnnotation start=+\[+ end=+\]+ contains=protoAnnotString,pbAnnotationType fold
+syn region pbAnnotation start=+\[+ end=+\]+ contains=protoAnnotString,pbAnnotationType,protoComment fold
syn keyword pbOptionKeyword option nextgroup=pbAnnotationType skipwhite
syn match pbAnnotationType +([a-z._]\+)+ nextgroup=annotationEquals contained skipwhite