summaryrefslogtreecommitdiffstats
path: root/runtime/syntax
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2022-06-09 20:45:54 +0100
committerBram Moolenaar <Bram@vim.org>2022-06-09 20:45:54 +0100
commit63f32603789d1a27c559fc440325955fd0b8b500 (patch)
tree4704249d1618c6e126e41c6889c29d353f39e59c /runtime/syntax
parent2813f38e021c6e6581c0c88fcf107e41788bc835 (diff)
Update runtime files
Diffstat (limited to 'runtime/syntax')
-rw-r--r--runtime/syntax/cs.vim276
-rw-r--r--runtime/syntax/java.vim51
-rw-r--r--runtime/syntax/javascript.vim13
-rw-r--r--runtime/syntax/m4.vim3
-rw-r--r--runtime/syntax/webmacro.vim6
5 files changed, 241 insertions, 108 deletions
diff --git a/runtime/syntax/cs.vim b/runtime/syntax/cs.vim
index b4cb6489e6..722ddbedf6 100644
--- a/runtime/syntax/cs.vim
+++ b/runtime/syntax/cs.vim
@@ -3,13 +3,16 @@
" Maintainer: Nick Jensen <nickspoon@gmail.com>
" Former Maintainers: Anduin Withers <awithers@anduin.com>
" Johannes Zellner <johannes@zellner.org>
-" Last Change: 2020-11-23
+" Last Change: 2022-03-01
" Filenames: *.cs
" License: Vim (see :h license)
" Repository: https://github.com/nickspoons/vim-cs
"
-" REFERENCES:
-" [1] ECMA TC39: C# Language Specification (WD13Oct01.doc)
+" References:
+" - ECMA-334 5th Edition: C# Language Specification
+" https://www.ecma-international.org/publications-and-standards/standards/ecma-334/
+" - C# Language Design: Draft 6th Edition and later proposals
+" https://github.com/dotnet/csharplang
if exists('b:current_syntax')
finish
@@ -19,37 +22,72 @@ let s:save_cpo = &cpoptions
set cpoptions&vim
syn keyword csType bool byte char decimal double float int long object sbyte short string T uint ulong ushort var void dynamic
-syn keyword csStorage delegate enum interface namespace struct
+syn keyword csType nint nuint " contextual
+
+syn keyword csStorage enum interface namespace struct
+syn match csStorage "\<delegate\>"
syn keyword csRepeat break continue do for foreach goto return while
syn keyword csConditional else if switch
syn keyword csLabel case default
-syn match csOperatorError display +::+
-syn match csGlobal display +global::+
-" user labels (see [1] 8.6 Statements)
+
+syn match csNamespaceAlias "@\=\h\w*\ze\_s*::" display
+syn match csGlobalNamespaceAlias "global\ze\_s*::" display
+syn cluster csNamespaceAlias contains=csGlobalNamespaceAlias,csNamespaceAlias,csNamespaceAliasQualifier
+
+" user labels
syn match csLabel display +^\s*\I\i*\s*:\%([^:]\)\@=+
-syn keyword csModifier abstract const extern internal override private protected public readonly sealed static virtual volatile
-syn keyword csConstant false null true
+
+" Function pointers
+syn match csType "\<delegate\s*\*" contains=csOpSymbols nextgroup=csManagedModifier skipwhite skipempty
+syn keyword csManagedModifier managed unmanaged contained
+
+" Modifiers
+syn match csUsingModifier "\<global\ze\_s\+using\>"
+syn keyword csAccessModifier internal private protected public
+" TODO: in new out
+syn keyword csModifier abstract const event override readonly sealed static virtual volatile
+syn match csModifier "\<\%(extern\|fixed\|unsafe\)\>"
+syn match csModifier "\<partial\ze\_s\+\%(class\|struct\|interface\|record\|void\)\>"
+
syn keyword csException try catch finally throw when
-syn keyword csLinq ascending by descending equals from group in into join let on orderby select where
-syn keyword csAsync async await
+syn keyword csLinq ascending by descending equals from group in into join let on orderby select
+syn match csLinq "\<where\>"
-syn keyword csUnspecifiedStatement as base checked event fixed in is lock nameof operator out params ref sizeof stackalloc this unchecked unsafe using
-syn keyword csUnsupportedStatement add remove value
-syn keyword csUnspecifiedKeyword explicit implicit
+" Type parameter constraint clause
+syn match csStorage "\<where\>\ze\_s\+@\=\h\w*\_s*:"
-" Contextual Keywords
-syn match csContextualStatement /\<yield[[:space:]\n]\+\%(return\|break\)/me=s+5
-syn match csContextualStatement /\<partial[[:space:]\n]\+\%(class\|struct\|interface\)/me=s+7
-syn match csContextualStatement /\<\%(get\|set\)\%(;\|[[:space:]\n]*{\)/me=s+3
-syn match csContextualStatement /\<\%(get\|set\)\s*=>/me=s+3
-syn match csContextualStatement /\<where\>[^:]\+:/me=s+5
+" Async
+syn keyword csAsyncModifier async
+syn keyword csAsyncOperator await
+
+syn match csStorage "\<extern\ze\s\+alias\>"
+syn match csStorage "\%(\<extern\s\+\)\@16<=alias\>"
+
+syn match csStatement "\<\%(checked\|unchecked\|unsafe\)\ze\_s*{"
+syn match csStatement "\<fixed\ze\_s*("
+syn keyword csStatement lock
+syn match csStatement "\<yield\ze\_s\+\%(return\|break\)\>"
+
+syn match csAccessor "\<\%(get\|set\|init\|add\|remove\)\ze\_s*\%([;{]\|=>\)"
+
+syn keyword csAccess base
+syn match csAccess "\<this\>"
+
+" Extension method parameter modifier
+syn match csModifier "\<this\ze\_s\+@\=\h"
+
+syn keyword csUnspecifiedStatement as in is nameof operator out params ref sizeof stackalloc using
+syn keyword csUnsupportedStatement value
+syn keyword csUnspecifiedKeyword explicit implicit
" Operators
-syn keyword csTypeOf typeof contained
-syn region csTypeOfStatement start="typeof(" end=")" contains=csType, csTypeOf
+syn keyword csTypeOf typeof nextgroup=csTypeOfOperand,csTypeOfError skipwhite skipempty
+syn region csTypeOfOperand matchgroup=csParens start="(" end=")" contained contains=csType
+syn match csTypeOfError "[^([:space:]]" contained
+syn match csKeywordOperator "\<\%(checked\|unchecked\)\ze\_s*("
" Punctuation
-syn match csBraces "[{}\[\]]" display
+syn match csBraces "[{}[\]]" display
syn match csParens "[()]" display
syn match csOpSymbols "+\{1,2}" display
syn match csOpSymbols "-\{1,2}" display
@@ -64,128 +102,173 @@ syn match csLogicSymbols "&&" display
syn match csLogicSymbols "||" display
syn match csLogicSymbols "?" display
syn match csLogicSymbols ":" display
+syn match csNamespaceAliasQualifier "::" display
" Generics
-syn region csGeneric matchgroup=csGenericBraces start="<" end=">" oneline contains=csType,csGeneric,csUserType,csUserIdentifier,csUserInterface,csUserMethod
+syn region csGeneric matchgroup=csGenericBraces start="<" end=">" oneline contains=csType,csGeneric,@csNamespaceAlias,csUserType,csUserIdentifier,csUserInterface,csUserMethod
" Comments
"
" PROVIDES: @csCommentHook
syn keyword csTodo contained TODO FIXME XXX NOTE HACK TBD
-syn region csComment start="/\*" end="\*/" contains=@csCommentHook,csTodo,@Spell
-syn match csComment "//.*$" contains=@csCommentHook,csTodo,@Spell
-
-" xml markup inside '///' comments
-syn cluster xmlRegionHook add=csXmlCommentLeader
-syn cluster xmlCdataHook add=csXmlCommentLeader
-syn cluster xmlStartTagHook add=csXmlCommentLeader
-syn keyword csXmlTag contained Libraries Packages Types Excluded ExcludedTypeName ExcludedLibraryName
-syn keyword csXmlTag contained ExcludedBucketName TypeExcluded Type TypeKind TypeSignature AssemblyInfo
-syn keyword csXmlTag contained AssemblyName AssemblyPublicKey AssemblyVersion AssemblyCulture Base
-syn keyword csXmlTag contained BaseTypeName Interfaces Interface InterfaceName Attributes Attribute
-syn keyword csXmlTag contained AttributeName Members Member MemberSignature MemberType MemberValue
-syn keyword csXmlTag contained ReturnValue ReturnType Parameters Parameter MemberOfPackage
-syn keyword csXmlTag contained ThreadingSafetyStatement Docs devdoc example overload remarks returns summary
-syn keyword csXmlTag contained threadsafe value internalonly nodoc exception param permission platnote
-syn keyword csXmlTag contained seealso b c i pre sub sup block code note paramref see subscript superscript
-syn keyword csXmlTag contained list listheader item term description altcompliant altmember
-
-syn cluster xmlTagHook add=csXmlTag
-
-syn match csXmlCommentLeader "///" contained
-syn match csXmlComment "///.*$" contains=csXmlCommentLeader,@csXml,@Spell keepend
+syn region csBlockComment start="/\*" end="\*/" contains=@csCommentHook,csTodo,@Spell
+syn match csLineComment "//.*$" contains=@csCommentHook,csTodo,@Spell
+syn cluster csComment contains=csLineComment,csBlockComment
+
+syn region csSummary start="^\s*/// <summary" end="^\%\(\s*///\)\@!" transparent fold keepend
+
+" xml markup inside '///' and /**...*/ comments
+syn cluster xmlRegionHook add=csXmlLineCommentLeader,csXmlBlockCommentMiddle
+syn cluster xmlCdataHook add=csXmlLineCommentLeader,csXmlBlockCommentMiddle
+syn cluster xmlStartTagHook add=csXmlLineCommentLeader,csXmlBlockCommentMiddle
+syn cluster xmlTagHook add=csXmlTag
+syn cluster xmlAttribHook add=csXmlAttrib
+
+" https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/xmldoc/recommended-tags
+syn keyword csXmlTag contained summary remarks
+syn keyword csXmlTag contained returns param paramref exception value
+syn keyword csXmlTag contained para list c code example
+syn keyword csXmlTag contained inheritdoc include
+syn keyword csXmlTag contained see seealso
+syn keyword csXmlTag contained typeparam typeparamref
+syn keyword csXmlTag contained b i u br a
+syn keyword csXmlAttrib contained cref href
+
+syn match csXmlLineCommentLeader "///" contained
+syn match csXmlLineComment "///.*$" contains=csXmlLineCommentLeader,@csXml,@Spell keepend
+syn match csXmlBlockCommentMiddle "^\s*\zs\*" contained
+syn region csXmlBlockComment start="/\*\*" end="\*/" contains=@csXml,@Spell,csXmlBlockCommentMiddle keepend
syn include @csXml syntax/xml.vim
hi def link xmlRegion Comment
" Since syntax/xml.vim contains `syn spell toplevel`, we need to set it back to `default` here.
syn spell default
-" [1] 9.5 Pre-processing directives
-syn region csPreCondit start="^\s*#\s*\%(define\|undef\|if\|elif\|else\|endif\|line\|error\|warning\|pragma\)\>" skip="\\$" end="$" contains=csComment keepend
-syn region csRegion matchgroup=csPreCondit start="^\s*#\s*region.*$" end="^\s*#\s*endregion" transparent fold contains=TOP
-syn region csSummary start="^\s*/// <summary" end="^\%\(\s*///\)\@!" transparent fold keepend
+" Pre-processing directives
+syn region csPreProcDeclaration start="^\s*\zs#\s*\%(define\|undef\)\>" end="$" contains=csLineComment keepend
+syn region csPreProcConditional start="^\s*\zs#\s*\%(if\|elif\)\>" end="$" contains=csLineComment keepend
+syn region csPreProcConditional start="^\s*\zs#\s*\%(else\|endif\)\>" end="$" contains=csLineComment keepend
+syn region csPreProcLine start="^\s*\zs#\s*line\>" end="$" contains=csLineComment keepend
+syn region csPreProcDiagnostic start="^\s*\zs#\s*\%(error\|warning\)\>" end="$"
+syn region csPreProcConditionalSection matchgroup=csPreProcRegion start="^\s*#\s*region\>.*" end="^\s*#\s*endregion\>.*" transparent fold contains=TOP
+syn region csPreProcPragma start="^\s*\zs#\s*pragma\>" end="$" contains=csLineComment keepend
+syn region csPreProcNullable start="^\s*\zs#\s*nullable\>" end="$" contains=csLineComment keepend
+
+if expand('%:e') == 'csx' || getline('1') =~ '^#!.*\<dotnet-script\>'
+ syn region csPreProcInclude start="^\s*\zs#\s*\%(load\|r\)\>" end="$" contains=csLineComment keepend
+ syn match csShebang "\%^#!.*" display
+endif
+syn cluster csPreProcessor contains=csPreProc.*
-syn region csClassType start="@\@1<!\<class\>"hs=s+6 end="[:\n{]"me=e-1 contains=csClass
+syn region csClassType start="\<class\>"hs=s+6 end=">" end="[:{]"me=e-1 contains=csClass
" csUserType may be defined by user scripts/plugins - it should be contained in csNewType
-syn region csNewType start="@\@1<!\<new\>"hs=s+4 end="[;\n{(<\[]"me=e-1 contains=csNew,csUserType
+syn region csNewType start="\<new\>"hs=s+4 end="[;\n{(<\[]"me=e-1 contains=csNew,@csNamespaceAlias,csUserType
syn region csIsType start=" is "hs=s+4 end="[A-Za-z0-9]\+" oneline contains=csIsAs
syn region csIsType start=" as "hs=s+4 end="[A-Za-z0-9]\+" oneline contains=csIsAs
syn keyword csNew new contained
syn keyword csClass class contained
syn keyword csIsAs is as
+syn keyword csBoolean false true
+syn keyword csNull null
+
" Strings and constants
syn match csSpecialError "\\." contained
syn match csSpecialCharError "[^']" contained
-" [1] 9.4.4.4 Character literals
-syn match csSpecialChar +\\["\\'0abfnrtvx]+ contained display
-syn match csUnicodeNumber +\\x\x\{2,4}+ contained contains=csUnicodeSpecifier display
+" Character literals
+syn match csSpecialChar +\\["\\'0abfnrtv]+ contained display
+syn match csUnicodeNumber +\\x\x\{1,4}+ contained contains=csUnicodeSpecifier display
syn match csUnicodeNumber +\\u\x\{4}+ contained contains=csUnicodeSpecifier display
-syn match csUnicodeNumber +\\U\x\{8}+ contained contains=csUnicodeSpecifier display
-syn match csUnicodeSpecifier +\\[uU]+ contained display
+syn match csUnicodeNumber +\\U00\x\{6}+ contained contains=csUnicodeSpecifier display
+syn match csUnicodeSpecifier +\\[uUx]+ contained display
syn region csString matchgroup=csQuote start=+"+ end=+"+ end=+$+ extend contains=csSpecialChar,csSpecialError,csUnicodeNumber,@Spell
syn match csCharacter "'[^']*'" contains=csSpecialChar,csSpecialCharError,csUnicodeNumber display
syn match csCharacter "'\\''" contains=csSpecialChar display
syn match csCharacter "'[^\\]'" display
-syn match csNumber "\<0[0-7]*[lL]\=\>" display
-syn match csNumber "\<0[xX][[:xdigit:]_]\+[lL]\=\>" display
-syn match csNumber "\<0[bB][01_]\+[lL]\=\>" display
-syn match csNumber "\<[[:digit:]_]\+[lL]\=\>" display
-syn match csNumber "\<[[:digit:]_]\+\.[[:digit:]_]*\%\([eE][-+]\=[[:digit:]_]\+\)\=[fFdDmM]\=" display
-syn match csNumber "\.[[:digit:]_]\+\%\([eE][-+]\=[[:digit:]_]\+\)\=[fFdDmM]\=" display
-syn match csNumber "\<[[:digit:]_]\+[eE][-+]\=[[:digit:]_]\+[fFdDmM]\=\>" display
-syn match csNumber "\<[[:digit:]_]\+\%\([eE][-+]\=[[:digit:]_]\+\)\=[fFdDmM]\>" display
+
+" Numbers
+syn case ignore
+syn match csInteger "\<0b[01_]*[01]\%([lu]\|lu\|ul\)\=\>" display
+syn match csInteger "\<\d\+\%(_\+\d\+\)*\%([lu]\|lu\|ul\)\=\>" display
+syn match csInteger "\<0x[[:xdigit:]_]*\x\%([lu]\|lu\|ul\)\=\>" display
+syn match csReal "\<\d\+\%(_\+\d\+\)*\.\d\+\%(_\+\d\+\)*\%\(e[-+]\=\d\+\%(_\+\d\+\)*\)\=[fdm]\=" display
+syn match csReal "\.\d\+\%(_\+\d\+\)*\%(e[-+]\=\d\+\%(_\+\d\+\)*\)\=[fdm]\=\>" display
+syn match csReal "\<\d\+\%(_\+\d\+\)*e[-+]\=\d\+\%(_\+\d\+\)*[fdm]\=\>" display
+syn match csReal "\<\d\+\%(_\+\d\+\)*[fdm]\>" display
+syn case match
+syn cluster csNumber contains=csInteger,csReal
syn region csInterpolatedString matchgroup=csQuote start=+\$"+ end=+"+ extend contains=csInterpolation,csEscapedInterpolation,csSpecialChar,csSpecialError,csUnicodeNumber,@Spell
syn region csInterpolation matchgroup=csInterpolationDelimiter start=+{+ end=+}+ keepend contained contains=@csAll,csBraced,csBracketed,csInterpolationAlign,csInterpolationFormat
syn match csEscapedInterpolation "{{" transparent contains=NONE display
syn match csEscapedInterpolation "}}" transparent contains=NONE display
-syn region csInterpolationAlign matchgroup=csInterpolationAlignDel start=+,+ end=+}+ end=+:+me=e-1 contained contains=csNumber,csConstant,csCharacter,csParens,csOpSymbols,csString,csBracketed display
+syn region csInterpolationAlign matchgroup=csInterpolationAlignDel start=+,+ end=+}+ end=+:+me=e-1 contained contains=@csNumber,csBoolean,csConstant,csCharacter,csParens,csOpSymbols,csString,csBracketed display
syn match csInterpolationFormat +:[^}]\+}+ contained contains=csInterpolationFormatDel display
syn match csInterpolationAlignDel +,+ contained display
syn match csInterpolationFormatDel +:+ contained display
syn region csVerbatimString matchgroup=csQuote start=+@"+ end=+"+ skip=+""+ extend contains=csVerbatimQuote,@Spell
syn match csVerbatimQuote +""+ contained
-syn match csQuoteError +@$"+he=s+2,me=s+2
-syn region csInterVerbString matchgroup=csQuote start=+\$@"+ end=+"+ skip=+""+ extend contains=csInterpolation,csEscapedInterpolation,csSpecialChar,csSpecialError,csUnicodeNumber,csVerbatimQuote,@Spell
+syn region csInterVerbString matchgroup=csQuote start=+$@"+ start=+@$"+ end=+"+ skip=+""+ extend contains=csInterpolation,csEscapedInterpolation,csSpecialChar,csSpecialError,csUnicodeNumber,csVerbatimQuote,@Spell
+
+syn cluster csString contains=csString,csInterpolatedString,csVerbatimString,csInterVerbString
+
+syn cluster csLiteral contains=csBoolean,@csNumber,csCharacter,@csString,csNull
syn region csBracketed matchgroup=csParens start=+(+ end=+)+ extend contained transparent contains=@csAll,csBraced,csBracketed
syn region csBraced matchgroup=csParens start=+{+ end=+}+ extend contained transparent contains=@csAll,csBraced,csBracketed
-syn cluster csAll contains=csCharacter,csClassType,csComment,csContextualStatement,csEndColon,csIsType,csLabel,csLogicSymbols,csNewType,csConstant,csNumber,csOpSymbols,csOperatorError,csParens,csPreCondit,csRegion,csString,csSummary,csType,csUnicodeNumber,csUnicodeSpecifier,csInterpolatedString,csVerbatimString,csInterVerbString,csUserType,csUserIdentifier,csUserInterface,csUserMethod
+syn cluster csAll contains=@csLiteral,csClassType,@csComment,csEndColon,csIsType,csLabel,csLogicSymbols,csNewType,csOpSymbols,csParens,@csPreProcessor,csSummary,@csNamespaceAlias,csType,csUnicodeNumber,csUserType,csUserIdentifier,csUserInterface,csUserMethod
+
+" Keyword identifiers
+syn match csIdentifier "@\h\w*"
" The default highlighting.
+hi def link csUnspecifiedStatement Statement
+hi def link csUnsupportedStatement Statement
+hi def link csUnspecifiedKeyword Keyword
+
+hi def link csGlobalNamespaceAlias Include
+
hi def link csType Type
hi def link csClassType Type
hi def link csIsType Type
+
hi def link csStorage Structure
hi def link csClass Structure
+hi def link csNew Statement
+hi def link csIsAs Keyword
+hi def link csAccessor Keyword
+hi def link csAccess Keyword
+
+hi def link csLinq Statement
+
+hi def link csStatement Statement
hi def link csRepeat Repeat
hi def link csConditional Conditional
hi def link csLabel Label
-hi def link csModifier StorageClass
-hi def link csConstant Constant
hi def link csException Exception
-hi def link csTypeOf Keyword
-hi def link csTypeOfStatement Typedef
-hi def link csUnspecifiedStatement Statement
-hi def link csUnsupportedStatement Statement
-hi def link csUnspecifiedKeyword Keyword
-hi def link csNew Statement
-hi def link csLinq Statement
-hi def link csIsAs Keyword
-hi def link csAsync Keyword
-hi def link csContextualStatement Statement
-hi def link csOperatorError Error
+
+hi def link csModifier StorageClass
+hi def link csAccessModifier csModifier
+hi def link csAsyncModifier csModifier
+hi def link csManagedModifier csModifier
+hi def link csUsingModifier csModifier
hi def link csTodo Todo
hi def link csComment Comment
-
+hi def link csLineComment csComment
+hi def link csBlockComment csComment
+
+hi def link csKeywordOperator Keyword
+hi def link csAsyncOperator csKeywordOperator
+hi def link csTypeOf csKeywordOperator
+hi def link csTypeOfOperand Typedef
+hi def link csTypeOfError Error
hi def link csOpSymbols Operator
hi def link csLogicSymbols Operator
@@ -193,15 +276,29 @@ hi def link csSpecialError Error
hi def link csSpecialCharError Error
hi def link csString String
hi def link csQuote String
-hi def link csQuoteError Error
hi def link csInterpolatedString String
hi def link csVerbatimString String
hi def link csInterVerbString String
hi def link csVerbatimQuote SpecialChar
-hi def link csPreCondit PreCondit
+
+hi def link csPreProc PreProc
+hi def link csPreProcDeclaration Define
+hi def link csPreProcConditional PreCondit
+hi def link csPreProcLine csPreProc
+hi def link csPreProcDiagnostic csPreProc
+hi def link csPreProcRegion csPreProc
+hi def link csPreProcPragma csPreProc
+hi def link csPreProcNullable csPreProc
+hi def link csPreProcInclude csPreProc
+hi def link csShebang csPreProc
+
+hi def link csConstant Constant
+hi def link csNull Constant
+hi def link csBoolean Boolean
hi def link csCharacter Character
hi def link csSpecialChar SpecialChar
-hi def link csNumber Number
+hi def link csInteger Number
+hi def link csReal Float
hi def link csUnicodeNumber SpecialChar
hi def link csUnicodeSpecifier SpecialChar
hi def link csInterpolationDelimiter Delimiter
@@ -212,9 +309,12 @@ hi def link csInterpolationFormatDel csInterpolationDelimiter
hi def link csGenericBraces csBraces
" xml markup
-hi def link csXmlCommentLeader Comment
-hi def link csXmlComment Comment
+hi def link csXmlLineCommentLeader Comment
+hi def link csXmlLineComment Comment
+hi def link csXmlBlockComment Comment
+hi def link csXmlBlockCommentMiddle csXmlBlockComment
hi def link csXmlTag Statement
+hi def link csXmlAttrib Statement
let b:current_syntax = 'cs'
diff --git a/runtime/syntax/java.vim b/runtime/syntax/java.vim
index c9bb5dc2d4..00d6071944 100644
--- a/runtime/syntax/java.vim
+++ b/runtime/syntax/java.vim
@@ -2,7 +2,7 @@
" Language: Java
" Maintainer: Claudio Fleiner <claudio@fleiner.com>
" URL: https://github.com/fleiner/vim/blob/master/runtime/syntax/java.vim
-" Last Change: 2018 July 26
+" Last Change: 2022 Jun 08
" Please check :help java.vim for comments on some of the options available.
@@ -23,8 +23,6 @@ set cpo&vim
syn match javaError "[\\@`]"
syn match javaError "<<<\|\.\.\|=>\|||=\|&&=\|\*\/"
-syn match javaOK "\.\.\."
-
" use separate name so that it can be deleted in javacc.vim
syn match javaError2 "#\|=<"
hi def link javaError2 javaError
@@ -59,8 +57,12 @@ syn match javaUserLabelRef "\k\+" contained
syn match javaVarArg "\.\.\."
syn keyword javaScopeDecl public protected private abstract
+function s:isModuleInfoDeclarationCurrentBuffer() abort
+ return fnamemodify(bufname("%"), ":t") =~ '^module-info\%(\.class\>\)\@!'
+endfunction
+
" Java Modules(Since Java 9, for "module-info.java" file)
-if fnamemodify(bufname("%"), ":t") == "module-info.java"
+if s:isModuleInfoDeclarationCurrentBuffer()
syn keyword javaModuleStorageClass module transitive
syn keyword javaModuleStmt open requires exports opens uses provides
syn keyword javaModuleExternal to with
@@ -72,20 +74,42 @@ if exists("java_highlight_java_lang_ids")
endif
if exists("java_highlight_all") || exists("java_highlight_java") || exists("java_highlight_java_lang")
" java.lang.*
- syn match javaLangClass "\<System\>"
- syn keyword javaR_JavaLang NegativeArraySizeException ArrayStoreException IllegalStateException RuntimeException IndexOutOfBoundsException UnsupportedOperationException ArrayIndexOutOfBoundsException ArithmeticException ClassCastException EnumConstantNotPresentException StringIndexOutOfBoundsException IllegalArgumentException IllegalMonitorStateException IllegalThreadStateException NumberFormatException NullPointerException TypeNotPresentException SecurityException
+ "
+ " The keywords of javaR_JavaLang, javaC_JavaLang, javaE_JavaLang,
+ " and javaX_JavaLang are sub-grouped according to the Java version
+ " of their introduction, and sub-group keywords (that is, class
+ " names) are arranged in alphabetical order, so that future newer
+ " keywords can be pre-sorted and appended without disturbing
+ " the current keyword placement. The below _match_es follow suit.
+
+ syn keyword javaR_JavaLang ArithmeticException ArrayIndexOutOfBoundsException ArrayStoreException ClassCastException IllegalArgumentException IllegalMonitorStateException IllegalThreadStateException IndexOutOfBoundsException NegativeArraySizeException NullPointerException NumberFormatException RuntimeException SecurityException StringIndexOutOfBoundsException IllegalStateException UnsupportedOperationException EnumConstantNotPresentException TypeNotPresentException IllegalCallerException LayerInstantiationException
syn cluster javaTop add=javaR_JavaLang
syn cluster javaClasses add=javaR_JavaLang
hi def link javaR_JavaLang javaR_Java
- syn keyword javaC_JavaLang Process RuntimePermission StringKeySet CharacterData01 Class ThreadLocal ThreadLocalMap CharacterData0E Package Character StringCoding Long ProcessImpl ProcessEnvironment Short AssertionStatusDirectives 1PackageInfoProxy UnicodeBlock InheritableThreadLocal AbstractStringBuilder StringEnvironment ClassLoader ConditionalSpecialCasing CharacterDataPrivateUse StringBuffer StringDecoder Entry StringEntry WrappedHook StringBuilder StrictMath State ThreadGroup Runtime CharacterData02 MethodArray Object CharacterDataUndefined Integer Gate Boolean Enum Variable Subset StringEncoder Void Terminator CharsetSD IntegerCache CharacterCache Byte CharsetSE Thread SystemClassLoaderAction CharacterDataLatin1 StringValues StackTraceElement Shutdown ShortCache String ConverterSD ByteCache Lock EnclosingMethodInfo Math Float Value Double SecurityManager LongCache ProcessBuilder StringEntrySet Compiler Number UNIXProcess ConverterSE ExternalData CaseInsensitiveComparator CharacterData00 NativeLibrary
+ " Member enumerations:
+ syn match javaC_JavaLang "\%(\<Thread\.\)\@<=\<State\>"
+ syn match javaC_JavaLang "\%(\<Character\.\)\@<=\<UnicodeScript\>"
+ syn match javaC_JavaLang "\%(\<ProcessBuilder\.Redirect\.\)\@<=\<Type\>"
+ syn match javaC_JavaLang "\%(\<StackWalker\.\)\@<=\<Option\>"
+ syn match javaC_JavaLang "\%(\<System\.Logger\.\)\@<=\<Level\>"
+ " Member classes:
+ syn match javaC_JavaLang "\%(\<Character\.\)\@<=\<Subset\>"
+ syn match javaC_JavaLang "\%(\<Character\.\)\@<=\<UnicodeBlock\>"
+ syn match javaC_JavaLang "\%(\<ProcessBuilder\.\)\@<=\<Redirect\>"
+ syn match javaC_JavaLang "\%(\<ModuleLayer\.\)\@<=\<Controller\>"
+ syn match javaC_JavaLang "\%(\<Runtime\.\)\@<=\<Version\>"
+ syn match javaC_JavaLang "\%(\<System\.\)\@<=\<LoggerFinder\>"
+ syn match javaC_JavaLang "\%(\<Enum\.\)\@<=\<EnumDesc\>"
+ syn keyword javaC_JavaLang Boolean Character Class ClassLoader Compiler Double Float Integer Long Math Number Object Process Runtime SecurityManager String StringBuffer Thread ThreadGroup Byte Short Void InheritableThreadLocal Package RuntimePermission ThreadLocal StrictMath StackTraceElement Enum ProcessBuilder StringBuilder ClassValue Module ModuleLayer StackWalker Record
+ syn match javaC_JavaLang "\<System\>" " See javaDebug.
syn cluster javaTop add=javaC_JavaLang
syn cluster javaClasses add=javaC_JavaLang
hi def link javaC_JavaLang javaC_Java
- syn keyword javaE_JavaLang IncompatibleClassChangeError InternalError UnknownError ClassCircularityError AssertionError ThreadDeath IllegalAccessError NoClassDefFoundError ClassFormatError UnsupportedClassVersionError NoSuchFieldError VerifyError ExceptionInInitializerError InstantiationError LinkageError NoSuchMethodError Error UnsatisfiedLinkError StackOverflowError AbstractMethodError VirtualMachineError OutOfMemoryError
+ syn keyword javaE_JavaLang AbstractMethodError ClassCircularityError ClassFormatError Error IllegalAccessError IncompatibleClassChangeError InstantiationError InternalError LinkageError NoClassDefFoundError NoSuchFieldError NoSuchMethodError OutOfMemoryError StackOverflowError ThreadDeath UnknownError UnsatisfiedLinkError VerifyError VirtualMachineError ExceptionInInitializerError UnsupportedClassVersionError AssertionError BootstrapMethodError
syn cluster javaTop add=javaE_JavaLang
syn cluster javaClasses add=javaE_JavaLang
hi def link javaE_JavaLang javaE_Java
- syn keyword javaX_JavaLang CloneNotSupportedException Exception NoSuchMethodException IllegalAccessException NoSuchFieldException Throwable InterruptedException ClassNotFoundException InstantiationException
+ syn keyword javaX_JavaLang ClassNotFoundException CloneNotSupportedException Exception IllegalAccessException InstantiationException InterruptedException NoSuchMethodException Throwable NoSuchFieldException ReflectiveOperationException
syn cluster javaTop add=javaX_JavaLang
syn cluster javaClasses add=javaX_JavaLang
hi def link javaX_JavaLang javaX_Java
@@ -118,7 +142,7 @@ if exists("java_space_errors")
endif
endif
-syn region javaLabelRegion transparent matchgroup=javaLabel start="\<case\>" matchgroup=NONE end=":" contains=javaNumber,javaCharacter,javaString
+syn region javaLabelRegion transparent matchgroup=javaLabel start="\<case\>" end="->" matchgroup=NONE end=":" contains=javaNumber,javaCharacter,javaString
syn match javaUserLabel "^\s*[_$a-zA-Z][_$a-zA-Z0-9_]*\s*:"he=e-1 contains=javaLabel
syn keyword javaLabel default
@@ -126,7 +150,7 @@ syn keyword javaLabel default
" annoying. Was: if !exists("java_allow_cpp_keywords")
" The following cluster contains all java groups except the contained ones
-syn cluster javaTop add=javaExternal,javaError,javaError,javaBranch,javaLabelRegion,javaLabel,javaConditional,javaRepeat,javaBoolean,javaConstant,javaTypedef,javaOperator,javaType,javaType,javaStatement,javaStorageClass,javaAssert,javaExceptions,javaMethodDecl,javaClassDecl,javaClassDecl,javaClassDecl,javaScopeDecl,javaError,javaError2,javaUserLabel,javaLangObject,javaAnnotation,javaVarArg
+syn cluster javaTop add=javaExternal,javaError,javaBranch,javaLabelRegion,javaLabel,javaConditional,javaRepeat,javaBoolean,javaConstant,javaTypedef,javaOperator,javaType,javaStatement,javaStorageClass,javaAssert,javaExceptions,javaMethodDecl,javaClassDecl,javaScopeDecl,javaError2,javaUserLabel,javaLangObject,javaAnnotation,javaVarArg
" Comments
@@ -153,7 +177,7 @@ syn cluster javaTop add=javaComment,javaLineComment
if !exists("java_ignore_javadoc") && main_syntax != 'jsp'
syntax case ignore
" syntax coloring for javadoc comments (HTML)
- syntax include @javaHtml <sfile>:p:h/html.vim
+ syntax include @javaHtml syntax/html.vim
unlet b:current_syntax
" HTML enables spell checking for all text that is not in a syntax item. This
" is wrong for Java (all identifiers would be spell-checked), so it's undone
@@ -336,7 +360,7 @@ hi def link htmlComment Special
hi def link htmlCommentPart Special
hi def link javaSpaceError Error
-if fnamemodify(bufname("%"), ":t") == "module-info.java"
+if s:isModuleInfoDeclarationCurrentBuffer()
hi def link javaModuleStorageClass StorageClass
hi def link javaModuleStmt Statement
hi def link javaModuleExternal Include
@@ -348,6 +372,7 @@ if main_syntax == 'java'
unlet main_syntax
endif
+delfunction! s:isModuleInfoDeclarationCurrentBuffer
let b:spell_options="contained"
let &cpo = s:cpo_save
unlet s:cpo_save
diff --git a/runtime/syntax/javascript.vim b/runtime/syntax/javascript.vim
index 1ab1c2db11..e513137984 100644
--- a/runtime/syntax/javascript.vim
+++ b/runtime/syntax/javascript.vim
@@ -7,7 +7,7 @@
" (ss) repaired several quoting and grouping glitches
" (ss) fixed regex parsing issue with multiple qualifiers [gi]
" (ss) additional factoring of keywords, globals, and members
-" Last Change: 2021 Mar 30
+" Last Change: 2022 Jun 09
" 2013 Jun 12: adjusted javaScriptRegexpString (Kevin Locke)
" 2018 Apr 14: adjusted javaScriptRegexpString (LongJohnCoder)
@@ -39,9 +39,16 @@ syn region javaScriptStringT start=+`+ skip=+\\\\\|\\`+ end=+`+ contai
syn region javaScriptEmbed start=+${+ end=+}+ contains=@javaScriptEmbededExpr
+" number handling by Christopher Leonard chris.j.leonard@gmx.com
syn match javaScriptSpecialCharacter "'\\.'"
-syn match javaScriptNumber "-\=\<\d\+L\=\>\|0[xX][0-9a-fA-F]\+\>"
-syn match javaScriptNumber "-\=\<\d\+\%(_\d\+\)*\>"
+syn match javaScriptNumber "\<0[bB][0-1]\+\(_[0-1]\+\)*\>"
+syn match javaScriptNumber "\<0[oO][0-7]\+\(_[0-7]\+\)*\>"
+syn match javaScriptNumber "\<0\([0-7]\+\(_[0-7]\+\)*\)\?\>"
+syn match javaScriptNumber "\<0[xX][0-9a-fA-F]\+\(_[0-9a-fA-F]\+\)*\>"
+syn match javaScriptNumber "\<\d\+\(_\d\+\)*[eE][+-]\?\d\+\>"
+syn match javaScriptNumber "\<[1-9]\d*\(_\d\+\)*\(\.\(\d\+\(_\d\+\)*\([eE][+-]\?\d\+\)\?\)\?\)\?\>"
+syn match javaScriptNumber "\<\(\d\+\(_\d\+\)*\)\?\.\d\+\(_\d\+\)*\([eE][+-]\?\d\+\)\?\>"
+syn match javaScriptNumber "\<\d\+\(_\d\+\)*\.\(\d\+\(_\d\+\)*\([eE][+-]\?\d\+\)\?\)\?\>"
syn region javaScriptRegexpString start=+[,(=+]\s*/[^/*]+ms=e-1,me=e-1 skip=+\\\\\|\\/+ end=+/[gimuys]\{0,2\}\s*$+ end=+/[gimuys]\{0,2\}\s*[+;.,)\]}]+me=e-1 end=+/[gimuys]\{0,2\}\s\+\/+me=e-1 contains=@htmlPreproc,javaScriptComment oneline
syn keyword javaScriptConditional if else switch
diff --git a/runtime/syntax/m4.vim b/runtime/syntax/m4.vim
index 6f229ea1ab..366f65890c 100644
--- a/runtime/syntax/m4.vim
+++ b/runtime/syntax/m4.vim
@@ -21,6 +21,7 @@ endif
syn match m4Variable contained "\$\d\+"
syn match m4Special contained "$[@*#]"
syn match m4Comment "\<\(m4_\)\=dnl\>.*" contains=SpellErrors
+syn match m4Comment "#.*" contains=SpellErrors
syn match m4Constants "\<\(m4_\)\=__file__"
syn match m4Constants "\<\(m4_\)\=__line__"
syn keyword m4Constants divnum sysval m4_divnum m4_sysval
@@ -32,7 +33,7 @@ syn region m4Command matchgroup=m4builtin start="\<\(m4_\)\=\(len\|index\|regex
syn keyword m4Statement divert undivert
syn region m4Command matchgroup=m4Type start="\<\(m4_\)\=\(undefine\|popdef\)("he=e-1 end=")" contains=@m4Top
syn region m4Function matchgroup=m4Type start="\<[_A-Z][_A-Z0-9]*("he=e-1 end=")" contains=@m4Top
-syn region m4String start="`" end="'" contained contains=@m4Top,@m4StringContents,SpellErrors
+syn region m4String start="`" end="'" contains=SpellErrors
syn cluster m4Top contains=m4Comment,m4Constants,m4Special,m4Variable,m4String,m4Paren,m4Command,m4Statement,m4Function
" Define the default highlighting.
diff --git a/runtime/syntax/webmacro.vim b/runtime/syntax/webmacro.vim
index fb1fff6d3d..95975251af 100644
--- a/runtime/syntax/webmacro.vim
+++ b/runtime/syntax/webmacro.vim
@@ -34,9 +34,9 @@ syn region webmacroList contained matchgroup=Structure start="\[" matchgroup=Str
syn region webmacroIf start="#if" start="#else" end="{"me=e-1 contains=webmacroVariable,webmacroNumber,webmacroString,webmacroBoolean,webmacroList nextgroup=webmacroBraces
syn region webmacroForeach start="#foreach" end="{"me=e-1 contains=webmacroVariable,webmacroNumber,webmacroString,webmacroBoolean,webmacroList nextgroup=webmacroBraces
-syn match webmacroSet "#set .*$" contains=webmacroVariable,webmacroNumber,webmacroNumber,webmacroBoolean,webmacroString,webmacroList
-syn match webmacroInclude "#include .*$" contains=webmacroVariable,webmacroNumber,webmacroNumber,webmacroBoolean,webmacroString,webmacroList
-syn match webmacroParse "#parse .*$" contains=webmacroVariable,webmacroNumber,webmacroNumber,webmacroBoolean,webmacroString,webmacroList
+syn match webmacroSet "#set .*$" contains=webmacroVariable,webmacroNumber,webmacroBoolean,webmacroString,webmacroList
+syn match webmacroInclude "#include .*$" contains=webmacroVariable,webmacroNumber,webmacroBoolean,webmacroString,webmacroList
+syn match webmacroParse "#parse .*$" contains=webmacroVariable,webmacroNumber,webmacroBoolean,webmacroString,webmacroList
syn region webmacroUse matchgroup=PreProc start="#use .*" matchgroup=PreProc end="^-.*" contains=webmacroHash,@HtmlTop
syn region webmacroBraces matchgroup=Structure start="{" matchgroup=Structure end="}" contained transparent
syn match webmacroBracesError "[{}]"