summaryrefslogtreecommitdiffstats
path: root/syntax
diff options
context:
space:
mode:
authorAdam Stankiewicz <sheerun@sher.pl>2021-03-01 13:44:50 +0100
committerAdam Stankiewicz <sheerun@sher.pl>2021-03-01 13:44:50 +0100
commitcc63193ce82c1e7b9ee2ad7d0ddd14e8394211ef (patch)
tree260360b1a32ca19635f8c8884b81fcec9ed51168 /syntax
parent4c10562d2cc9b084518284c49a158558da5180a7 (diff)
downloadvim-polyglot-cc63193ce82c1e7b9ee2ad7d0ddd14e8394211ef.tar.gz
vim-polyglot-cc63193ce82c1e7b9ee2ad7d0ddd14e8394211ef.zip
Update
Diffstat (limited to 'syntax')
-rw-r--r--syntax/Jenkinsfile.vim1
-rw-r--r--syntax/basic.vim62
-rw-r--r--syntax/basic/literal.vim6
-rw-r--r--syntax/basic/type.vim3
-rw-r--r--syntax/c.vim28
-rw-r--r--syntax/cabal-1.vim2
-rw-r--r--syntax/carp.vim10
-rw-r--r--syntax/cpp.vim17
-rw-r--r--syntax/crystal.vim6
-rw-r--r--syntax/epuppet.vim (renamed from syntax/embeddedpuppet.vim)4
-rw-r--r--syntax/groovy.vim7
-rw-r--r--syntax/haskell.vim19
-rw-r--r--syntax/html.vim25
-rw-r--r--syntax/julia.vim10
-rw-r--r--syntax/kotlin.vim28
-rw-r--r--syntax/lhaskell.vim23
-rw-r--r--syntax/messages.vim3
-rw-r--r--syntax/nginx.vim1
-rw-r--r--syntax/ocaml.vim18
-rw-r--r--syntax/pgsql.vim38
-rw-r--r--syntax/puppet.vim6
-rw-r--r--syntax/rst.vim7
-rw-r--r--syntax/smt2.vim26
-rw-r--r--syntax/tidy.vim195
-rw-r--r--syntax/zig.vim370
25 files changed, 662 insertions, 253 deletions
diff --git a/syntax/Jenkinsfile.vim b/syntax/Jenkinsfile.vim
index 99b8707e..5959fd70 100644
--- a/syntax/Jenkinsfile.vim
+++ b/syntax/Jenkinsfile.vim
@@ -11,6 +11,7 @@ syn keyword jenkinsfileDirective environment options parameters triggers stage t
syn keyword jenkinsfileOption contained buildDiscarder disableConcurrentBuilds overrideIndexTriggers skipDefaultCheckout nextgroup=jenkinsfileOptionParams
syn keyword jenkinsfileOption contained skipStagesAfterUnstable checkoutToSubdirectory timeout retry timestamps nextgroup=jenkinsfileOptionParams
+syn keyword jenkinsfileOption contained disableResume newContainerPerStage preserveStashes quietPeriod parallelsAlwaysFailFast nextgroup=jenkinsfileOptionParams
syn region jenkinsfileOptionParams contained start='(' end=')' transparent contains=@groovyTop
syn match jenkinsfileOptionO /[a-zA-Z]\+([^)]*)/ contains=jenkinsfileOption,jenkinsfileOptionParams transparent containedin=groovyParenT1
diff --git a/syntax/basic.vim b/syntax/basic.vim
index 1b98eb8d..3502fa14 100644
--- a/syntax/basic.vim
+++ b/syntax/basic.vim
@@ -3,16 +3,18 @@ if polyglot#init#is_disabled(expand('<sfile>:p'), 'basic', 'syntax/basic.vim')
endif
" Vim syntax file
-" Language: BASIC
-" Maintainer: Allan Kelly <allan@fruitloaf.co.uk>
-" Last Change: 2011 Dec 25 by Thilo Six
+" Language: BASIC
+" Maintainer: Doug Kearns <dougkearns@gmail.com>
+" Previous Maintainer: Allan Kelly <allan@fruitloaf.co.uk>
+" Contributors: Thilo Six
+" Last Change: 2015 Jan 10
" First version based on Micro$soft QBASIC circa 1989, as documented in
" 'Learn BASIC Now' by Halvorson&Rygmyr. Microsoft Press 1989.
" This syntax file not a complete implementation yet. Send suggestions to the
" maintainer.
-" quit when a syntax file was already loaded
+" Prelude {{{1
if exists("b:current_syntax")
finish
endif
@@ -20,7 +22,7 @@ endif
let s:cpo_save = &cpo
set cpo&vim
-" A bunch of useful BASIC keywords
+" Keywords {{{1
syn keyword basicStatement BEEP beep Beep BLOAD bload Bload BSAVE bsave Bsave
syn keyword basicStatement CALL call Call ABSOLUTE absolute Absolute
syn keyword basicStatement CHAIN chain Chain CHDIR chdir Chdir
@@ -120,32 +122,39 @@ syn keyword basicFunction RIGHT$ right$ Right$ RTRIM$ rtrim$ Rtrim$
syn keyword basicFunction SPACE$ space$ Space$ STR$ str$ Str$
syn keyword basicFunction STRING$ string$ String$ TIME$ time$ Time$
syn keyword basicFunction UCASE$ ucase$ Ucase$ VARPTR$ varptr$ Varptr$
-syn keyword basicTodo contained TODO
-"integer number, or floating point number without a dot.
+" Numbers {{{1
+" Integer number, or floating point number without a dot.
syn match basicNumber "\<\d\+\>"
-"floating point number, with dot
+" Floating point number, with dot
syn match basicNumber "\<\d\+\.\d*\>"
-"floating point number, starting with a dot
+" Floating point number, starting with a dot
syn match basicNumber "\.\d\+\>"
-" String and Character contstants
-syn match basicSpecial contained "\\\d\d\d\|\\."
-syn region basicString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=basicSpecial
+" String and Character constants {{{1
+syn match basicSpecial "\\\d\d\d\|\\." contained
+syn region basicString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=basicSpecial
-syn region basicComment start="REM" end="$" contains=basicTodo
-syn region basicComment start="^[ \t]*'" end="$" contains=basicTodo
+" Line numbers {{{1
syn region basicLineNumber start="^\d" end="\s"
-syn match basicTypeSpecifier "[a-zA-Z0-9][\$%&!#]"ms=s+1
+
+" Data-type suffixes {{{1
+syn match basicTypeSpecifier "[a-zA-Z0-9][$%&!#]"ms=s+1
" Used with OPEN statement
syn match basicFilenumber "#\d\+"
-"syn sync ccomment basicComment
+
+" Mathematical operators {{{1
" syn match basicMathsOperator "[<>+\*^/\\=-]"
-syn match basicMathsOperator "-\|=\|[:<>+\*^/\\]\|AND\|OR"
+syn match basicMathsOperator "-\|=\|[:<>+\*^/\\]\|AND\|OR"
-" Define the default highlighting.
-" Only when an item doesn't have highlighting yet
+" Comments {{{1
+syn keyword basicTodo TODO FIXME XXX NOTE contained
+syn region basicComment start="^\s*\zsREM\>" start="\%(:\s*\)\@<=REM\>" end="$" contains=basicTodo
+syn region basicComment start="'" end="$" contains=basicTodo
+"syn sync ccomment basicComment
+
+" Default Highlighting {{{1
hi def link basicLabel Label
hi def link basicConditional Conditional
hi def link basicRepeat Repeat
@@ -154,17 +163,18 @@ hi def link basicNumber Number
hi def link basicError Error
hi def link basicStatement Statement
hi def link basicString String
-hi def link basicComment Comment
-hi def link basicSpecial Special
+hi def link basicComment Comment
+hi def link basicSpecial Special
hi def link basicTodo Todo
-hi def link basicFunction Identifier
-hi def link basicTypeSpecifier Type
-hi def link basicFilenumber basicTypeSpecifier
+hi def link basicFunction Identifier
+hi def link basicTypeSpecifier Type
+hi def link basicFilenumber basicTypeSpecifier
"hi basicMathsOperator term=bold cterm=bold gui=bold
-
+" Postscript {{{1
let b:current_syntax = "basic"
let &cpo = s:cpo_save
unlet s:cpo_save
-" vim: ts=8
+
+" vim: nowrap sw=2 sts=2 ts=8 noet fdm=marker:
diff --git a/syntax/basic/literal.vim b/syntax/basic/literal.vim
index 81bbef96..de71af92 100644
--- a/syntax/basic/literal.vim
+++ b/syntax/basic/literal.vim
@@ -13,9 +13,11 @@ syntax region typescriptTemplateSubstitution matchgroup=typescriptTemplateSB
\ contained
-syntax region typescriptString
+syntax region typescriptString
\ start=+\z(["']\)+ skip=+\\\%(\z1\|$\)+ end=+\z1+ end=+$+
\ contains=typescriptSpecial,@Spell
+ \ nextgroup=@typescriptSymbols
+ \ skipwhite skipempty
\ extend
syntax match typescriptSpecial contained "\v\\%(x\x\x|u%(\x{4}|\{\x{1,6}})|c\u|.)"
@@ -42,4 +44,4 @@ syntax match typescriptNumber /\<0[bB][01][01_]*\>/ nextgroup=@typescript
syntax match typescriptNumber /\<0[oO][0-7][0-7_]*\>/ nextgroup=@typescriptSymbols skipwhite skipempty
syntax match typescriptNumber /\<0[xX][0-9a-fA-F][0-9a-fA-F_]*\>/ nextgroup=@typescriptSymbols skipwhite skipempty
syntax match typescriptNumber /\<\%(\d[0-9_]*\%(\.\d[0-9_]*\)\=\|\.\d[0-9_]*\)\%([eE][+-]\=\d[0-9_]*\)\=\>/
- \ nextgroup=typescriptSymbols skipwhite skipempty
+ \ nextgroup=@typescriptSymbols skipwhite skipempty
diff --git a/syntax/basic/type.vim b/syntax/basic/type.vim
index 770d3e0d..590dda1a 100644
--- a/syntax/basic/type.vim
+++ b/syntax/basic/type.vim
@@ -132,7 +132,7 @@ syntax region typescriptGenericFunc matchgroup=typescriptTypeBrackets
\ contained skipwhite skipnl
syntax region typescriptFuncType matchgroup=typescriptParens
- \ start=/(/ end=/)\s*=>/me=e-2
+ \ start=/(\(\k\+:\|)\)\@=/ end=/)\s*=>/me=e-2
\ contains=@typescriptParameterList
\ nextgroup=typescriptFuncTypeArrow
\ contained skipwhite skipnl oneline
@@ -142,7 +142,6 @@ syntax match typescriptFuncTypeArrow /=>/
\ containedin=typescriptFuncType
\ contained skipwhite skipnl
-
syntax keyword typescriptConstructorType new
\ nextgroup=@typescriptFunctionType
\ contained skipwhite skipnl
diff --git a/syntax/c.vim b/syntax/c.vim
index cb52a22f..a11a95a2 100644
--- a/syntax/c.vim
+++ b/syntax/c.vim
@@ -5,7 +5,7 @@ endif
" Vim syntax file
" Language: C
" Maintainer: Bram Moolenaar <Bram@vim.org>
-" Last Change: 2019 Nov 29
+" Last Change: 2021 Jan 11
" Quit when a (custom) syntax file was already loaded
if exists("b:current_syntax")
@@ -17,6 +17,9 @@ set cpo&vim
let s:ft = matchstr(&ft, '^\([^.]\)\+')
+" check if this was included from cpp.vim
+let s:in_cpp_family = exists("b:filetype_in_cpp_family")
+
" Optional embedded Autodoc parsing
" To enable it add: let g:c_autodoc = 1
" to your .vimrc
@@ -59,7 +62,7 @@ if !exists("c_no_cformat")
endif
" cCppString: same as cString, but ends at end of line
-if s:ft ==# "cpp" && !exists("cpp_no_cpp11") && !exists("c_no_cformat")
+if s:in_cpp_family && !exists("cpp_no_cpp11") && !exists("c_no_cformat")
" ISO C++11
syn region cString start=+\(L\|u\|u8\|U\|R\|LR\|u8R\|uR\|UR\)\="+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial,cFormat,@Spell extend
syn region cCppString start=+\(L\|u\|u8\|U\|R\|LR\|u8R\|uR\|UR\)\="+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=cSpecial,cFormat,@Spell
@@ -91,7 +94,7 @@ syn match cSpecialCharacter display "L\='\\\o\{1,3}'"
syn match cSpecialCharacter display "'\\x\x\{1,2}'"
syn match cSpecialCharacter display "L'\\x\x\+'"
-if (s:ft ==# "c" && !exists("c_no_c11")) || (s:ft ==# "cpp" && !exists("cpp_no_cpp11"))
+if (s:ft ==# "c" && !exists("c_no_c11")) || (s:in_cpp_family && !exists("cpp_no_cpp11"))
" ISO C11 or ISO C++ 11
if exists("c_no_cformat")
syn region cString start=+\%(U\|u8\=\)"+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial,@Spell extend
@@ -134,7 +137,7 @@ endif
" But avoid matching <::.
syn cluster cParenGroup contains=cParenError,cIncluded,cSpecial,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cUserLabel,cBitField,cOctalZero,@cCppOutInGroup,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom
if exists("c_no_curly_error")
- if s:ft ==# 'cpp' && !exists("cpp_no_cpp11")
+ if s:in_cpp_family && !exists("cpp_no_cpp11")
syn region cParen transparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,@cStringGroup,@Spell
" cCppParen: same as cParen but ends at end-of-line; used in cDefine
syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cParen,cString,@Spell
@@ -148,7 +151,7 @@ if exists("c_no_curly_error")
syn match cErrInParen display contained "^[{}]\|^<%\|^%>"
endif
elseif exists("c_no_bracket_error")
- if s:ft ==# 'cpp' && !exists("cpp_no_cpp11")
+ if s:in_cpp_family && !exists("cpp_no_cpp11")
syn region cParen transparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,@cStringGroup,@Spell
" cCppParen: same as cParen but ends at end-of-line; used in cDefine
syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cParen,cString,@Spell
@@ -162,7 +165,7 @@ elseif exists("c_no_bracket_error")
syn match cErrInParen display contained "[{}]\|<%\|%>"
endif
else
- if s:ft ==# 'cpp' && !exists("cpp_no_cpp11")
+ if s:in_cpp_family && !exists("cpp_no_cpp11")
syn region cParen transparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,cErrInBracket,cCppBracket,@cStringGroup,@Spell
" cCppParen: same as cParen but ends at end-of-line; used in cDefine
syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cErrInBracket,cParen,cBracket,cString,@Spell
@@ -276,12 +279,13 @@ if exists("c_gnu")
syn keyword cType __label__ __complex__ __volatile__
endif
-syn keyword cStructure struct union enum typedef
+syn keyword cTypedef typedef
+syn keyword cStructure struct union enum
syn keyword cStorageClass static register auto volatile extern const
if exists("c_gnu")
syn keyword cStorageClass inline __attribute__
endif
-if !exists("c_no_c99") && s:ft !=# 'cpp'
+if !exists("c_no_c99") && !s:in_cpp_family
syn keyword cStorageClass inline restrict
endif
if !exists("c_no_c11")
@@ -315,8 +319,7 @@ if !exists("c_no_ansi") || exists("c_ansi_constants") || exists("c_gnu")
if exists("c_gnu")
syn keyword cConstant __GNUC__ __FUNCTION__ __PRETTY_FUNCTION__ __func__
endif
- syn keyword cConstant __LINE__ __FILE__ __DATE__ __TIME__ __STDC__
- syn keyword cConstant __STDC_VERSION__
+ syn keyword cConstant __LINE__ __FILE__ __DATE__ __TIME__ __STDC__ __STDC_VERSION__ __STDC_HOSTED__
syn keyword cConstant CHAR_BIT MB_LEN_MAX MB_CUR_MAX
syn keyword cConstant UCHAR_MAX UINT_MAX ULONG_MAX USHRT_MAX
syn keyword cConstant CHAR_MIN INT_MIN LONG_MIN SHRT_MIN
@@ -350,6 +353,8 @@ if !exists("c_no_ansi") || exists("c_ansi_constants") || exists("c_gnu")
syn keyword cConstant SIGSTOP SIGTERM SIGTRAP SIGTSTP SIGTTIN SIGTTOU SIGUSR1 SIGUSR2
syn keyword cConstant _IOFBF _IOLBF _IONBF BUFSIZ EOF WEOF FOPEN_MAX FILENAME_MAX L_tmpnam
syn keyword cConstant SEEK_CUR SEEK_END SEEK_SET TMP_MAX stderr stdin stdout EXIT_FAILURE EXIT_SUCCESS RAND_MAX
+ " used in assert.h
+ syn keyword cConstant NDEBUG
" POSIX 2001
syn keyword cConstant SIGBUS SIGPOLL SIGPROF SIGSYS SIGURG SIGVTALRM SIGXCPU SIGXFSZ
" non-POSIX signals
@@ -422,7 +427,7 @@ endif
syn cluster cLabelGroup contains=cUserLabel
syn match cUserCont display "^\s*\zs\I\i*\s*:$" contains=@cLabelGroup
syn match cUserCont display ";\s*\zs\I\i*\s*:$" contains=@cLabelGroup
-if s:ft ==# 'cpp'
+if s:in_cpp_family
syn match cUserCont display "^\s*\zs\%(class\|struct\|enum\)\@!\I\i*\s*:[^:]"me=e-1 contains=@cLabelGroup
syn match cUserCont display ";\s*\zs\%(class\|struct\|enum\)\@!\I\i*\s*:[^:]"me=e-1 contains=@cLabelGroup
else
@@ -479,6 +484,7 @@ hi def link cSpecialError cError
hi def link cCurlyError cError
hi def link cOperator Operator
hi def link cStructure Structure
+hi def link cTypedef Structure
hi def link cStorageClass StorageClass
hi def link cInclude Include
hi def link cPreProc PreProc
diff --git a/syntax/cabal-1.vim b/syntax/cabal-1.vim
index c473800a..e7a892a3 100644
--- a/syntax/cabal-1.vim
+++ b/syntax/cabal-1.vim
@@ -25,7 +25,7 @@ syn match cabalDocBulletPoint "^\s\+\*"
syn match cabalDocHeadline "^\s\+=.*$"
syn match cabalDocCode "^\s\+>.*$"
syn match cabalDocNewline "^\s\+\.\s*$"
-syn match cabalSection "^\c\(executable\|library\|flag\|source-repository\|test-suite\|benchmark\)"
+syn match cabalSection "^\c\(executable\|library\|flag\|source-repository\|test-suite\|benchmark\|common\)"
syn match cabalEntry "^\s*[A-Za-z][a-zA-Z\-]*:" contains=cabalIdentifier,cabalColon
syn region cabalDescription start="^\s*[dD]escription:" end="^\<" keepend
diff --git a/syntax/carp.vim b/syntax/carp.vim
index a3f11c66..849c3247 100644
--- a/syntax/carp.vim
+++ b/syntax/carp.vim
@@ -33,6 +33,7 @@ syn keyword carpSyntax str* println* break doc sig hidden private
syn keyword carpSyntax while-do const-assert save-docs defproject
syn keyword carpSyntax relative-include not-on-windows load-and-use
syn keyword carpSyntax deftest
+syn keyword carpSyntax quasiquote unquote unquote-splicing
syn match carpSyntax "\vc(a|d){1,4}r"
syn keyword carpFunc λ
@@ -55,7 +56,7 @@ syn keyword carpFunc string-join free sleep-seconds sleep-micros substitute
syn keyword carpFunc neg to-float match matches? find global-match match-str
syn keyword carpFunc from-float tan asin atan cosh sinh tanh exp frexp ldexp
syn keyword carpFunc log log10 modf pow ceil clamp approx refstr foreach
-syn keyword carpFunc => ==> repeat nth replicate range raw aset aset!
+syn keyword carpFunc -> --> => ==> repeat nth replicate range raw aset aset!
syn keyword carpFunc push-back pop-back sort index-of element-count
syn keyword carpFunc apply unsafe-from from just? nothing? ptr from-ptr
syn keyword carpFunc map and-then unwrap-or-zero or-else unwrap-or-else
@@ -126,6 +127,13 @@ syn match carpComment /;.*$/ contains=@Spell
syn region carpQuoted matchgroup=Delimiter start="#['`]"rs=s+2 end=![ \t()\[\]";]!re=e-1,me=e-1 contains=@carpQuotedStuff,@carpQuotedOrNormal
syn region carpQuoted matchgroup=Delimiter start="#['`]("rs=s+3 matchgroup=Delimiter end=")"re=e-1 contains=@carpQuotedStuff,@carpQuotedOrNormal
+syn region carpUnquote matchgroup=Delimiter start="%"rs=s+1 end=![ \t\[\]()";]!re=e-1,me=e-1 contained contains=@carpNormal
+syn region carpUnquote matchgroup=Delimiter start="%@"rs=s+2 end=![ \t\[\]()";]!re=e-1,me=e-1 contained contains=@carpNormal
+syn region carpUnquote matchgroup=Delimiter start="%@("rs=s+2 end=")"re=e-1 contained contains=@carpNormal
+syn region carpUnquote matchgroup=Delimiter start="%("rs=s+2 end=")"re=e-1 contained contains=@carpNormal
+
+syn cluster carpQuotedStuff add=carpUnquote
+
syn cluster carpNormal add=carpQuoted,carpComment
syn cluster carpQuotedOrNormal add=carpComment
diff --git a/syntax/cpp.vim b/syntax/cpp.vim
index 0fd0acc2..a31f3416 100644
--- a/syntax/cpp.vim
+++ b/syntax/cpp.vim
@@ -6,13 +6,16 @@ endif
" Language: C++
" Current Maintainer: vim-jp (https://github.com/vim-jp/vim-cpp)
" Previous Maintainer: Ken Shan <ccshan@post.harvard.edu>
-" Last Change: 2017 Jun 05
+" Last Change: 2021 Jan 12
" quit when a syntax file was already loaded
if exists("b:current_syntax")
finish
endif
+" inform C syntax that the file was included from cpp.vim
+let b:filetype_in_cpp_family = 1
+
" Read the C syntax to start with
runtime! syntax/c.vim
unlet b:current_syntax
@@ -59,12 +62,6 @@ if !exists("cpp_no_cpp14")
syn case match
endif
-" C++ 17 extensions
-if !exists("cpp_no_cpp17")
- syn match cppCast "\<reinterpret_pointer_cast\s*<"me=e-1
- syn match cppCast "\<reinterpret_pointer_cast\s*$"
-endif
-
" C++ 20 extensions
if !exists("cpp_no_cpp20")
syn keyword cppStatement co_await co_return co_yield requires
@@ -74,6 +71,12 @@ if !exists("cpp_no_cpp20")
syn keyword cppModule import module export
endif
+" C++ 17 extensions
+if !exists("cpp_no_cpp17")
+ syn match cppCast "\<reinterpret_pointer_cast\s*<"me=e-1
+ syn match cppCast "\<reinterpret_pointer_cast\s*$"
+endif
+
" The minimum and maximum operators in GNU C++
syn match cppMinMax "[<>]?"
diff --git a/syntax/crystal.vim b/syntax/crystal.vim
index a776e59b..ea862acd 100644
--- a/syntax/crystal.vim
+++ b/syntax/crystal.vim
@@ -95,8 +95,6 @@ syn match crystalStringEscape "\%(\\M-\\C-\|\\C-\\M-\|\\M-\\c\|\\c\\M-\|\\c\|\\C
syn region crystalInterpolation matchgroup=crystalInterpolationDelim start="#{" end="}" contained contains=TOP
syn region crystalNoInterpolation start="\\#{" end="}" contained
syn match crystalNoInterpolation "\\#{" display contained
-syn match crystalNoInterpolation "\\#\%(\$\|@@\=\)\w\+" display contained
-syn match crystalNoInterpolation "\\#\$\W" display contained
syn match crystalDelimEscape "\\[(<{\[)>}\]]" transparent display contained contains=NONE
@@ -261,10 +259,10 @@ syn cluster crystalDeclaration contains=crystalAliasDeclaration,crystalAliasDecl
" Note: the following keywords have already been defined:
" begin case class def do end for if module unless until while
syn match crystalControl "\<\%(break\|next\|rescue\|return\)\>[?!]\@!"
-syn match crystalKeyword "\<\%(super\|previous_def\|yield\|of\|with\|uninitialized\|union\)\>[?!]\@!"
+syn match crystalKeyword "\<\%(super\|previous_def\|yield\|of\|with\|uninitialized\|union\|out\)\>[?!]\@!"
syn match crystalBoolean "\<\%(true\|false\)\>[?!]\@!"
syn match crystalPseudoVariable "\<\%(nil\|__DIR__\|__FILE__\|__LINE__\|__END_LINE__\)\>[?!]\@!" " TODO: reorganise
-syn match crystalPseudoVariable "\<self\>"
+syn match crystalPseudoVariable "\<self\>[?!]\@!"
" Expensive Mode - match 'end' with the appropriate opening keyword for syntax
" based folding and special highlighting of module/class/method definitions
diff --git a/syntax/embeddedpuppet.vim b/syntax/epuppet.vim
index dad9e1fb..61c70d21 100644
--- a/syntax/embeddedpuppet.vim
+++ b/syntax/epuppet.vim
@@ -1,4 +1,4 @@
-if polyglot#init#is_disabled(expand('<sfile>:p'), 'puppet', 'syntax/embeddedpuppet.vim')
+if polyglot#init#is_disabled(expand('<sfile>:p'), 'puppet', 'syntax/epuppet.vim')
finish
endif
@@ -29,5 +29,5 @@ syn region ePuppetComment matchgroup=ePuppetDelimiter start="<%-\=#" end=
hi def link ePuppetDelimiter PreProc
hi def link ePuppetComment Comment
-let b:current_syntax = "embeddedpuppet"
+let b:current_syntax = "epuppet"
diff --git a/syntax/groovy.vim b/syntax/groovy.vim
index fdadca90..87fc89df 100644
--- a/syntax/groovy.vim
+++ b/syntax/groovy.vim
@@ -6,9 +6,9 @@ endif
" Language: Groovy
" Original Author: Alessio Pace <billy.corgan AT tiscali.it>
" Maintainer: Tobias Rapp <yahuxo+vim AT mailbox.org>
-" Version: 0.1.17
+" Version: 0.1.18
" URL: http://www.vim.org/scripts/script.php?script_id=945
-" Last Change: 2020 May 26
+" Last Change: 2021 Feb 03
" THE ORIGINAL AUTHOR'S NOTES:
"
@@ -257,7 +257,8 @@ if exists("groovy_regex_strings")
endif
" syn region groovyELExpr start=+${+ end=+}+ keepend contained
syn match groovyELExpr /\${.\{-}}/ contained
-syn match groovyELExpr /\$[a-zA-Z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF\u0100-\uFFFE_][a-zA-Z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF\u0100-\uFFFE0-9_.]*/ contained
+" Fix: force use of the NFA regexp engine (2), see GitHub issue #7280
+syn match groovyELExpr /\%#=2\$[a-zA-Z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF\u0100-\uFFFE_][a-zA-Z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF\u0100-\uFFFE0-9_.]*/ contained
hi def link groovyELExpr Identifier
" TODO: better matching. I am waiting to understand how it really works in groovy
diff --git a/syntax/haskell.vim b/syntax/haskell.vim
index 52c33190..efe30323 100644
--- a/syntax/haskell.vim
+++ b/syntax/haskell.vim
@@ -40,7 +40,12 @@ syn match haskellTypeSig
\ haskellParens
syn keyword haskellWhere where
syn keyword haskellLet let
-syn match HaskellDerive "\<deriving\>\(\s\+\<\(anyclass\|instance\|newtype\|stock\)\>\)\?"
+syn keyword haskellDeriveKeyword deriving anyclass instance newtype stock via contained
+syn match haskellDerive "deriving\(\s\+instance\)\?\(\s\+anyclass\|\s\+newtype\|\s\+stock\|\s\+.\{-}\_s\+via\)\?"
+ \ contains=
+ \ haskellDeriveKeyword,
+ \ haskellParens,
+ \ haskellType
syn keyword haskellDeclKeyword module class instance newtype in
syn match haskellDecl "\<\(type\|data\)\>\s\+\(\<family\>\)\?"
syn keyword haskellDefault default
@@ -67,8 +72,8 @@ if get(g:, 'haskell_enable_static_pointers', 0)
syn keyword haskellStatic static
endif
syn keyword haskellConditional if then else
-syn match haskellNumber "\<[0-9]\+\>\|\<0[xX][0-9a-fA-F]\+\>\|\<0[oO][0-7]\+\>\|\<0[bB][10]\+\>"
-syn match haskellFloat "\<[0-9]\+\.[0-9]\+\([eE][-+]\=[0-9]\+\)\=\>"
+syn match haskellNumber "\<[0-9]\+\>\|\<[0-9_]\+\>\|\<0[xX][0-9a-fA-F_]\+\>\|\<0[oO][0-7_]\+\>\|\<0[bB][10_]\+\>"
+syn match haskellFloat "\<[0-9]\+\.[0-9_]\+\([eE][-+]\=[0-9_]\+\)\=\>"
syn match haskellSeparator "[,;]"
syn region haskellParens matchgroup=haskellDelimiter start="(" end=")" contains=TOP,haskellTypeSig,@Spell
syn region haskellBrackets matchgroup=haskellDelimiter start="\[" end="]" contains=TOP,haskellTypeSig,@Spell
@@ -94,7 +99,7 @@ syn match haskellLineComment "---*\([^-!#$%&\*\+./<=>\?@\\^|~].*\)\?$"
syn match haskellBacktick "`[A-Za-z_][A-Za-z0-9_\.']*#\?`"
syn region haskellString start=+"+ skip=+\\\\\|\\"+ end=+"+
\ contains=@Spell
-syn match haskellIdentifier "[_a-z][a-zA-z0-9_']*" contained
+syn match haskellIdentifier "[_a-z][a-zA-Z0-9_']*" contained
syn match haskellChar "\<'[^'\\]'\|'\\.'\|'\\u[0-9a-fA-F]\{4}'\>"
syn match haskellType "\<[A-Z][a-zA-Z0-9_']*\>"
syn region haskellBlockComment start="{-" end="-}"
@@ -110,7 +115,7 @@ syn keyword haskellTodo TODO FIXME contained
syn match haskellShebang "\%^#!.*$"
if !get(g:, 'haskell_disable_TH', 0)
syn match haskellQuasiQuoted "." containedin=haskellQuasiQuote contained
- syn region haskellQuasiQuote matchgroup=haskellTH start="\[[_a-zA-Z][a-zA-z0-9._']*|" end="|\]"
+ syn region haskellQuasiQuote matchgroup=haskellTH start="\[[_a-zA-Z][a-zA-Z0-9._']*|" end="|\]"
syn region haskellTHBlock matchgroup=haskellTH start="\[\(d\|t\|p\)\?|" end="|]" contains=TOP
syn region haskellTHDoubleBlock matchgroup=haskellTH start="\[||" end="||]" contains=TOP
endif
@@ -165,13 +170,13 @@ highlight def link haskellType Type
highlight def link haskellImportKeywords Include
if get(g:, 'haskell_classic_highlighting', 0)
highlight def link haskellDeclKeyword Keyword
- highlight def link HaskellDerive Keyword
+ highlight def link haskellDeriveKeyword Keyword
highlight def link haskellDecl Keyword
highlight def link haskellWhere Keyword
highlight def link haskellLet Keyword
else
highlight def link haskellDeclKeyword Structure
- highlight def link HaskellDerive Structure
+ highlight def link haskellDeriveKeyword Structure
highlight def link haskellDecl Structure
highlight def link haskellWhere Structure
highlight def link haskellLet Structure
diff --git a/syntax/html.vim b/syntax/html.vim
index c823d362..2113f12a 100644
--- a/syntax/html.vim
+++ b/syntax/html.vim
@@ -4,11 +4,11 @@ endif
" Vim syntax file
" Language: HTML
-" Maintainer: Jorge Maldonado Ventura <jorgesumle@freakspot.net>
+" Previous Maintainer: Jorge Maldonado Ventura <jorgesumle@freakspot.net>
" Previous Maintainer: Claudio Fleiner <claudio@fleiner.com>
" Repository: https://notabug.org/jorgesumle/vim-html-syntax
-" Last Change: 2020 Mar 17
-" Included patch from Florian Breisch to add the summary element
+" Last Change: 2021 Feb 25
+" Included patch #7900 to fix comments
"
" Please check :help html.vim for some comments and a description of the options
@@ -145,9 +145,21 @@ syn match htmlSpecialChar "&#\=[0-9A-Za-z]\{1,8};"
if exists("html_wrong_comments")
syn region htmlComment start=+<!--+ end=+--\s*>+ contains=@Spell
else
- syn region htmlComment start=+<!+ end=+>+ contains=htmlCommentPart,htmlCommentError,@Spell
- syn match htmlCommentError contained "[^><!]"
- syn region htmlCommentPart contained start=+--+ end=+--\s*+ contains=@htmlPreProc,@Spell
+ " The HTML 5.2 syntax 8.2.4.41-42: bogus comment is parser error; browser skips until next &gt;
+ " Note: must stand first to get lesser :syn-priority
+ syn region htmlComment start=+<!+ end=+>+ contains=htmlCommentError
+ " Normal comment opening <!-- ...>
+ syn region htmlComment start=+<!--+ end=+>+ contains=htmlCommentPart,@Spell
+ " Idem 8.2.4.43-44: <!--> and <!---> are parser errors; browser treats as comments
+ syn match htmlComment "<!---\?>" contains=htmlCommentError
+ " Idem 8.2.4.51: any number of consecutive dashes within comment is okay; --> closes comment
+ " Idem 8.2.4.52: closing comment by dash-dash-bang (--!>) is error ignored by parser(!); closes comment
+ syn region htmlCommentPart contained start=+--+ end=+--!\?>+me=e-1 contains=htmlCommentNested,@htmlPreProc,@Spell
+ " Idem 8.2.4.49: opening nested comment <!-- is parser error, ignored by browser, except <!--> is all right
+ syn match htmlCommentNested contained "<!--[^>]"me=e-1
+ syn match htmlCommentNested contained "<!--->"me=e-3
+ syn match htmlCommentNested contained "<!---\?!>"me=e-4
+ syn match htmlCommentError contained "[^><!]"
endif
syn region htmlComment start=+<!DOCTYPE+ keepend end=+>+
@@ -321,6 +333,7 @@ hi def link htmlStatement Statement
hi def link htmlComment Comment
hi def link htmlCommentPart Comment
hi def link htmlValue String
+hi def link htmlCommentNested htmlCommentError
hi def link htmlCommentError htmlError
hi def link htmlTagError htmlError
hi def link htmlEvent javaScript
diff --git a/syntax/julia.vim b/syntax/julia.vim
index 42ed6acb..5d9a7ae1 100644
--- a/syntax/julia.vim
+++ b/syntax/julia.vim
@@ -143,7 +143,7 @@ exec 'syntax region juliaConditionalEBlock matchgroup=juliaConditional transpar
exec 'syntax region juliaWhileBlock matchgroup=juliaRepeat start="'.s:nodot.'\<while\>" end="'.s:nodot.'\<end\>" contains=@juliaExpressions fold'
exec 'syntax region juliaForBlock matchgroup=juliaRepeat start="'.s:nodot.'\<for\>" end="'.s:nodot.'\<end\>" contains=@juliaExpressions,juliaOuter fold'
exec 'syntax region juliaBeginBlock matchgroup=juliaBlKeyword start="'.s:nodot.'\<begin\>" end="'.s:nodot.'\<end\>" contains=@juliaExpressions fold'
-exec 'syntax region juliaFunctionBlock matchgroup=juliaBlKeyword start="'.s:nodot.'\<function\>" end="'.s:nodot.'\<end\>" contains=@juliaExpressions fold'
+exec 'syntax region juliaFunctionBlock matchgroup=juliaBlKeyword start="'.s:nodot.'\<function\>" end="'.s:nodot.'\<end\>" contains=@juliaExpressions,juliaFunctionDef,juliaFunctionDefP fold'
exec 'syntax region juliaMacroBlock matchgroup=juliaBlKeyword start="'.s:nodot.'\<macro\>" end="'.s:nodot.'\<end\>" contains=@juliaExpressions fold'
exec 'syntax region juliaQuoteBlock matchgroup=juliaBlKeyword start="'.s:nodot.'\<quote\>" end="'.s:nodot.'\<end\>" contains=@juliaExpressions fold'
exec 'syntax region juliaStructBlock matchgroup=juliaBlKeyword start="'.s:nodot.'\<struct\>" end="'.s:nodot.'\<end\>" contains=@juliaExpressions fold'
@@ -201,6 +201,10 @@ syntax match juliaConstIO display "\<\%(std\%(out\|in\|err\)\|devnull\)\>"
syntax match juliaConstC display "\<\%(C_NULL\)\>"
syntax match juliaConstGeneric display "\<\%(nothing\|Main\|undef\|missing\)\>"
+exec 'syntax match juliaFunctionDef contained transparent "\%(\<function\s\+\)\@'.s:d(20).'<=' . s:idregex . '\%(\.' . s:idregex . '\)*\ze\s\+\%(end\>\|$\)" contains=juliaFunctionName'
+exec 'syntax region juliaFunctionDefP contained transparent start="\%(\<function\s\+\)\@'.s:d(20).'<=' . s:idregex . '\%(\.' . s:idregex . '\)*\s*(" end=")\@'.s:d(1).'<=" contains=juliaFunctionName,juliaParBlock'
+exec 'syntax match juliaFunctionName contained "\%(\<function\s\+\)\@'.s:d(20).'<=' . s:idregex . '\%(\.' . s:idregex . '\)*"'
+
syntax match juliaPossibleMacro transparent "@" contains=juliaMacroCall,juliaMacroCallP,juliaPrintfMacro
exec 'syntax match juliaMacro contained "@' . s:idregex . '\%(\.' . s:idregex . '\)*"'
@@ -369,7 +373,8 @@ hi def link juliaComma juliaNone
hi def link juliaColon juliaOperator
-hi def link juliaMacroName juliaMacro
+hi def link juliaFunctionName juliaFunction
+hi def link juliaMacroName juliaMacro
hi def link juliaKeyword Keyword
@@ -423,6 +428,7 @@ hi def link juliaComprehensionIf Keyword
hi def link juliaDollarVar Identifier
+hi def link juliaFunction Function
hi def link juliaMacro Macro
hi def link juliaSymbol Identifier
hi def link juliaSymbolS Identifier
diff --git a/syntax/kotlin.vim b/syntax/kotlin.vim
index 92362eb5..762c3068 100644
--- a/syntax/kotlin.vim
+++ b/syntax/kotlin.vim
@@ -5,7 +5,7 @@ endif
" Vim syntax file
" Language: Kotlin
" Maintainer: Alexander Udalov
-" Latest Revision: 13 July 2020
+" Latest Revision: 17 February 2021
if exists('b:current_syntax')
finish
@@ -33,21 +33,21 @@ syn keyword ktType ExperimentalTime ExperimentalTypeInference ExperimentalUnsign
syn keyword ktType FileWalkDirection Float FloatArray FloatIterator Function Function0 Function1 Function10 Function11 Function12 Function13 Function14 Function15 Function16
syn keyword ktType Function17 Function18 Function19 Function2 Function20 Function21 Function22 Function3 Function4 Function5 Function6 Function7 Function8 Function9 FunctionN
syn keyword ktType Getter Grouping HashMap HashSet IllegalArgumentException IllegalStateException IndexOutOfBoundsException IndexedValue Int IntArray IntIterator IntProgression
-syn keyword ktType IntRange InvocationKind Iterable Iterator JsExport JsName JvmDefault JvmDefaultWithoutCompatibility JvmField JvmMultifileClass JvmName JvmOverloads JvmStatic
-syn keyword ktType JvmSuppressWildcards JvmSynthetic JvmWildcard KAnnotatedElement KCallable KClass KClassifier KDeclarationContainer KFunction KMutableProperty KMutableProperty0
-syn keyword ktType KMutableProperty1 KMutableProperty2 KParameter KProperty KProperty0 KProperty1 KProperty2 KType KTypeParameter KTypeProjection KVariance KVisibility Key Kind
-syn keyword ktType KotlinNullPointerException KotlinReflectionNotSupportedError KotlinVersion Lazy LazyThreadSafetyMode Level LinkedHashMap LinkedHashSet List ListIterator Long
-syn keyword ktType LongArray LongIterator LongProgression LongRange Map MatchGroup MatchGroupCollection MatchNamedGroupCollection MatchResult Metadata Monotonic MustBeDocumented
-syn keyword ktType MutableCollection MutableEntry MutableIterable MutableIterator MutableList MutableListIterator MutableMap MutableSet NoSuchElementException NoSuchFileException
-syn keyword ktType NoWhenBranchMatchedException NotImplementedError Nothing NullPointerException Number NumberFormatException ObservableProperty OnErrorAction OptIn
-syn keyword ktType OptionalExpectation OverloadResolutionByLambdaReturnType Pair ParameterName PropertyDelegateProvider PublishedApi PurelyImplements Random RandomAccess
+syn keyword ktType IntRange InvocationKind Iterable Iterator JsExport JsName JvmDefault JvmDefaultWithoutCompatibility JvmField JvmInline JvmMultifileClass JvmName JvmOverloads
+syn keyword ktType JvmRecord JvmStatic JvmSuppressWildcards JvmSynthetic JvmWildcard KAnnotatedElement KCallable KClass KClassifier KDeclarationContainer KFunction KMutableProperty
+syn keyword ktType KMutableProperty0 KMutableProperty1 KMutableProperty2 KParameter KProperty KProperty0 KProperty1 KProperty2 KType KTypeParameter KTypeProjection KVariance
+syn keyword ktType KVisibility Key Kind KotlinNullPointerException KotlinReflectionNotSupportedError KotlinVersion Lazy LazyThreadSafetyMode Level LinkedHashMap LinkedHashSet List
+syn keyword ktType ListIterator Long LongArray LongIterator LongProgression LongRange Map MatchGroup MatchGroupCollection MatchNamedGroupCollection MatchResult Metadata Monotonic
+syn keyword ktType MustBeDocumented MutableCollection MutableEntry MutableIterable MutableIterator MutableList MutableListIterator MutableMap MutableSet NoSuchElementException
+syn keyword ktType NoSuchFileException NoWhenBranchMatchedException NotImplementedError Nothing NullPointerException Number NumberFormatException ObservableProperty OnErrorAction
+syn keyword ktType OptIn OptionalExpectation OverloadResolutionByLambdaReturnType Pair ParameterName PropertyDelegateProvider PublishedApi PurelyImplements Random RandomAccess
syn keyword ktType ReadOnlyProperty ReadWriteProperty Regex RegexOption Repeatable ReplaceWith RequiresOptIn RestrictsSuspension Result Retention Returns ReturnsNotNull
syn keyword ktType RuntimeException Sequence SequenceScope Set Setter SharedImmutable Short ShortArray ShortIterator SimpleEffect SinceKotlin Strictfp String StringBuilder Suppress
syn keyword ktType Synchronized Target TestTimeSource ThreadLocal Throwable Throws TimeMark TimeSource TimedValue Transient Triple TypeCastException Typography UByte UByteArray
syn keyword ktType UByteIterator UInt UIntArray UIntIterator UIntProgression UIntRange ULong ULongArray ULongIterator ULongProgression ULongRange UShort UShortArray UShortIterator
syn keyword ktType UninitializedPropertyAccessException Unit UnsafeVariance UnsupportedOperationException UseExperimental Volatile
-syn keyword ktModifier annotation companion enum inner internal private protected public abstract final open override sealed vararg dynamic expect actual
+syn keyword ktModifier annotation companion enum inner abstract final open override sealed vararg dynamic expect actual
syn keyword ktStructure class object interface typealias fun val var constructor init
syn keyword ktReservedKeyword typeof
@@ -55,7 +55,13 @@ syn keyword ktReservedKeyword typeof
syn keyword ktBoolean true false
syn keyword ktConstant null
-syn keyword ktModifier data tailrec lateinit reified external inline noinline crossinline const operator infix suspend
+syn keyword ktModifier reified external inline noinline crossinline
+
+syn match ktModifier "\v<(data|value)>\ze\@=.*<class>"
+syn match ktModifier "\v<(tailrec|operator|infix|suspend)>\ze\@=.*<fun>"
+syn match ktModifier "\v<(const)>\ze\@=.*<val>"
+syn match ktModifier "\v<(lateinit)>\ze\@=.*<var>"
+syn match ktModifier "\v<(internal|private|protected|public)>\ze\@=.*<(class|fun|val|var|typealias)>"
syn match ktOperator "\v\?:|::|\<\=? | \>\=?|[!=]\=\=?|<as>\??|[-!%&*+/|]"
diff --git a/syntax/lhaskell.vim b/syntax/lhaskell.vim
index 9dd6e6f5..b963be0f 100644
--- a/syntax/lhaskell.vim
+++ b/syntax/lhaskell.vim
@@ -4,12 +4,12 @@ endif
" Vim syntax file
" Language: Haskell with literate comments, Bird style,
-" TeX style and plain text surrounding
+" Markdown style, TeX style and plain text surrounding
" \begin{code} \end{code} blocks
" Maintainer: Haskell Cafe mailinglist <haskell-cafe@haskell.org>
" Original Author: Arthur van Leeuwen <arthurvl@cs.uu.nl>
-" Last Change: 2010 Apr 11
-" Version: 1.04
+" Last Change: 2020 Feb 25
+" Version: 1.05
"
" Thanks to Ian Lynagh for thoughtful comments on initial versions and
" for the inspiration for writing this in the first place.
@@ -48,8 +48,8 @@ endif
" First off, see if we can inherit a user preference for lhs_markup
if !exists("b:lhs_markup")
if exists("lhs_markup")
- if lhs_markup =~ '\<\%(tex\|none\)\>'
- let b:lhs_markup = matchstr(lhs_markup,'\<\%(tex\|none\)\>')
+ if lhs_markup =~ '\<\%(tex\|md\|none\)\>'
+ let b:lhs_markup = matchstr(lhs_markup,'\<\%(tex\|md\|none\)\>')
else
echohl WarningMsg | echo "Unknown value of lhs_markup" | echohl None
let b:lhs_markup = "unknown"
@@ -58,7 +58,7 @@ if !exists("b:lhs_markup")
let b:lhs_markup = "unknown"
endif
else
- if b:lhs_markup !~ '\<\%(tex\|none\)\>'
+ if b:lhs_markup !~ '\<\%(tex\|md\|none\)\>'
let b:lhs_markup = "unknown"
endif
endif
@@ -78,6 +78,8 @@ call cursor(1,1)
if b:lhs_markup == "unknown"
if search('\\documentclass\|\\begin{\(code}\)\@!\|\\\(sub\)*section\|\\chapter|\\part','W') != 0
let b:lhs_markup = "tex"
+ elseif search('```haskell','W') != 0
+ let b:lhs_markup = "md"
else
let b:lhs_markup = "plain"
endif
@@ -90,6 +92,10 @@ if b:lhs_markup == "tex"
" Tex.vim removes "_" from 'iskeyword', but we need it for Haskell.
setlocal isk+=_
syntax cluster lhsTeXContainer contains=tex.*Zone,texAbstract
+elseif b:lhs_markup == "md"
+ runtime! syntax/markdown.vim
+ unlet b:current_syntax
+ syntax cluster lhsTeXContainer contains=markdown.*
else
syntax cluster lhsTeXContainer contains=.*
endif
@@ -100,9 +106,12 @@ syntax include @haskellTop syntax/haskell.vim
syntax region lhsHaskellBirdTrack start="^>" end="\%(^[^>]\)\@=" contains=@haskellTop,lhsBirdTrack containedin=@lhsTeXContainer
syntax region lhsHaskellBeginEndBlock start="^\\begin{code}\s*$" matchgroup=NONE end="\%(^\\end{code}.*$\)\@=" contains=@haskellTop,beginCodeBegin containedin=@lhsTeXContainer
+syntax region lhsHaskellMDBlock start="^```haskell$" matchgroup=NONE end="^```$" keepend contains=@haskellTop,lhsMarkdownCode containedin=@lhsTeXContainer
syntax match lhsBirdTrack "^>" contained
+syntax match lhsMarkdownCode "^\(```haskell\|^```\)$" contained
+
syntax match beginCodeBegin "^\\begin" nextgroup=beginCodeCode contained
syntax region beginCodeCode matchgroup=texDelimiter start="{" end="}"
@@ -111,6 +120,8 @@ syntax region beginCodeCode matchgroup=texDelimiter start="{" end="}"
hi def link lhsBirdTrack Comment
+hi def link lhsMarkdownCode Comment
+
hi def link beginCodeBegin texCmdName
hi def link beginCodeCode texSection
diff --git a/syntax/messages.vim b/syntax/messages.vim
index a66dbe63..3219b67d 100644
--- a/syntax/messages.vim
+++ b/syntax/messages.vim
@@ -8,6 +8,7 @@ endif
" Latest Revision: 2008-06-29
" Changes: 2008-06-29 support for RFC3339 tuimestamps James Vega
" 2016 Jan 19: messagesDate changed by Bram
+" 2021 Jan 27: messagesHourRFC3339 changed from #946
if exists("b:current_syntax")
finish
@@ -30,7 +31,7 @@ syn match messagesDateRFC3339 contained display '\d\{4}-\d\d-\d\d'
syn match messagesRFC3339T contained display '\cT'
\ nextgroup=messagesHourRFC3339
-syn match messagesHourRFC3339 contained display '\c\d\d:\d\d:\d\d\(\.\d\+\)\=\([+-]\d\d:\d\d\|Z\)'
+syn match messagesHourRFC3339 contained display '\c\d\d:\d\d:\d\d\(\.\d\+\)\=\([+-]\d\d:\d\d\|Z\)\s*'
\ nextgroup=messagesHost
syn match messagesHost contained display '\S*\s*'
diff --git a/syntax/nginx.vim b/syntax/nginx.vim
index 9c657fe3..7c889ffe 100644
--- a/syntax/nginx.vim
+++ b/syntax/nginx.vim
@@ -2280,7 +2280,6 @@ hi link ngxComment Comment
hi link ngxVariable Identifier
hi link ngxVariableBlock Identifier
hi link ngxVariableString PreProc
-hi link ngxBlock Normal
hi link ngxString String
hi link ngxIPaddr Delimiter
hi link ngxBoolean Boolean
diff --git a/syntax/ocaml.vim b/syntax/ocaml.vim
index c3508ce8..14939535 100644
--- a/syntax/ocaml.vim
+++ b/syntax/ocaml.vim
@@ -88,10 +88,10 @@ syn cluster ocamlContained contains=ocamlTodo,ocamlPreDef,ocamlModParam,ocamlMo
" Enclosing delimiters
-syn region ocamlEncl transparent matchgroup=ocamlKeyword start="(" matchgroup=ocamlKeyword end=")" contains=ALLBUT,@ocamlContained,ocamlParenErr
-syn region ocamlEncl transparent matchgroup=ocamlKeyword start="{" matchgroup=ocamlKeyword end="}" contains=ALLBUT,@ocamlContained,ocamlBraceErr
-syn region ocamlEncl transparent matchgroup=ocamlKeyword start="\[" matchgroup=ocamlKeyword end="\]" contains=ALLBUT,@ocamlContained,ocamlBrackErr
-syn region ocamlEncl transparent matchgroup=ocamlKeyword start="\[|" matchgroup=ocamlKeyword end="|\]" contains=ALLBUT,@ocamlContained,ocamlArrErr
+syn region ocamlEncl transparent matchgroup=ocamlKeywordDelimiter start="(" matchgroup=ocamlKeywordDelimiter end=")" contains=ALLBUT,@ocamlContained,ocamlParenErr
+syn region ocamlEncl transparent matchgroup=ocamlKeywordDelimiter start="{" matchgroup=ocamlKeywordDelimiter end="}" contains=ALLBUT,@ocamlContained,ocamlBraceErr
+syn region ocamlEncl transparent matchgroup=ocamlKeywordDelimiter start="\[" matchgroup=ocamlKeywordDelimiter end="\]" contains=ALLBUT,@ocamlContained,ocamlBrackErr
+syn region ocamlEncl transparent matchgroup=ocamlKeywordDelimiter start="\[|" matchgroup=ocamlKeywordDelimiter end="|\]" contains=ALLBUT,@ocamlContained,ocamlArrErr
" Comments
@@ -196,10 +196,10 @@ syn keyword ocamlType array bool char exn float format format4
syn keyword ocamlType int int32 int64 lazy_t list nativeint option
syn keyword ocamlType bytes string unit
-syn match ocamlConstructor "(\s*)"
-syn match ocamlConstructor "\[\s*\]"
-syn match ocamlConstructor "\[|\s*>|]"
-syn match ocamlConstructor "\[<\s*>\]"
+syn match ocamlConstructorDelimiter "(\s*)"
+syn match ocamlConstructorDelimiter "\[\s*\]"
+syn match ocamlConstructorDelimiter "\[|\s*>|]"
+syn match ocamlConstructorDelimiter "\[<\s*>\]"
syn match ocamlConstructor "\u\(\w\|'\)*\>"
" Polymorphic variants
@@ -343,11 +343,13 @@ hi def link ocamlStructEncl ocamlModule
hi def link ocamlScript Include
hi def link ocamlConstructor Constant
+hi def link ocamlConstructorDelimiter ocamlConstructor
hi def link ocamlVal Keyword
hi def link ocamlModPreRHS Keyword
hi def link ocamlMPRestr2 Keyword
hi def link ocamlKeyword Keyword
+hi def link ocamlKeywordDelimiter ocamlKeyword
hi def link ocamlMethod Include
hi def link ocamlArrow Keyword
hi def link ocamlKeyChar Keyword
diff --git a/syntax/pgsql.vim b/syntax/pgsql.vim
index 70c3d38c..43218edb 100644
--- a/syntax/pgsql.vim
+++ b/syntax/pgsql.vim
@@ -9,7 +9,7 @@ endif
" License: Vim license (see `:help license`)
" Based on PostgreSQL 13.1
-" Automatically generated on 2021-01-13 at 20:54:21
+" Automatically generated on 2021-02-07 at 10:45:10
if exists("b:current_syntax")
finish
@@ -17,7 +17,11 @@ endif
syn case ignore
syn sync minlines=100
-syn iskeyword @,48-57,192-255,_
+if has('patch-7.4.1142')
+ syn iskeyword @,48-57,192-255,_
+else
+ setlocal iskeyword=@,48-57,192-255,_
+endif
syn match sqlIsKeyword /\<\h\w*\>/ contains=sqlStatement,sqlKeyword,sqlCatalog,sqlConstant,sqlSpecial,sqlOption,sqlErrorCode,sqlType,sqlTable,sqlView
syn match sqlIsFunction /\<\h\w*\ze(/ contains=sqlFunction,sqlKeyword,sqlType
@@ -723,7 +727,7 @@ syn keyword sqlConstant contained ltree_plpythonu pldbgapi plpython2u plpython3u
if index(get(g:, 'pgsql_disabled_extensions', []), 'refint') == -1
syn keyword sqlFunction contained check_foreign_key check_primary_key
endif " refint
-" Extension: postgis (v3.1.0)
+" Extension: postgis (v3.1.1)
if index(get(g:, 'pgsql_disabled_extensions', []), 'postgis') == -1
syn keyword sqlFunction contained addauth addgeometrycolumn box
syn keyword sqlFunction contained box2d box2d_in box2d_out box2df_in
@@ -1018,7 +1022,7 @@ endif " dict_xsyn
if index(get(g:, 'pgsql_disabled_extensions', []), 'bool_plperlu') == -1
syn keyword sqlFunction contained bool_to_plperlu plperlu_to_bool
endif " bool_plperlu
-" Extension: address_standardizer (v3.1.0)
+" Extension: address_standardizer (v3.1.1)
if index(get(g:, 'pgsql_disabled_extensions', []), 'address_standardizer') == -1
syn keyword sqlFunction contained parse_address standardize_address
syn keyword sqlType contained stdaddr
@@ -1077,7 +1081,7 @@ if index(get(g:, 'pgsql_disabled_extensions', []), 'cube') == -1
syn keyword sqlType contained cube
syn keyword sqlFunction contained g_cube_compress g_cube_decompress
endif " cube
-" Extension: postgis_tiger_geocoder (v3.1.0)
+" Extension: postgis_tiger_geocoder (v3.1.1)
if index(get(g:, 'pgsql_disabled_extensions', []), 'postgis_tiger_geocoder') == -1
syn keyword sqlFunction contained count_words create_census_base_tables
syn keyword sqlFunction contained cull_null diff_zip
@@ -1181,11 +1185,11 @@ endif " pgstattuple
if index(get(g:, 'pgsql_disabled_extensions', []), 'autoinc') == -1
syn keyword sqlFunction contained autoinc
endif " autoinc
-" Extension: address_standardizer_data_us (v3.1.0)
+" Extension: address_standardizer_data_us (v3.1.1)
if index(get(g:, 'pgsql_disabled_extensions', []), 'address_standardizer_data_us') == -1
syn keyword sqlTable contained us_gaz us_lex us_rules
endif " address_standardizer_data_us
-" Extension: postgis_topology (v3.1.0)
+" Extension: postgis_topology (v3.1.1)
if index(get(g:, 'pgsql_disabled_extensions', []), 'postgis_topology') == -1
syn keyword sqlFunction contained addedge addface addnode
syn keyword sqlFunction contained addtopogeometrycolumn addtosearchpath asgml
@@ -1218,7 +1222,7 @@ if index(get(g:, 'pgsql_disabled_extensions', []), 'postgis_topology') == -1
syn keyword sqlType contained topoelementarray topogeometry
syn keyword sqlType contained validatetopology_returntype
endif " postgis_topology
-" Extension: postgis_raster (v3.1.0)
+" Extension: postgis_raster (v3.1.1)
if index(get(g:, 'pgsql_disabled_extensions', []), 'postgis_raster') == -1
syn keyword sqlFunction contained addoverviewconstraints addrasterconstraints
syn keyword sqlFunction contained box3d bytea dropoverviewconstraints
@@ -1566,7 +1570,7 @@ if index(get(g:, 'pgsql_disabled_extensions', []), 'fuzzystrmatch') == -1
syn keyword sqlFunction contained levenshtein levenshtein_less_equal
syn keyword sqlFunction contained metaphone soundex text_soundex
endif " fuzzystrmatch
-" Extension: pgrouting (v3.1.1)
+" Extension: pgrouting (v3.1.3)
if index(get(g:, 'pgsql_disabled_extensions', []), 'pgrouting') == -1
syn keyword sqlFunction contained pgr_alphashape pgr_analyzegraph
syn keyword sqlFunction contained pgr_analyzeoneway pgr_articulationpoints pgr_astar
@@ -1610,7 +1614,7 @@ if index(get(g:, 'pgsql_disabled_extensions', []), 'pgcrypto') == -1
syn keyword sqlFunction contained pgp_sym_decrypt_bytea pgp_sym_encrypt
syn keyword sqlFunction contained pgp_sym_encrypt_bytea
endif " pgcrypto
-" Extension: postgis_sfcgal (v3.1.0)
+" Extension: postgis_sfcgal (v3.1.1)
if index(get(g:, 'pgsql_disabled_extensions', []), 'postgis_sfcgal') == -1
syn keyword sqlFunction contained postgis_sfcgal_noop
syn keyword sqlFunction contained postgis_sfcgal_scripts_installed postgis_sfcgal_version st_3darea
@@ -2025,8 +2029,17 @@ for pl in get(b:, 'pgsql_pl', get(g:, 'pgsql_pl', []))
endfor
" Folding
-execute "syn region sqlFold start='^\s*\zs\c\(create\|update\|alter\|select\|insert\|do\)\>' end=';$' transparent fold "
- \ .. "contains=sqlIsKeyword,sqlIsFunction,sqlComment,sqlIdentifier,sqlNumber,sqlOperator,sqlSpecial,sqlString,sqlTodo," .. s:plgroups
+if get(g:, 'pgsql_fold_functions_only', 0)
+
+ execute 'syn region sqlFold start=/^\s*\zs\c\%(create\s\+[a-z ]*\%(function\|procedure\)\|do\)\>/ end=/;$/ transparent fold '
+ \ .. "contains=sqlIsKeyword,sqlIsFunction,sqlComment,sqlIdentifier,sqlNumber,sqlOperator,sqlSpecial,sqlString,sqlTodo," .. s:plgroups
+
+else
+
+ execute 'syn region sqlFold start=/^\s*\zs\c\(create\|update\|alter\|select\|insert\|do\)\>/ end=/;$/ transparent fold '
+ \ .. "contains=sqlIsKeyword,sqlIsFunction,sqlComment,sqlIdentifier,sqlNumber,sqlOperator,sqlSpecial,sqlString,sqlTodo," .. s:plgroups
+
+endif
unlet s:plgroups
@@ -2058,4 +2071,3 @@ hi def link sqlCreateOperatorKeyword sqlKeyword
hi def link sqlCreateTextSearchKeyword sqlKeyword
let b:current_syntax = "sql"
-
diff --git a/syntax/puppet.vim b/syntax/puppet.vim
index 2b9b09c9..b246f753 100644
--- a/syntax/puppet.vim
+++ b/syntax/puppet.vim
@@ -32,9 +32,9 @@ syn match puppetOperator "+=\|-=\|==\|!=\|=\~\|!\~\|>=\|<=\|<-\|<\~\|=>\|+>\|->
" three character operators
syn match puppetOperator "<<|\||>>"
-syn region puppetBracketOperator matchgroup=puppetDelimiter start="\[\s*" end="\s*]" contains=ALLBUT,@puppetNotTop
-syn region puppetBraceOperator matchgroup=puppetDelimiter start="{\s*" end="\s*}" contains=ALLBUT,@puppetNotTop
-syn region puppetParenOperator matchgroup=puppetDelimiter start="(\s*" end="\s*)" contains=ALLBUT,@puppetNotTop
+syn region puppetBracketOperator matchgroup=puppetDelimiter start="\[\s*" end="\s*]" fold contains=ALLBUT,@puppetNotTop
+syn region puppetBraceOperator matchgroup=puppetDelimiter start="{\s*" end="\s*}" fold contains=ALLBUT,@puppetNotTop
+syn region puppetParenOperator matchgroup=puppetDelimiter start="(\s*" end="\s*)" fold contains=ALLBUT,@puppetNotTop
" Expression Substitution and Backslash Notation {{{1
syn match puppetStringEscape "\\\\\|\\[abefnrstv]\|\\\o\{1,3}\|\\x\x\{1,2}" contained display
diff --git a/syntax/rst.vim b/syntax/rst.vim
index 22b6ac59..f20eafeb 100644
--- a/syntax/rst.vim
+++ b/syntax/rst.vim
@@ -21,8 +21,9 @@ syn case ignore
syn match rstTransition /^[=`:.'"~^_*+#-]\{4,}\s*$/
syn cluster rstCruft contains=rstEmphasis,rstStrongEmphasis,
- \ rstInterpretedText,rstInlineLiteral,rstSubstitutionReference,
- \ rstInlineInternalTargets,rstFootnoteReference,rstHyperlinkReference
+ \ rstInterpretedTextOrHyperlinkReference,rstInlineLiteral,
+ \ rstSubstitutionReference, rstInlineInternalTargets,rstFootnoteReference,
+ \ rstHyperlinkReference
syn region rstLiteralBlock matchgroup=rstDelimiter
\ start='\(^\z(\s*\).*\)\@<=::\n\s*\n' skip='^\s*$' end='^\(\z1\s\+\)\@!'
@@ -88,7 +89,7 @@ syn region rstHyperlinkTarget matchgroup=rstDirective
execute 'syn region rstExDirective contained matchgroup=rstDirective' .
\ ' start=+' . s:ReferenceName . '::\_s+' .
\ ' skip=+^$+' .
- \ ' end=+^\s\@!+ contains=@rstCruft,rstLiteralBlock'
+ \ ' end=+^\s\@!+ contains=@rstCruft,rstLiteralBlock,rstExplicitMarkup'
execute 'syn match rstSubstitutionDefinition contained' .
\ ' /|.*|\_s\+/ nextgroup=@rstDirectives'
diff --git a/syntax/smt2.vim b/syntax/smt2.vim
index eb89e375..29cb4625 100644
--- a/syntax/smt2.vim
+++ b/syntax/smt2.vim
@@ -13,7 +13,7 @@ endif
let b:current_syntax = "smt2"
" Comments
-syntax match smt2Comment ";.*$"
+syntax match smt2Comment "\m\C;.*$"
" Commands
syntax keyword smt2Commands
@@ -64,10 +64,10 @@ syntax keyword smt2Commands
\ set-logic
\ set-option
\ simplify
-syntax match smt2Commands "!"
+syntax match smt2Commands "\m\C!"
" Operators
-syntax match smt2Operator "[=\|>\|<\|<=\|>=\|=>\|+\|\-\|*\|/\|!]"
+syntax match smt2Operator "\m\C[=\|>\|<\|<=\|>=\|=>\|+\|\-\|*\|/\|!]"
" Builtins
syntax keyword smt2Builtin
@@ -140,29 +140,29 @@ syntax keyword smt2Builtin
\ unsat
\ xor
\ zero_extend
-syntax match smt2Builtin "[\^\~]"
+syntax match smt2Builtin "\m\C[\^\~]"
" Identifier
-syntax match smt2Identifier "\<[a-z_][a-zA-Z0-9_\-\.']*\>"
+syntax match smt2Identifier "\m\C\<[a-z_][a-zA-Z0-9_\-\.']*\>"
" Types
-syntax match smt2Type "\<[A-Z][a-zA-Z0-9_\-\.']*\>"
+syntax match smt2Type "\m\C\<[A-Z][a-zA-Z0-9_\-\.']*\>"
" Strings
syntax region smt2String start=+"+ skip=+\\\\\|\\"+ end=+"+
-syntax match smt2Option "\<:[a-zA-Z0-9_\-\.']*\>"
+syntax match smt2Option "\m\C\<:[a-zA-Z0-9_\-\.']*\>"
" Constructors
-syntax match smt2Constructor "\<\$[a-zA-Z0-9_\-\.']*\>"
+syntax match smt2Constructor "\m\C\<\$[a-zA-Z0-9_\-\.']*\>"
" Number
-syntax match smt2Int "\<[0-9]\+\>"
-syntax match smt2Hex "\<[0#][xX][0-9a-fA-F]\+\>"
-syntax match smt2Binary "\<#b[01]\+\>"
-syntax match smt2Float "\<[0-9]\+\.[0-9]\+\([eE][\-+]\=[0-9]\+\)\=\>"
+syntax match smt2Int "\m\C\<[0-9]\+\>"
+syntax match smt2Hex "\m\C\<[0#][xX][0-9a-fA-F]\+\>"
+syntax match smt2Binary "\m\C\<#b[01]\+\>"
+syntax match smt2Float "\m\C\<[0-9]\+\.[0-9]\+\([eE][\-+]\=[0-9]\+\)\=\>"
" Delimiter
-syntax match smt2Delimiter "[()]"
+syntax match smt2Delimiter "\m\C[()]"
" Error
syntax keyword smt2Error error
diff --git a/syntax/tidy.vim b/syntax/tidy.vim
index 94f1a63a..55ff91b4 100644
--- a/syntax/tidy.vim
+++ b/syntax/tidy.vim
@@ -3,10 +3,11 @@ if polyglot#init#is_disabled(expand('<sfile>:p'), 'tidy', 'syntax/tidy.vim')
endif
" Vim syntax file
-" Language: HMTL Tidy configuration file (/etc/tidyrc ~/.tidyrc)
+" Language: HMTL Tidy Configuration
" Maintainer: Doug Kearns <dougkearns@gmail.com>
-" Last Change: 2016 Apr 24
+" Last Change: 2020 Sep 4
+" Preamble {{{1
if exists("b:current_syntax")
finish
endif
@@ -16,10 +17,15 @@ set cpo&vim
syn iskeyword @,48-57,-,_
+" Values {{{1
+syn match tidyWordSeparator contained ",\|\s" nextgroup=tidyWord skipwhite skipnl
+syn match tidyMuteIDSeparator contained ",\|\s" nextgroup=tidyMuteID skipwhite skipnl
+
syn case ignore
syn keyword tidyBoolean contained t[rue] f[alse] y[es] n[o] 1 0
syn keyword tidyAutoBoolean contained t[rue] f[alse] y[es] n[o] 1 0 auto
syn case match
+syn keyword tidyCustomTags contained no blocklevel empty inline pre
syn keyword tidyDoctype contained html5 omit auto strict loose transitional user
syn keyword tidyEncoding contained raw ascii latin0 latin1 utf8 iso2022 mac win1252 ibm858 utf16le utf16be utf16 big5 shiftjis
syn keyword tidyNewline contained LF CRLF CR
@@ -28,36 +34,148 @@ syn keyword tidyRepeat contained keep-first keep-last
syn keyword tidySorter contained alpha none
syn region tidyString contained start=+"+ skip=+\\\\\|\\"+ end=+"+ oneline
syn region tidyString contained start=+'+ skip=+\\\\\|\\'+ end=+'+ oneline
-syn match tidyTags contained "\<\w\+\(\s*,\s*\w\+\)*\>"
-
-syn keyword tidyBooleanOption add-xml-decl add-xml-pi add-xml-space
- \ anchor-as-name ascii-chars assume-xml-procins bare break-before-br
- \ clean coerce-endtags decorate-inferred-ul drop-empty-paras
- \ drop-empty-elements drop-font-tags drop-proprietary-attributes
- \ enclose-block-text enclose-text escape-cdata escape-scripts
- \ fix-backslash fix-bad-comments fix-uri force-output gdoc gnu-emacs
- \ hide-comments hide-endtags indent-attributes indent-cdata
- \ indent-with-tabs input-xml join-classes join-styles keep-time
- \ language literal-attributes logical-emphasis lower-literals markup
- \ merge-emphasis ncr numeric-entities omit-optional-tags output-html
- \ output-xhtml output-xml preserve-entities punctuation-wrap quiet
- \ quote-ampersand quote-marks quote-nbsp raw replace-color show-info
- \ show-warnings skip-nested split strict-tags-attributes tidy-mark
- \ uppercase-attributes uppercase-tags word-2000 wrap-asp
- \ wrap-attributes wrap-jste wrap-php wrap-script-literals
- \ wrap-sections write-back
+" Tag and attribute lists
+syn match tidyWord contained "\<\k\+\>:\@!" nextgroup=tidyWordSeparator skipwhite skipnl
+
+" Mute Message IDs {{{2
+syn keyword tidyMuteID ADDED_MISSING_CHARSET ANCHOR_DUPLICATED
+ \ ANCHOR_NOT_UNIQUE APOS_UNDEFINED APPLET_MISSING_ALT AREA_MISSING_ALT
+ \ ASCII_REQUIRES_DESCRIPTION ASSOCIATE_LABELS_EXPLICITLY
+ \ ASSOCIATE_LABELS_EXPLICITLY_FOR ASSOCIATE_LABELS_EXPLICITLY_ID
+ \ ATTRIBUTE_IS_NOT_ALLOWED ATTRIBUTE_VALUE_REPLACED
+ \ ATTR_VALUE_NOT_LCASE AUDIO_MISSING_TEXT_AIFF AUDIO_MISSING_TEXT_AU
+ \ AUDIO_MISSING_TEXT_RA AUDIO_MISSING_TEXT_RM AUDIO_MISSING_TEXT_SND
+ \ AUDIO_MISSING_TEXT_WAV BACKSLASH_IN_URI BAD_ATTRIBUTE_VALUE
+ \ BAD_ATTRIBUTE_VALUE_REPLACED BAD_CDATA_CONTENT BAD_SUMMARY_HTML5
+ \ BAD_SURROGATE_LEAD BAD_SURROGATE_PAIR BAD_SURROGATE_TAIL
+ \ CANT_BE_NESTED COERCE_TO_ENDTAG COLOR_CONTRAST_ACTIVE_LINK
+ \ COLOR_CONTRAST_LINK COLOR_CONTRAST_TEXT COLOR_CONTRAST_VISITED_LINK
+ \ CONTENT_AFTER_BODY CUSTOM_TAG_DETECTED DATA_TABLE_MISSING_HEADERS
+ \ DATA_TABLE_MISSING_HEADERS_COLUMN DATA_TABLE_MISSING_HEADERS_ROW
+ \ DATA_TABLE_REQUIRE_MARKUP_COLUMN_HEADERS
+ \ DATA_TABLE_REQUIRE_MARKUP_ROW_HEADERS DISCARDING_UNEXPECTED
+ \ DOCTYPE_AFTER_TAGS DOCTYPE_MISSING DUPLICATE_FRAMESET
+ \ ELEMENT_NOT_EMPTY ELEMENT_VERS_MISMATCH_ERROR
+ \ ELEMENT_VERS_MISMATCH_WARN ENCODING_MISMATCH
+ \ ENSURE_PROGRAMMATIC_OBJECTS_ACCESSIBLE_APPLET
+ \ ENSURE_PROGRAMMATIC_OBJECTS_ACCESSIBLE_EMBED
+ \ ENSURE_PROGRAMMATIC_OBJECTS_ACCESSIBLE_OBJECT
+ \ ENSURE_PROGRAMMATIC_OBJECTS_ACCESSIBLE_SCRIPT ESCAPED_ILLEGAL_URI
+ \ FILE_CANT_OPEN FILE_CANT_OPEN_CFG FILE_NOT_FILE FIXED_BACKSLASH
+ \ FOUND_STYLE_IN_BODY FRAME_MISSING_LONGDESC FRAME_MISSING_NOFRAMES
+ \ FRAME_MISSING_TITLE FRAME_SRC_INVALID FRAME_TITLE_INVALID_NULL
+ \ FRAME_TITLE_INVALID_SPACES HEADERS_IMPROPERLY_NESTED
+ \ HEADER_USED_FORMAT_TEXT ID_NAME_MISMATCH ILLEGAL_NESTING
+ \ ILLEGAL_URI_CODEPOINT ILLEGAL_URI_REFERENCE
+ \ IMAGE_MAP_SERVER_SIDE_REQUIRES_CONVERSION
+ \ IMG_ALT_SUSPICIOUS_FILENAME IMG_ALT_SUSPICIOUS_FILE_SIZE
+ \ IMG_ALT_SUSPICIOUS_PLACEHOLDER IMG_ALT_SUSPICIOUS_TOO_LONG
+ \ IMG_BUTTON_MISSING_ALT IMG_MAP_CLIENT_MISSING_TEXT_LINKS
+ \ IMG_MAP_SERVER_REQUIRES_TEXT_LINKS IMG_MISSING_ALT IMG_MISSING_DLINK
+ \ IMG_MISSING_LONGDESC IMG_MISSING_LONGDESC_DLINK
+ \ INFORMATION_NOT_CONVEYED_APPLET INFORMATION_NOT_CONVEYED_IMAGE
+ \ INFORMATION_NOT_CONVEYED_INPUT INFORMATION_NOT_CONVEYED_OBJECT
+ \ INFORMATION_NOT_CONVEYED_SCRIPT INSERTING_AUTO_ATTRIBUTE
+ \ INSERTING_TAG INVALID_ATTRIBUTE INVALID_NCR INVALID_SGML_CHARS
+ \ INVALID_UTF16 INVALID_UTF8 INVALID_XML_ID JOINING_ATTRIBUTE
+ \ LANGUAGE_INVALID LANGUAGE_NOT_IDENTIFIED
+ \ LAYOUT_TABLES_LINEARIZE_PROPERLY LAYOUT_TABLE_INVALID_MARKUP
+ \ LINK_TEXT_MISSING LINK_TEXT_NOT_MEANINGFUL
+ \ LINK_TEXT_NOT_MEANINGFUL_CLICK_HERE LINK_TEXT_TOO_LONG
+ \ LIST_USAGE_INVALID_LI LIST_USAGE_INVALID_OL LIST_USAGE_INVALID_UL
+ \ MALFORMED_COMMENT MALFORMED_COMMENT_DROPPING MALFORMED_COMMENT_EOS
+ \ MALFORMED_COMMENT_WARN MALFORMED_DOCTYPE METADATA_MISSING
+ \ METADATA_MISSING_REDIRECT_AUTOREFRESH MISMATCHED_ATTRIBUTE_ERROR
+ \ MISMATCHED_ATTRIBUTE_WARN MISSING_ATTRIBUTE MISSING_ATTR_VALUE
+ \ MISSING_DOCTYPE MISSING_ENDTAG_BEFORE MISSING_ENDTAG_FOR
+ \ MISSING_ENDTAG_OPTIONAL MISSING_IMAGEMAP MISSING_QUOTEMARK
+ \ MISSING_QUOTEMARK_OPEN MISSING_SEMICOLON MISSING_SEMICOLON_NCR
+ \ MISSING_STARTTAG MISSING_TITLE_ELEMENT MOVED_STYLE_TO_HEAD
+ \ MULTIMEDIA_REQUIRES_TEXT NESTED_EMPHASIS NESTED_QUOTATION
+ \ NEWLINE_IN_URI NEW_WINDOWS_REQUIRE_WARNING_BLANK
+ \ NEW_WINDOWS_REQUIRE_WARNING_NEW NOFRAMES_CONTENT
+ \ NOFRAMES_INVALID_CONTENT NOFRAMES_INVALID_LINK
+ \ NOFRAMES_INVALID_NO_VALUE NON_MATCHING_ENDTAG OBJECT_MISSING_ALT
+ \ OBSOLETE_ELEMENT OPTION_REMOVED OPTION_REMOVED_APPLIED
+ \ OPTION_REMOVED_UNAPPLIED POTENTIAL_HEADER_BOLD
+ \ POTENTIAL_HEADER_ITALICS POTENTIAL_HEADER_UNDERLINE
+ \ PREVIOUS_LOCATION PROGRAMMATIC_OBJECTS_REQUIRE_TESTING_APPLET
+ \ PROGRAMMATIC_OBJECTS_REQUIRE_TESTING_EMBED
+ \ PROGRAMMATIC_OBJECTS_REQUIRE_TESTING_OBJECT
+ \ PROGRAMMATIC_OBJECTS_REQUIRE_TESTING_SCRIPT PROPRIETARY_ATTRIBUTE
+ \ PROPRIETARY_ATTR_VALUE PROPRIETARY_ELEMENT REMOVED_HTML5
+ \ REMOVE_AUTO_REDIRECT REMOVE_AUTO_REFRESH REMOVE_BLINK_MARQUEE
+ \ REMOVE_FLICKER_ANIMATED_GIF REMOVE_FLICKER_APPLET
+ \ REMOVE_FLICKER_EMBED REMOVE_FLICKER_OBJECT REMOVE_FLICKER_SCRIPT
+ \ REPEATED_ATTRIBUTE REPLACE_DEPRECATED_HTML_APPLET
+ \ REPLACE_DEPRECATED_HTML_BASEFONT REPLACE_DEPRECATED_HTML_CENTER
+ \ REPLACE_DEPRECATED_HTML_DIR REPLACE_DEPRECATED_HTML_FONT
+ \ REPLACE_DEPRECATED_HTML_ISINDEX REPLACE_DEPRECATED_HTML_MENU
+ \ REPLACE_DEPRECATED_HTML_S REPLACE_DEPRECATED_HTML_STRIKE
+ \ REPLACE_DEPRECATED_HTML_U REPLACING_ELEMENT REPLACING_UNEX_ELEMENT
+ \ SCRIPT_MISSING_NOSCRIPT SCRIPT_NOT_KEYBOARD_ACCESSIBLE_ON_CLICK
+ \ SCRIPT_NOT_KEYBOARD_ACCESSIBLE_ON_MOUSE_DOWN
+ \ SCRIPT_NOT_KEYBOARD_ACCESSIBLE_ON_MOUSE_MOVE
+ \ SCRIPT_NOT_KEYBOARD_ACCESSIBLE_ON_MOUSE_OUT
+ \ SCRIPT_NOT_KEYBOARD_ACCESSIBLE_ON_MOUSE_OVER
+ \ SCRIPT_NOT_KEYBOARD_ACCESSIBLE_ON_MOUSE_UP SKIPOVER_ASCII_ART
+ \ SPACE_PRECEDING_XMLDECL STRING_ARGUMENT_BAD STRING_CONTENT_LOOKS
+ \ STRING_DOCTYPE_GIVEN STRING_MISSING_MALFORMED STRING_MUTING_TYPE
+ \ STRING_NO_SYSID STRING_UNKNOWN_OPTION
+ \ STYLESHEETS_REQUIRE_TESTING_LINK
+ \ STYLESHEETS_REQUIRE_TESTING_STYLE_ATTR
+ \ STYLESHEETS_REQUIRE_TESTING_STYLE_ELEMENT
+ \ STYLE_SHEET_CONTROL_PRESENTATION SUSPECTED_MISSING_QUOTE
+ \ TABLE_MAY_REQUIRE_HEADER_ABBR TABLE_MAY_REQUIRE_HEADER_ABBR_NULL
+ \ TABLE_MAY_REQUIRE_HEADER_ABBR_SPACES TABLE_MISSING_CAPTION
+ \ TABLE_MISSING_SUMMARY TABLE_SUMMARY_INVALID_NULL
+ \ TABLE_SUMMARY_INVALID_PLACEHOLDER TABLE_SUMMARY_INVALID_SPACES
+ \ TAG_NOT_ALLOWED_IN TEXT_EQUIVALENTS_REQUIRE_UPDATING_APPLET
+ \ TEXT_EQUIVALENTS_REQUIRE_UPDATING_OBJECT
+ \ TEXT_EQUIVALENTS_REQUIRE_UPDATING_SCRIPT TOO_MANY_ELEMENTS
+ \ TOO_MANY_ELEMENTS_IN TRIM_EMPTY_ELEMENT UNESCAPED_AMPERSAND
+ \ UNEXPECTED_ENDTAG UNEXPECTED_ENDTAG_ERR UNEXPECTED_ENDTAG_IN
+ \ UNEXPECTED_END_OF_FILE UNEXPECTED_END_OF_FILE_ATTR
+ \ UNEXPECTED_EQUALSIGN UNEXPECTED_GT UNEXPECTED_QUOTEMARK
+ \ UNKNOWN_ELEMENT UNKNOWN_ELEMENT_LOOKS_CUSTOM UNKNOWN_ENTITY
+ \ USING_BR_INPLACE_OF VENDOR_SPECIFIC_CHARS WHITE_IN_URI
+ \ XML_DECLARATION_DETECTED XML_ID_SYNTAX
+ \ contained nextgroup=tidyMuteIDSeparator skipwhite skipnl
+
+" Options {{{1
+syn keyword tidyCustomTagsOption custom-tags contained nextgroup=tidyCustomTagsDelimiter
+syn match tidyCustomTagsDelimiter ":" nextgroup=tidyCustomTags contained skipwhite
+
+syn keyword tidyBooleanOption add-meta-charset add-xml-decl
+ \ add-xml-pi add-xml-space anchor-as-name ascii-chars
+ \ assume-xml-procins bare break-before-br clean coerce-endtags
+ \ decorate-inferred-ul drop-empty-paras drop-empty-elements
+ \ drop-font-tags drop-proprietary-attributes enclose-block-text
+ \ enclose-text escape-cdata escape-scripts fix-backslash
+ \ fix-style-tags fix-uri force-output gdoc gnu-emacs hide-comments
+ \ hide-endtags indent-attributes indent-cdata indent-with-tabs
+ \ input-xml join-classes join-styles keep-tabs keep-time language
+ \ literal-attributes logical-emphasis lower-literals markup
+ \ merge-emphasis mute-id ncr numeric-entities omit-optional-tags
+ \ output-html output-xhtml output-xml preserve-entities
+ \ punctuation-wrap quiet quote-ampersand quote-marks quote-nbsp raw
+ \ replace-color show-filename show-info show-meta-change show-warnings
+ \ skip-nested split strict-tags-attributes tidy-mark
+ \ uppercase-attributes uppercase-tags warn-proprietary-attributes
+ \ word-2000 wrap-asp wrap-attributes wrap-jste wrap-php
+ \ wrap-script-literals wrap-sections write-back
\ contained nextgroup=tidyBooleanDelimiter
syn match tidyBooleanDelimiter ":" nextgroup=tidyBoolean contained skipwhite
-syn keyword tidyAutoBooleanOption indent merge-divs merge-spans output-bom show-body-only vertical-space contained nextgroup=tidyAutoBooleanDelimiter
+syn keyword tidyAutoBooleanOption fix-bad-comments indent merge-divs merge-spans output-bom show-body-only vertical-space contained nextgroup=tidyAutoBooleanDelimiter
syn match tidyAutoBooleanDelimiter ":" nextgroup=tidyAutoBoolean contained skipwhite
syn keyword tidyCSSSelectorOption css-prefix contained nextgroup=tidyCSSSelectorDelimiter
syn match tidyCSSSelectorDelimiter ":" nextgroup=tidyCSSSelector contained skipwhite
syn keyword tidyDoctypeOption doctype contained nextgroup=tidyDoctypeDelimiter
-syn match tidyDoctypeDelimiter ":" nextgroup=tidyDoctype contained skipwhite
+syn match tidyDoctypeDelimiter ":" nextgroup=tidyDoctype,tidyString contained skipwhite
syn keyword tidyEncodingOption char-encoding input-encoding output-encoding contained nextgroup=tidyEncodingDelimiter
syn match tidyEncodingDelimiter ":" nextgroup=tidyEncoding contained skipwhite
@@ -71,8 +189,11 @@ syn match tidyNameDelimiter ":" nextgroup=tidyName contained skipwhite
syn keyword tidyNewlineOption newline contained nextgroup=tidyNewlineDelimiter
syn match tidyNewlineDelimiter ":" nextgroup=tidyNewline contained skipwhite
+syn keyword tidyAttributesOption priority-attributes contained nextgroup=tidyAttributesDelimiter
+syn match tidyAttributesDelimiter ":" nextgroup=tidyWord contained skipwhite
+
syn keyword tidyTagsOption new-blocklevel-tags new-empty-tags new-inline-tags new-pre-tags contained nextgroup=tidyTagsDelimiter
-syn match tidyTagsDelimiter ":" nextgroup=tidyTags contained skipwhite
+syn match tidyTagsDelimiter ":" nextgroup=tidyWord contained skipwhite
syn keyword tidyRepeatOption repeated-attributes contained nextgroup=tidyRepeatDelimiter
syn match tidyRepeatDelimiter ":" nextgroup=tidyRepeat contained skipwhite
@@ -83,57 +204,77 @@ syn match tidySorterDelimiter ":" nextgroup=tidySorter contained skipwhite
syn keyword tidyStringOption alt-text error-file gnu-emacs-file output-file contained nextgroup=tidyStringDelimiter
syn match tidyStringDelimiter ":" nextgroup=tidyString contained skipwhite
+syn keyword tidyMuteOption mute contained nextgroup=tidyMuteDelimiter
+syn match tidyMuteDelimiter ":" nextgroup=tidyMuteID contained skipwhite
+
syn cluster tidyOptions contains=tidy.*Option
+" Option line anchor {{{1
syn match tidyStart "^" nextgroup=@tidyOptions
+" Long standing bug - option lines (except the first) with leading whitespace
+" are silently ignored.
+syn match tidyErrorStart '^\s\+\ze\S'
+" Comments {{{1
syn match tidyComment "^\s*//.*$" contains=tidyTodo
syn match tidyComment "^\s*#.*$" contains=tidyTodo
syn keyword tidyTodo TODO NOTE FIXME XXX contained
+" Default highlighting {{{1
+hi def link tidyAttributesOption Identifier
hi def link tidyAutoBooleanOption Identifier
hi def link tidyBooleanOption Identifier
hi def link tidyCSSSelectorOption Identifier
+hi def link tidyCustomTagsOption Identifier
hi def link tidyDoctypeOption Identifier
hi def link tidyEncodingOption Identifier
hi def link tidyIntegerOption Identifier
+hi def link tidyMuteOption Identifier
hi def link tidyNameOption Identifier
hi def link tidyNewlineOption Identifier
-hi def link tidyTagsOption Identifier
hi def link tidyRepeatOption Identifier
hi def link tidySorterOption Identifier
hi def link tidyStringOption Identifier
+hi def link tidyTagsOption Identifier
+hi def link tidyAttributesDelimiter Special
hi def link tidyAutoBooleanDelimiter Special
hi def link tidyBooleanDelimiter Special
hi def link tidyCSSSelectorDelimiter Special
+hi def link tidyCustomTagsDelimiter Special
hi def link tidyDoctypeDelimiter Special
hi def link tidyEncodingDelimiter Special
hi def link tidyIntegerDelimiter Special
+hi def link tidyMuteDelimiter Special
hi def link tidyNameDelimiter Special
hi def link tidyNewlineDelimiter Special
-hi def link tidyTagsDelimiter Special
hi def link tidyRepeatDelimiter Special
hi def link tidySorterDelimiter Special
hi def link tidyStringDelimiter Special
+hi def link tidyTagsDelimiter Special
hi def link tidyAutoBoolean Boolean
hi def link tidyBoolean Boolean
+hi def link tidyCustomTags Constant
hi def link tidyDoctype Constant
hi def link tidyEncoding Constant
+hi def link tidyMuteID Constant
hi def link tidyNewline Constant
-hi def link tidyTags Constant
hi def link tidyNumber Number
hi def link tidyRepeat Constant
hi def link tidySorter Constant
hi def link tidyString String
+hi def link tidyWord Constant
hi def link tidyComment Comment
hi def link tidyTodo Todo
+hi def link tidyErrorStart Error
+
+" Postscript {{{1
let b:current_syntax = "tidy"
let &cpo = s:cpo_save
unlet s:cpo_save
-" vim: ts=8
+" vim: ts=8 fdm=marker
diff --git a/syntax/zig.vim b/syntax/zig.vim
index 9b4854ed..998d750a 100644
--- a/syntax/zig.vim
+++ b/syntax/zig.vim
@@ -10,99 +10,283 @@ endif
if exists("b:current_syntax")
finish
endif
-let b:current_syntax = "zig"
-syn keyword zigStorage const var extern packed export pub noalias inline noinline comptime callconv volatile allowzero align linksection threadlocal anytype
-syn keyword zigStructure struct enum union error opaque
-syn keyword zigStatement break return continue asm defer errdefer unreachable try catch async nosuspend await suspend resume
-syn keyword zigConditional if else switch and or orelse
-syn keyword zigRepeat while for
-
-syn keyword zigConstant null undefined
-syn keyword zigKeyword fn usingnamespace test
-syn keyword zigType bool f16 f32 f64 f128 void noreturn type anyerror anyframe
-syn keyword zigType i0 u0 isize usize comptime_int comptime_float
-syn keyword zigType c_short c_ushort c_int c_uint c_long c_ulong c_longlong c_ulonglong c_longdouble c_void
-
-syn keyword zigBoolean true false
-
-syn match zigType "\v<[iu][1-9]\d*>"
-
-syn match zigOperator display "\V\[-+/*=^&?|!><%~]"
-syn match zigArrowCharacter display "\V->"
-
-syn match zigBuiltinFn "\v\@(addWithOverflow|as|atomicLoad|atomicStore|bitCast|breakpoint)>"
-syn match zigBuiltinFn "\v\@(alignCast|alignOf|cDefine|cImport|cInclude)>"
-syn match zigBuiltinFn "\v\@(cUndef|canImplicitCast|clz|cmpxchgWeak|cmpxchgStrong|compileError)>"
-syn match zigBuiltinFn "\v\@(compileLog|ctz|popCount|divExact|divFloor|divTrunc)>"
-syn match zigBuiltinFn "\v\@(embedFile|export|tagName|TagType|errorName|call)>"
-syn match zigBuiltinFn "\v\@(errorReturnTrace|fence|fieldParentPtr|field|unionInit)>"
-syn match zigBuiltinFn "\v\@(frameAddress|import|newStackCall|asyncCall|intToPtr)>"
-syn match zigBuiltinFn "\v\@(memcpy|memset|mod|mulWithOverflow|splat|src)>"
-syn match zigBuiltinFn "\v\@(bitOffsetOf|byteOffsetOf|OpaqueType|panic|ptrCast)>"
-syn match zigBuiltinFn "\v\@(ptrToInt|rem|returnAddress|setCold|Type|shuffle|reduce)>"
-syn match zigBuiltinFn "\v\@(setRuntimeSafety|setEvalBranchQuota|setFloatMode)>"
-syn match zigBuiltinFn "\v\@(setGlobalLinkage|setGlobalSection|shlExact|This|hasDecl|hasField)>"
-syn match zigBuiltinFn "\v\@(shlWithOverflow|shrExact|sizeOf|bitSizeOf|sqrt|byteSwap|subWithOverflow|intCast|floatCast|intToFloat|floatToInt|boolToInt|errSetCast)>"
-syn match zigBuiltinFn "\v\@(truncate|typeInfo|typeName|TypeOf|atomicRmw|bytesToSlice|sliceToBytes)>"
-syn match zigBuiltinFn "\v\@(intToError|errorToInt|intToEnum|enumToInt|setAlignStack|frame|Frame|frameSize|bitReverse|Vector)>"
-syn match zigBuiltinFn "\v\@(sin|cos|exp|exp2|log|log2|log10|fabs|floor|ceil|trunc|round)>"
+let s:cpo_save = &cpo
+set cpo&vim
+
+let s:zig_syntax_keywords = {
+ \ 'zigBoolean': ["true"
+ \ , "false"]
+ \ , 'zigNull': ["null"]
+ \ , 'zigType': ["bool"
+ \ , "f16"
+ \ , "f32"
+ \ , "f64"
+ \ , "f128"
+ \ , "void"
+ \ , "type"
+ \ , "anytype"
+ \ , "anyerror"
+ \ , "anyframe"
+ \ , "volatile"
+ \ , "linksection"
+ \ , "noreturn"
+ \ , "allowzero"
+ \ , "i0"
+ \ , "u0"
+ \ , "isize"
+ \ , "usize"
+ \ , "comptime_int"
+ \ , "comptime_float"
+ \ , "c_short"
+ \ , "c_ushort"
+ \ , "c_int"
+ \ , "c_uint"
+ \ , "c_long"
+ \ , "c_ulong"
+ \ , "c_longlong"
+ \ , "c_ulonglong"
+ \ , "c_longdouble"
+ \ , "c_void"]
+ \ , 'zigConstant': ["undefined"
+ \ , "unreachable"]
+ \ , 'zigConditional': ["if"
+ \ , "else"
+ \ , "switch"]
+ \ , 'zigRepeat': ["while"
+ \ , "for"]
+ \ , 'zigComparatorWord': ["and"
+ \ , "or"
+ \ , "orelse"]
+ \ , 'zigStructure': ["struct"
+ \ , "enum"
+ \ , "union"
+ \ , "error"
+ \ , "packed"
+ \ , "opaque"]
+ \ , 'zigException': ["error"]
+ \ , 'zigVarDecl': ["var"
+ \ , "const"
+ \ , "comptime"
+ \ , "threadlocal"]
+ \ , 'zigDummyVariable': ["_"]
+ \ , 'zigKeyword': ["fn"
+ \ , "try"
+ \ , "test"
+ \ , "pub"
+ \ , "usingnamespace"]
+ \ , 'zigExecution': ["return"
+ \ , "break"
+ \ , "continue"]
+ \ , 'zigMacro': ["defer"
+ \ , "errdefer"
+ \ , "async"
+ \ , "nosuspend"
+ \ , "await"
+ \ , "suspend"
+ \ , "resume"
+ \ , "export"
+ \ , "extern"]
+ \ , 'zigPreProc': ["catch"
+ \ , "inline"
+ \ , "noinline"
+ \ , "asm"
+ \ , "callconv"
+ \ , "noalias"]
+ \ , 'zigBuiltinFn': ["align"
+ \ , "@add"
+ \ , "@WithOverflow"
+ \ , "@as"
+ \ , "@atomicLoad"
+ \ , "@atomicStore"
+ \ , "@bitCast"
+ \ , "@breakpoint"
+ \ , "@alignCast"
+ \ , "@alignOf"
+ \ , "@cDefine"
+ \ , "@cImport"
+ \ , "@cInclude"
+ \ , "@cUndef"
+ \ , "@canImplicitCast"
+ \ , "@clz"
+ \ , "@cmpxchgWeak"
+ \ , "@cmpxchgStrong"
+ \ , "@compileError"
+ \ , "@compileLog"
+ \ , "@ctz"
+ \ , "@popCount"
+ \ , "@divExact"
+ \ , "@divFloor"
+ \ , "@divTrunc"
+ \ , "@embedFile"
+ \ , "@export"
+ \ , "@tagName"
+ \ , "@TagType"
+ \ , "@errorName"
+ \ , "@call"
+ \ , "@errorReturnTrace"
+ \ , "@fence"
+ \ , "@fieldParentPtr"
+ \ , "@field"
+ \ , "@unionInit"
+ \ , "@frameAddress"
+ \ , "@import"
+ \ , "@newStackCall"
+ \ , "@asyncCall"
+ \ , "@intToPtr"
+ \ , "@memcpy"
+ \ , "@memset"
+ \ , "@mod"
+ \ , "@mulWithOverflow"
+ \ , "@splat"
+ \ , "@src"
+ \ , "@bitOffsetOf"
+ \ , "@byteOffsetOf"
+ \ , "@OpaqueType"
+ \ , "@panic"
+ \ , "@ptrCast"
+ \ , "@ptrToInt"
+ \ , "@rem"
+ \ , "@returnAddress"
+ \ , "@setCold"
+ \ , "@Type"
+ \ , "@shuffle"
+ \ , "@reduce"
+ \ , "@setRuntimeSafety"
+ \ , "@setEvalBranchQuota"
+ \ , "@setFloatMode"
+ \ , "@setGlobalLinkage"
+ \ , "@setGlobalSection"
+ \ , "@shlExact"
+ \ , "@This"
+ \ , "@hasDecl"
+ \ , "@hasField"
+ \ , "@shlWithOverflow"
+ \ , "@shrExact"
+ \ , "@sizeOf"
+ \ , "@bitSizeOf"
+ \ , "@sqrt"
+ \ , "@byteSwap"
+ \ , "@subWithOverflow"
+ \ , "@intCast"
+ \ , "@floatCast"
+ \ , "@intToFloat"
+ \ , "@floatToInt"
+ \ , "@boolToInt"
+ \ , "@errSetCast"
+ \ , "@truncate"
+ \ , "@typeInfo"
+ \ , "@typeName"
+ \ , "@TypeOf"
+ \ , "@atomicRmw"
+ \ , "@bytesToSlice"
+ \ , "@sliceToBytes"
+ \ , "@intToError"
+ \ , "@errorToInt"
+ \ , "@intToEnum"
+ \ , "@enumToInt"
+ \ , "@setAlignStack"
+ \ , "@frame"
+ \ , "@Frame"
+ \ , "@frameSize"
+ \ , "@bitReverse"
+ \ , "@Vector"
+ \ , "@sin"
+ \ , "@cos"
+ \ , "@exp"
+ \ , "@exp2"
+ \ , "@log"
+ \ , "@log2"
+ \ , "@log10"
+ \ , "@fabs"
+ \ , "@floor"
+ \ , "@ceil"
+ \ , "@trunc"
+ \ , "@round"]
+ \ }
+
+function! s:syntax_keyword(dict)
+ for key in keys(a:dict)
+ execute 'syntax keyword' key join(a:dict[key], ' ')
+ endfor
+endfunction
+
+call s:syntax_keyword(s:zig_syntax_keywords)
+
+syntax match zigType "\v<[iu][1-9]\d*>"
+syntax match zigOperator display "\V\[-+/*=^&?|!><%~]"
+syntax match zigArrowCharacter display "\V->"
" 12_34 (. but not ..)? (12_34)? (exponent 12_34)?
-syn match zigDecNumber display "\v<\d%(_?\d)*%(\.\.@!)?%(\d%(_?\d)*)?%([eE][+-]?\d%(_?\d)*)?"
-syn match zigHexNumber display "\v<0x\x%(_?\x)*%(\.\.@!)?%(\x%(_?\x)*)?%([pP][+-]?\d%(_?\d)*)?"
-syn match zigOctNumber display "\v<0o\o%(_?\o)*"
-syn match zigBinNumber display "\v<0b[01]%(_?[01])*"
-
-syn match zigCharacterInvalid display contained /b\?'\zs[\n\r\t']\ze'/
-syn match zigCharacterInvalidUnicode display contained /b'\zs[^[:cntrl:][:graph:][:alnum:][:space:]]\ze'/
-syn match zigCharacter /b'\([^\\]\|\\\(.\|x\x\{2}\)\)'/ contains=zigEscape,zigEscapeError,zigCharacterInvalid,zigCharacterInvalidUnicode
-syn match zigCharacter /'\([^\\]\|\\\(.\|x\x\{2}\|u\x\{4}\|U\x\{6}\)\)'/ contains=zigEscape,zigEscapeUnicode,zigEscapeError,zigCharacterInvalid
-
-syn region zigBlock start="{" end="}" transparent fold
-
-syn region zigCommentLine start="//" end="$" contains=zigTodo,@Spell
-syn region zigCommentLineDoc start="//[/!]/\@!" end="$" contains=zigTodo,@Spell
-
-" TODO: match only the first '\\' within the zigMultilineString as zigMultilineStringPrefix
-syn match zigMultilineStringPrefix display contained /c\?\\\\/
-syn region zigMultilineString start="c\?\\\\" end="$" contains=zigMultilineStringPrefix
-
-syn keyword zigTodo contained TODO
-
-syn match zigEscapeError display contained /\\./
-syn match zigEscape display contained /\\\([nrt\\'"]\|x\x\{2}\)/
-syn match zigEscapeUnicode display contained /\\\(u\x\{4}\|U\x\{6}\)/
-syn region zigString start=+c\?"+ skip=+\\\\\|\\"+ end=+"+ oneline contains=zigEscape,zigEscapeUnicode,zigEscapeError,@Spell
-
-hi def link zigDecNumber zigNumber
-hi def link zigHexNumber zigNumber
-hi def link zigOctNumber zigNumber
-hi def link zigBinNumber zigNumber
-
-hi def link zigBuiltinFn Function
-hi def link zigKeyword Keyword
-hi def link zigType Type
-hi def link zigCommentLine Comment
-hi def link zigCommentLineDoc SpecialComment
-hi def link zigTodo Todo
-hi def link zigString String
-hi def link zigMultilineString String
-hi def link zigMultilineStringContent String
-hi def link zigMultilineStringPrefix Comment
-hi def link zigCharacterInvalid Error
-hi def link zigCharacterInvalidUnicode zigCharacterInvalid
-hi def link zigCharacter Character
-hi def link zigEscape Special
-hi def link zigEscapeUnicode zigEscape
-hi def link zigEscapeError Error
-hi def link zigBoolean Boolean
-hi def link zigConstant Constant
-hi def link zigNumber Number
-hi def link zigArrowCharacter zigOperator
-hi def link zigOperator Operator
-hi def link zigStorage StorageClass
-hi def link zigStructure Structure
-hi def link zigStatement Statement
-hi def link zigConditional Conditional
-hi def link zigRepeat Repeat
+syntax match zigDecNumber display "\v<\d%(_?\d)*%(\.\.@!)?%(\d%(_?\d)*)?%([eE][+-]?\d%(_?\d)*)?"
+syntax match zigHexNumber display "\v<0x\x%(_?\x)*%(\.\.@!)?%(\x%(_?\x)*)?%([pP][+-]?\d%(_?\d)*)?"
+syntax match zigOctNumber display "\v<0o\o%(_?\o)*"
+syntax match zigBinNumber display "\v<0b[01]%(_?[01])*"
+
+syntax match zigCharacterInvalid display contained /b\?'\zs[\n\r\t']\ze'/
+syntax match zigCharacterInvalidUnicode display contained /b'\zs[^[:cntrl:][:graph:][:alnum:][:space:]]\ze'/
+syntax match zigCharacter /b'\([^\\]\|\\\(.\|x\x\{2}\)\)'/ contains=zigEscape,zigEscapeError,zigCharacterInvalid,zigCharacterInvalidUnicode
+syntax match zigCharacter /'\([^\\]\|\\\(.\|x\x\{2}\|u\x\{4}\|U\x\{6}\)\)'/ contains=zigEscape,zigEscapeUnicode,zigEscapeError,zigCharacterInvalid
+
+syntax region zigBlock start="{" end="}" transparent fold
+
+syntax region zigCommentLine start="//" end="$" contains=zigTodo,@Spell
+syntax region zigCommentLineDoc start="//[/!]/\@!" end="$" contains=zigTodo,@Spell
+
+syntax match zigMultilineStringPrefix /c\?\\\\/ contained containedin=zigMultilineString
+syntax region zigMultilineString matchgroup=zigMultilineStringDelimiter start="c\?\\\\" end="$" contains=zigMultilineStringPrefix display
+
+syntax keyword zigTodo contained TODO
+
+syntax region zigString matchgroup=zigStringDelimiter start=+c\?"+ skip=+\\\\\|\\"+ end=+"+ oneline contains=zigEscape,zigEscapeUnicode,zigEscapeError,@Spell
+syntax match zigEscapeError display contained /\\./
+syntax match zigEscape display contained /\\\([nrt\\'"]\|x\x\{2}\)/
+syntax match zigEscapeUnicode display contained /\\\(u\x\{4}\|U\x\{6}\)/
+
+highlight default link zigDecNumber zigNumber
+highlight default link zigHexNumber zigNumber
+highlight default link zigOctNumber zigNumber
+highlight default link zigBinNumber zigNumber
+
+highlight default link zigBuiltinFn Statement
+highlight default link zigKeyword Keyword
+highlight default link zigType Type
+highlight default link zigCommentLine Comment
+highlight default link zigCommentLineDoc Comment
+highlight default link zigDummyVariable Comment
+highlight default link zigTodo Todo
+highlight default link zigString String
+highlight default link zigStringDelimiter Delimiter
+highlight default link zigMultilineString String
+highlight default link zigMultilineStringContent String
+highlight default link zigMultilineStringPrefix String
+highlight default link zigMultilineStringDelimiter Ignore
+highlight default link zigCharacterInvalid Error
+highlight default link zigCharacterInvalidUnicode zigCharacterInvalid
+highlight default link zigCharacter Character
+highlight default link zigEscape Special
+highlight default link zigEscapeUnicode zigEscape
+highlight default link zigEscapeError Error
+highlight default link zigBoolean Boolean
+highlight default link zigNull Boolean
+highlight default link zigConstant Constant
+highlight default link zigNumber Number
+highlight default link zigArrowCharacter zigOperator
+highlight default link zigOperator Operator
+highlight default link zigStructure Structure
+highlight default link zigExecution Special
+highlight default link zigMacro Macro
+highlight default link zigConditional Conditional
+highlight default link zigComparatorWord Operator
+highlight default link zigRepeat Repeat
+highlight default link zigSpecial Special
+highlight default link zigVarDecl Function
+highlight default link zigPreProc PreProc
+highlight default link zigException Exception
+
+delfunction s:syntax_keyword
+
+let b:current_syntax = "zig"
+
+let &cpo = s:cpo_save
+unlet! s:cpo_save