syntax: "super" is a synonym of "special"
[nit.git] / misc / vim / syntax / nit.vim
index 4a1f269..8ad3f26 100644 (file)
@@ -23,6 +23,7 @@ if exists("b:current_syntax")
 endif
 
 " Expression Substitution and Backslash Notation
+syn match NITExprSubstError "{\|}" contained
 syn match NITExprSubst "\\." contained
 syn match NITExprSubst "{[^}]*}" contained
 
@@ -30,30 +31,37 @@ syn match NITExprSubst "{[^}]*}" contained
 syn match NITNumber "\<\(\d\+\.\d\+\|\d\+\)\>"
 
 " Identifiers
-syn match NITClass             "\u\w*"
+syn match NITClass             "\<\u\w*"
 syn match NITAttribute         "\<_\h\w*"
 
 " Literal strings
-syn region NITString matchgroup=NITStringDelimit start="\"" end="\"" skip="\\\\\|\\\"" contains=NITExprSubst
+syn region NITString matchgroup=NITStringDelimit start="\"" end="\"" skip="\\\\\|\\\"" contains=NITExprSubst,NITExprSubstError
 syn region NITString matchgroup=NITStringDelimit start="'"  end="'"  skip="\\\\\|\\'"
 
+" Labels
+syn match NITLabel "\<label \h\w*"
+
+" Closures
+syn match NITClosure "!\h\w*"
 
 " Fallback highlight keywords
-syn match NITBoolean "\<\(null\)\>"
-syn match NITControl "\<\(init\|end\|not null\|not\|var\|do\|then\|else\|with\)\>"
+syn match NITNull "\<\(null\)\>"
+syn match NITControl "\<\(init\|end\|not null\|not\|var\|do\|then\|else\|loop\)\>"
+syn match NITKeyword "\<\(super\)\>"
 " Unmatchning error
 syn match Error "\<end\>"
 
 " Declarations, definitions and blocks
 syn region NITPackageDecl matchgroup=NITDefine start="\<\(import\|package\)\>\s*" matchgroup=NONE end="\ze\(\s\|:\|(\|$\)"  oneline
 syn region NITClassBlock matchgroup=NITDefine start="\<\(class\|universal\|interface\)\>" matchgroup=NITDefine end="\<end\>" contains=ALL fold
-syn region NITFunctionDecl matchgroup=NITDefine start="\<\(meth\|fun\)\>\s*" matchgroup=NONE end="\ze\(\<do\>\|\s\|:\|(\|$\)"  oneline
+syn region NITFunctionDecl matchgroup=NITDefine start="\<fun\>\s*" matchgroup=NONE end="\ze\(\<do\>\|\s\|:\|(\|$\)"  oneline
 syn region NITTypeDecl matchgroup=NITDefine start="\<type\>\s*" matchgroup=NONE end="\ze\(\<do\>\|\s\|:\|(\|$\)"  oneline contained containedin=NITClassBlock
-syn region NITAttrDecl matchgroup=NITDefine start="\<\(var\|attr\)\>\s*\ze_" matchgroup=NONE end="\ze\(\<do\>\|\s\|:\|(\|$\)"  oneline contained containedin=NITClassBlock
+syn region NITAttrDecl matchgroup=NITDefine start="\<var\>\s*\ze_" matchgroup=NONE end="\ze\(\<do\>\|\s\|:\|(\|$\)"  oneline contained containedin=NITClassBlock
 syn region NITInitDecl matchgroup=NITDefine start="\<init\>\s*" matchgroup=NONE end="\ze\(\<do\>\|\s\|:\|(\|$\)"  oneline contained containedin=NITClassBlock
+syn match NITDefine "\<\(super\)\ze\s\+[A-Z]" contained containedin=NITClassBlock
 
-syn region NITStmtBlock matchgroup=NITControl start="\<\(do\|then\|else\)\>\ze\s*\(#\|$\)" matchgroup=NITControl end="^\s*\<\(end\|\zeelse\|with\)\>" contains=ALLBUT,NITTypeDecl,NITAttrDecl,NITInitDecl
-syn region NITStmtBlock matchgroup=NITControl start="\<\(do\|then\|else\)\>" matchgroup=NITControl end="\<end\>" oneline
+syn region NITStmtBlock matchgroup=NITControl start="\<\(do\|then\|else\|loop\)\>\ze\s*\(#\|$\)" matchgroup=NITControl end="^\s*\<\(end\|\zeelse\|\ze!\)\>" contains=ALLBUT,NITTypeDecl,NITAttrDecl,NITInitDecl
+syn region NITStmtBlock matchgroup=NITControl start="\<\(do\|then\|else\|loop\)\>" matchgroup=NITControl end="\<end\>" oneline
 
 if !exists("NIT_minlines")
        let NIT_minlines = 50
@@ -65,15 +73,14 @@ syn match  NITSharpBang     "\%^#!.*"
 syn match  NITComment  "#.*" contains=NITTodo
 
 " Keywords
-syn keyword NITKeyword  is abstract intern extern
+syn keyword NITKeyword  is abstract intern extern new
 syn keyword NITDefine   private public protected intrude readable writable redef
-syn keyword NITControl   if while for assert
-syn keyword NITControl   and or in as isa
-syn keyword NITControl   break continue return label abort
-syn keyword NITKeyword   super new nullable
+syn keyword NITControl   if while for assert and or in as isa once break continue return abort
+syn keyword NITClass     nullable
 syn keyword NITInclude   special
 syn keyword NITTodo      FIXME NOTE TODO XXX contained
-syn keyword NITBoolean   true false self
+syn keyword NITBoolean   true false
+syn keyword NITSelf      self
 
 " Define the default highlighting.
 hi def link NITDefine                  Define
@@ -83,17 +90,22 @@ hi def link NITTypeDecl                     Function
 hi def link NITAttrDecl                        Function
 hi def link NITInitDecl                        Function
 hi def link NITControl                 Statement
+hi def link NITLabel                   PreProc
 hi def link NITInclude                 Include
 hi def link NITNumber                  Number
 hi def link NITBoolean                 Boolean
+hi def link NITNull                    Constant
+hi def link NITSelf                    Constant
 hi def link NITClass                   Type
 hi def link NITAttribute               Identifier
+hi def link NITClosure                 Function
 hi def link NITSharpBang               PreProc
 hi def link NITKeyword                 Keyword
 
 hi def link NITString                  String
 hi def link NITStringDelimit           Delimiter
 hi def link NITExprSubst               Special
+hi def link NITExprSubstError          Error
 
 hi def link NITComment                 Comment
 hi def link NITTodo                    Todo