diff options
Diffstat (limited to 'runtime/syntax')
65 files changed, 4776 insertions, 1754 deletions
diff --git a/runtime/syntax/apache.vim b/runtime/syntax/apache.vim index dd18aa6570..e73045e4c8 100644 --- a/runtime/syntax/apache.vim +++ b/runtime/syntax/apache.vim @@ -3,7 +3,7 @@ " Maintainer: David Necas (Yeti) <yeti@physics.muni.cz> " License: This file can be redistribued and/or modified under the same terms " as Vim itself. -" Last Change: 2020 Oct 07 +" Last Change: 2022 Apr 25 " Notes: Last synced with apache-2.2.3, version 1.x is no longer supported " TODO: see particular FIXME's scattered through the file " make it really linewise? @@ -46,6 +46,7 @@ syn keyword apacheMethodOption GET POST PUT DELETE CONNECT OPTIONS TRACE PATCH P syn keyword apacheMethodOption BASELINE-CONTROL CHECKIN CHECKOUT LABEL MERGE MKACTIVITY MKWORKSPACE REPORT UNCHECKOUT UPDATE VERSION-CONTROL contained syn case ignore syn match apacheSection "<\/\=\(Directory\|DirectoryMatch\|Files\|FilesMatch\|IfModule\|IfDefine\|Location\|LocationMatch\|VirtualHost\)[^>]*>" contains=apacheAnything +syn match apacheSection "<\/\=\(RequireAll\|RequireAny\|RequireNone\)>" contains=apacheAnything syn match apacheLimitSection "<\/\=\(Limit\|LimitExcept\)[^>]*>" contains=apacheLimitSectionKeyword,apacheMethodOption,apacheError syn keyword apacheLimitSectionKeyword Limit LimitExcept contained syn match apacheAuthType "AuthType\s.*$" contains=apacheAuthTypeValue diff --git a/runtime/syntax/basic.vim b/runtime/syntax/basic.vim index ad9450b3b8..b6bf23a3ed 100644 --- a/runtime/syntax/basic.vim +++ b/runtime/syntax/basic.vim @@ -1,14 +1,15 @@ " Vim syntax file -" Language: BASIC +" Language: BASIC (QuickBASIC 4.5) " Maintainer: Doug Kearns <dougkearns@gmail.com> " Previous Maintainer: Allan Kelly <allan@fruitloaf.co.uk> " Contributors: Thilo Six -" Last Change: 2015 Jan 10 +" Last Change: 2022 Jun 22 " 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. +" +" Second version attempts to match Microsoft QuickBASIC 4.5 while keeping FreeBASIC +" (-lang qb) and QB64 (excluding extensions) in mind. -- DJK " Prelude {{{1 if exists("b:current_syntax") @@ -18,154 +19,357 @@ endif let s:cpo_save = &cpo set cpo&vim +syn iskeyword @,48-57,.,!,#,%,&,$ +syn case ignore + +" Whitespace Errors {{{1 +if exists("basic_space_errors") + if !exists("basic_no_trail_space_error") + syn match basicSpaceError display excludenl "\s\+$" + endif + if !exists("basic_no_tab_space_error") + syn match basicSpaceError display " \+\t"me=e-1 + endif +endif + +" Comment Errors {{{1 +if !exists("basic_no_comment_errors") + syn match basicCommentError "\<REM\>.*" +endif + +" Not Top Cluster {{{1 +syn cluster basicNotTop contains=@basicLineIdentifier,basicDataString,basicDataSeparator,basicTodo + +" Statements {{{1 + +syn cluster basicStatements contains=basicStatement,basicDataStatement,basicMetaRemStatement,basicPutStatement,basicRemStatement + +let s:statements =<< trim EOL " {{{2 + beep + bload + bsave + call + calls + case + chain + chdir + circle + clear + close + cls + color + com + common + const + declare + def + def\s\+seg + defdbl + defint + deflng + defsng + defstr + dim + do + draw + elseif + end + end\s\+\%(def\|function\|if\|select\|sub\|type\) + environ + erase + error + exit\s\+\%(def\|do\|for\|function\|sub\) + field + files + for + function + get + gosub + goto + if + input + ioctl + key + kill + let + line + line\s\+input + locate + lock + loop + lprint + lset + mkdir + name + next + on + on\s\+error + on\s\+uevent + open + open\s\+com + option + out + paint + palette + palette\s\+using + pcopy + pen + pmap + poke + preset + print + pset + randomize + read + redim + reset + restore + resume + return + rmdir + rset + run + select\s\+case + shared + shell + sleep + sound + static + stop + strig + sub + swap + system + troff + tron + type + uevent + unlock + using + view + view\s\+print + wait + wend + while + width + window + write +EOL +" }}} + +for s in s:statements + exe 'syn match basicStatement "\<' .. s .. '\>" contained' +endfor + +syn match basicStatement "\<\%(then\|else\)\>" nextgroup=@basicStatements skipwhite + +" DATA Statement +syn match basicDataSeparator "," contained +syn region basicDataStatement matchgroup=basicStatement start="\<data\>" matchgroup=basicStatementSeparator end=":\|$" contained contains=basicDataSeparator,basicDataString,basicNumber,basicFloat,basicString + +if !exists("basic_no_data_fold") + syn region basicMultilineData start="^\s*\<data\>.*\n\%(^\s*\<data\>\)\@=" end="^\s*\<data\>.*\n\%(^\s*\<data\>\)\@!" contains=basicDataStatement transparent fold keepend +endif + +" PUT File I/O and Graphics statements - needs special handling for graphics +" action verbs +syn match basicPutAction "\<\%(pset\|preset\|and\|or\|xor\)\>" contained +syn region basicPutStatement matchgroup=basicStatement start="\<put\>" matchgroup=basicStatementSeparator end=":\|$" contained contains=basicKeyword,basicPutAction,basicFilenumber + " 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 -syn keyword basicStatement CIRCLE circle Circle CLEAR clear Clear -syn keyword basicStatement CLOSE close Close CLS cls Cls COLOR color Color -syn keyword basicStatement COM com Com COMMON common Common -syn keyword basicStatement CONST const Const DATA data Data -syn keyword basicStatement DECLARE declare Declare DEF def Def -syn keyword basicStatement DEFDBL defdbl Defdbl DEFINT defint Defint -syn keyword basicStatement DEFLNG deflng Deflng DEFSNG defsng Defsng -syn keyword basicStatement DEFSTR defstr Defstr DIM dim Dim -syn keyword basicStatement DO do Do LOOP loop Loop -syn keyword basicStatement DRAW draw Draw END end End -syn keyword basicStatement ENVIRON environ Environ ERASE erase Erase -syn keyword basicStatement ERROR error Error EXIT exit Exit -syn keyword basicStatement FIELD field Field FILES files Files -syn keyword basicStatement FOR for For NEXT next Next -syn keyword basicStatement FUNCTION function Function GET get Get -syn keyword basicStatement GOSUB gosub Gosub GOTO goto Goto -syn keyword basicStatement IF if If THEN then Then ELSE else Else -syn keyword basicStatement INPUT input Input INPUT# input# Input# -syn keyword basicStatement IOCTL ioctl Ioctl KEY key Key -syn keyword basicStatement KILL kill Kill LET let Let -syn keyword basicStatement LINE line Line LOCATE locate Locate -syn keyword basicStatement LOCK lock Lock UNLOCK unlock Unlock -syn keyword basicStatement LPRINT lprint Lprint USING using Using -syn keyword basicStatement LSET lset Lset MKDIR mkdir Mkdir -syn keyword basicStatement NAME name Name ON on On -syn keyword basicStatement ERROR error Error OPEN open Open -syn keyword basicStatement OPTION option Option BASE base Base -syn keyword basicStatement OUT out Out PAINT paint Paint -syn keyword basicStatement PALETTE palette Palette PCOPY pcopy Pcopy -syn keyword basicStatement PEN pen Pen PLAY play Play -syn keyword basicStatement PMAP pmap Pmap POKE poke Poke -syn keyword basicStatement PRESET preset Preset PRINT print Print -syn keyword basicStatement PRINT# print# Print# USING using Using -syn keyword basicStatement PSET pset Pset PUT put Put -syn keyword basicStatement RANDOMIZE randomize Randomize READ read Read -syn keyword basicStatement REDIM redim Redim RESET reset Reset -syn keyword basicStatement RESTORE restore Restore RESUME resume Resume -syn keyword basicStatement RETURN return Return RMDIR rmdir Rmdir -syn keyword basicStatement RSET rset Rset RUN run Run -syn keyword basicStatement SEEK seek Seek SELECT select Select -syn keyword basicStatement CASE case Case SHARED shared Shared -syn keyword basicStatement SHELL shell Shell SLEEP sleep Sleep -syn keyword basicStatement SOUND sound Sound STATIC static Static -syn keyword basicStatement STOP stop Stop STRIG strig Strig -syn keyword basicStatement SUB sub Sub SWAP swap Swap -syn keyword basicStatement SYSTEM system System TIMER timer Timer -syn keyword basicStatement TROFF troff Troff TRON tron Tron -syn keyword basicStatement TYPE type Type UNLOCK unlock Unlock -syn keyword basicStatement VIEW view View WAIT wait Wait -syn keyword basicStatement WHILE while While WEND wend Wend -syn keyword basicStatement WIDTH width Width WINDOW window Window -syn keyword basicStatement WRITE write Write DATE$ date$ Date$ -syn keyword basicStatement MID$ mid$ Mid$ TIME$ time$ Time$ - -syn keyword basicFunction ABS abs Abs ASC asc Asc -syn keyword basicFunction ATN atn Atn CDBL cdbl Cdbl -syn keyword basicFunction CINT cint Cint CLNG clng Clng -syn keyword basicFunction COS cos Cos CSNG csng Csng -syn keyword basicFunction CSRLIN csrlin Csrlin CVD cvd Cvd -syn keyword basicFunction CVDMBF cvdmbf Cvdmbf CVI cvi Cvi -syn keyword basicFunction CVL cvl Cvl CVS cvs Cvs -syn keyword basicFunction CVSMBF cvsmbf Cvsmbf EOF eof Eof -syn keyword basicFunction ERDEV erdev Erdev ERL erl Erl -syn keyword basicFunction ERR err Err EXP exp Exp -syn keyword basicFunction FILEATTR fileattr Fileattr FIX fix Fix -syn keyword basicFunction FRE fre Fre FREEFILE freefile Freefile -syn keyword basicFunction INP inp Inp INSTR instr Instr -syn keyword basicFunction INT int Int LBOUND lbound Lbound -syn keyword basicFunction LEN len Len LOC loc Loc -syn keyword basicFunction LOF lof Lof LOG log Log -syn keyword basicFunction LPOS lpos Lpos PEEK peek Peek -syn keyword basicFunction PEN pen Pen POINT point Point -syn keyword basicFunction POS pos Pos RND rnd Rnd -syn keyword basicFunction SADD sadd Sadd SCREEN screen Screen -syn keyword basicFunction SEEK seek Seek SETMEM setmem Setmem -syn keyword basicFunction SGN sgn Sgn SIN sin Sin -syn keyword basicFunction SPC spc Spc SQR sqr Sqr -syn keyword basicFunction STICK stick Stick STRIG strig Strig -syn keyword basicFunction TAB tab Tab TAN tan Tan -syn keyword basicFunction UBOUND ubound Ubound VAL val Val -syn keyword basicFunction VALPTR valptr Valptr VALSEG valseg Valseg -syn keyword basicFunction VARPTR varptr Varptr VARSEG varseg Varseg -syn keyword basicFunction CHR$ Chr$ chr$ COMMAND$ command$ Command$ -syn keyword basicFunction DATE$ date$ Date$ ENVIRON$ environ$ Environ$ -syn keyword basicFunction ERDEV$ erdev$ Erdev$ HEX$ hex$ Hex$ -syn keyword basicFunction INKEY$ inkey$ Inkey$ INPUT$ input$ Input$ -syn keyword basicFunction IOCTL$ ioctl$ Ioctl$ LCASES$ lcases$ Lcases$ -syn keyword basicFunction LAFT$ laft$ Laft$ LTRIM$ ltrim$ Ltrim$ -syn keyword basicFunction MID$ mid$ Mid$ MKDMBF$ mkdmbf$ Mkdmbf$ -syn keyword basicFunction MKD$ mkd$ Mkd$ MKI$ mki$ Mki$ -syn keyword basicFunction MKL$ mkl$ Mkl$ MKSMBF$ mksmbf$ Mksmbf$ -syn keyword basicFunction MKS$ mks$ Mks$ OCT$ oct$ Oct$ -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$ +let s:keywords =<< trim EOL " {{{2 + absolute + access + alias + append + as + base + binary + byval + cdecl + com + def + do + for + function + gosub + goto + input + int86old + int86xold + interrupt + interruptx + is + key + len + list + local + lock + lprint + next + off + on + output + pen + play + random + read + resume + screen + seg + shared + signal + static + step + stop + strig + sub + timer + to + until + using + while + write +EOL +" }}} + +for k in s:keywords + exe 'syn match basicKeyword "\<' .. k .. '\>"' +endfor + +" Functions {{{1 +syn keyword basicFunction abs asc atn cdbl chr$ cint clng command$ cos csng +syn keyword basicFunction csrlin cvd cvdmbf cvi cvl cvs cvsmbf environ$ eof +syn keyword basicFunction erdev erdev$ erl err exp fileattr fix fre freefile +syn keyword basicFunction hex$ inkey$ inp input$ instr int ioctl$ left$ lbound +syn keyword basicFunction lcase$ len loc lof log lpos ltrim$ mkd$ mkdmbf$ mki$ +syn keyword basicFunction mkl$ mks$ mksmbf$ oct$ peek pen point pos right$ rnd +syn keyword basicFunction rtrim$ sadd setmem sgn sin space$ spc sqr stick str$ +syn keyword basicFunction strig string$ tab tan ubound ucase$ val valptr +syn keyword basicFunction valseg varptr varptr$ varseg + +" Functions and statements (same name) {{{1 +syn match basicStatement "\<\%(date\$\|mid\$\|play\|screen\|seek\|time\$\|timer\)\>" contained +syn match basicFunction "\<\%(date\$\|mid\$\|play\|screen\|seek\|time\$\|timer\)\>" + +" Types {{{1 +syn keyword basicType integer long single double string any + +" Strings {{{1 + +" Unquoted DATA strings - anything except [:,] and leading or trailing whitespace +" Needs lower priority than numbers +syn match basicDataString "[^[:space:],:]\+\%(\s\+[^[:space:],:]\+\)*" contained + +syn region basicString start=+"+ end=+"+ oneline + +" Booleans {{{1 +if exists("basic_booleans") + syn keyword basicBoolean true false +endif " Numbers {{{1 -" Integer number, or floating point number without a dot. -syn match basicNumber "\<\d\+\>" -" Floating point number, with dot -syn match basicNumber "\<\d\+\.\d*\>" -" Floating point number, starting with a dot -syn match basicNumber "\.\d\+\>" -" String and Character constants {{{1 -syn match basicSpecial "\\\d\d\d\|\\." contained -syn region basicString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=basicSpecial +" Integers +syn match basicNumber "-\=&o\=\o\+[%&]\=\>" +syn match basicNumber "-\=&h\x\+[%&]\=\>" +syn match basicNumber "-\=\<\d\+[%&]\=\>" + +" Floats +syn match basicFloat "-\=\<\d\+\.\=\d*\%(\%([ed][+-]\=\d*\)\|[!#]\)\=\>" +syn match basicFloat "-\=\<\.\d\+\%(\%([ed][+-]\=\d*\)\|[!#]\)\=\>" -" Line numbers {{{1 -syn region basicLineNumber start="^\d" end="\s" +" Statement anchors {{{1 +syn match basicLineStart "^" nextgroup=@basicStatements,@basicLineIdentifier skipwhite +syn match basicStatementSeparator ":" nextgroup=@basicStatements skipwhite -" Data-type suffixes {{{1 -syn match basicTypeSpecifier "[a-zA-Z0-9][$%&!#]"ms=s+1 -" Used with OPEN statement -syn match basicFilenumber "#\d\+" +" Line numbers and labels {{{1 + +" QuickBASIC limits these to 65,529 and 40 chars respectively +syn match basicLineNumber "\d\+" nextgroup=@basicStatements skipwhite contained +syn match basicLineLabel "\a[[:alnum:]]*\ze\s*:" nextgroup=@basicStatements skipwhite contained + +syn cluster basicLineIdentifier contains=basicLineNumber,basicLineLabel + +" Line Continuation {{{1 +syn match basicLineContinuation "\s*\zs_\ze\s*$" + +" Type suffixes {{{1 +if exists("basic_type_suffixes") + syn match basicTypeSuffix "\a[[:alnum:].]*\zs[$%&!#]" +endif -" Mathematical operators {{{1 -" syn match basicMathsOperator "[<>+\*^/\\=-]" -syn match basicMathsOperator "-\|=\|[:<>+\*^/\\]\|AND\|OR" +" File numbers {{{1 +syn match basicFilenumber "#\d\+" +syn match basicFilenumber "#\a[[:alnum:].]*[%&!#]\=" + +" Operators {{{1 +if exists("basic_operators") + syn match basicArithmeticOperator "[-+*/\\^]" + syn match basicRelationalOperator "<>\|<=\|>=\|[><=]" +endif +syn match basicLogicalOperator "\<\%(not\|and\|or\|xor\|eqv\|imp\)\>" +syn match basicArithmeticOperator "\<mod\>" + +" Metacommands {{{1 +" Note: No trailing word boundaries. Text may be freely mixed however there +" must be only leading whitespace prior to the first metacommand +syn match basicMetacommand "$INCLUDE\s*:\s*'[^']\+'" contained containedin=@basicMetaComments +syn match basicMetacommand "$\%(DYNAMIC\|STATIC\)" contained containedin=@basicMetaComments " 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 keyword basicTodo TODO FIXME XXX NOTE contained + +syn region basicRemStatement matchgroup=basicStatement start="REM\>" end="$" contains=basicTodo,@Spell contained +syn region basicComment start="'" end="$" contains=basicTodo,@Spell + +if !exists("basic_no_comment_fold") + syn region basicMultilineComment start="^\s*'.*\n\%(\s*'\)\@=" end="^\s*'.*\n\%(\s*'\)\@!" contains=@basicComments transparent fold keepend +endif + +" Metacommands +syn region basicMetaRemStatement matchgroup=basicStatement start="REM\>\s*\$\@=" end="$" contains=basicTodo contained +syn region basicMetaComment start="'\s*\$\@=" end="$" contains=basicTodo + +syn cluster basicMetaComments contains=basicMetaComment,basicMetaRemStatement +syn cluster basicComments contains=basicComment,basicMetaComment "syn sync ccomment basicComment " Default Highlighting {{{1 -hi def link basicLabel Label -hi def link basicConditional Conditional -hi def link basicRepeat Repeat -hi def link basicLineNumber Comment -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 basicTodo Todo -hi def link basicFunction Identifier -hi def link basicTypeSpecifier Type -hi def link basicFilenumber basicTypeSpecifier -"hi basicMathsOperator term=bold cterm=bold gui=bold +hi def link basicArithmeticOperator basicOperator +hi def link basicBoolean Boolean +hi def link basicComment Comment +hi def link basicCommentError Error +hi def link basicDataString basicString +hi def link basicFilenumber basicTypeSuffix " TODO: better group +hi def link basicFloat Float +hi def link basicFunction Function +hi def link basicKeyword Keyword +hi def link basicLineIdentifier LineNr +hi def link basicLineContinuation Special +hi def link basicLineLabel basicLineIdentifier +hi def link basicLineNumber basicLineIdentifier +hi def link basicLogicalOperator basicOperator +hi def link basicMetacommand SpecialComment +hi def link basicMetaComment Comment +hi def link basicMetaRemStatement Comment +hi def link basicNumber Number +hi def link basicOperator Operator +hi def link basicPutAction Keyword +hi def link basicRelationalOperator basicOperator +hi def link basicRemStatement Comment +hi def link basicSpaceError Error +hi def link basicStatementSeparator Special +hi def link basicStatement Statement +hi def link basicString String +hi def link basicTodo Todo +hi def link basicType Type +hi def link basicTypeSuffix Special +if exists("basic_legacy_syntax_groups") + hi def link basicTypeSpecifier Type + hi def link basicTypeSuffix basicTypeSpecifier +endif " Postscript {{{1 let b:current_syntax = "basic" diff --git a/runtime/syntax/c.vim b/runtime/syntax/c.vim index e86e1b8669..890e9ae1a7 100644 --- a/runtime/syntax/c.vim +++ b/runtime/syntax/c.vim @@ -1,7 +1,7 @@ " Vim syntax file " Language: C " Maintainer: Bram Moolenaar <Bram@vim.org> -" Last Change: 2021 Dec 07 +" Last Change: 2022 Apr 24 " Quit when a (custom) syntax file was already loaded if exists("b:current_syntax") @@ -11,7 +11,7 @@ endif let s:cpo_save = &cpo set cpo&vim -let s:ft = matchstr(&ft, '^\([^.]\)\+') +let s:ft = matchstr(&ft, '^\%([^.]\)\+') " check if this was included from cpp.vim let s:in_cpp_family = exists("b:filetype_in_cpp_family") @@ -42,17 +42,17 @@ syn cluster cCommentGroup contains=cTodo,cBadContinuation " String and Character constants " Highlight special characters (those which have a backslash) differently -syn match cSpecial display contained "\\\(x\x\+\|\o\{1,3}\|.\|$\)" +syn match cSpecial display contained "\\\%(x\x\+\|\o\{1,3}\|.\|$\)" if !exists("c_no_utf") - syn match cSpecial display contained "\\\(u\x\{4}\|U\x\{8}\)" + syn match cSpecial display contained "\\\%(u\x\{4}\|U\x\{8}\)" endif if !exists("c_no_cformat") " Highlight % items in strings. if !exists("c_no_c99") " ISO C99 - syn match cFormat display "%\(\d\+\$\)\=[-+' #0*]*\(\d*\|\*\|\*\d\+\$\)\(\.\(\d*\|\*\|\*\d\+\$\)\)\=\([hlLjzt]\|ll\|hh\)\=\([aAbdiuoxXDOUfFeEgGcCsSpn]\|\[\^\=.[^]]*\]\)" contained + syn match cFormat display "%\%(\d\+\$\)\=[-+' #0*]*\%(\d*\|\*\|\*\d\+\$\)\%(\.\%(\d*\|\*\|\*\d\+\$\)\)\=\%([hlLjzt]\|ll\|hh\)\=\%([aAbdiuoxXDOUfFeEgGcCsSpn]\|\[\^\=.[^]]*\]\)" contained else - syn match cFormat display "%\(\d\+\$\)\=[-+' #0*]*\(\d*\|\*\|\*\d\+\$\)\(\.\(\d*\|\*\|\*\d\+\$\)\)\=\([hlL]\|ll\)\=\([bdiuoxXDOUfeEgGcCsSpn]\|\[\^\=.[^]]*\]\)" contained + syn match cFormat display "%\%(\d\+\$\)\=[-+' #0*]*\%(\d*\|\*\|\*\d\+\$\)\%(\.\%(\d*\|\*\|\*\d\+\$\)\)\=\%([hlL]\|ll\)\=\%([bdiuoxXDOUfeEgGcCsSpn]\|\[\^\=.[^]]*\]\)" contained endif syn match cFormat display "%%" contained endif @@ -60,8 +60,8 @@ endif " cCppString: same as cString, but ends at end of line 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 + 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 elseif s:ft ==# "c" && !exists("c_no_c11") && !exists("c_no_cformat") " ISO C99 syn region cString start=+\%(L\|U\|u8\)\="+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial,cFormat,@Spell extend @@ -73,7 +73,7 @@ else syn region cCppString start=+L\="+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=cSpecial,cFormat,@Spell endif -syn region cCppSkip contained start="^\s*\(%:\|#\)\s*\(if\>\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*\(%:\|#\)\s*endif\>" contains=cSpaceError,cCppSkip +syn region cCppSkip contained start="^\s*\%(%:\|#\)\s*\%(if\>\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*\%(%:\|#\)\s*endif\>" contains=cSpaceError,cCppSkip syn cluster cStringGroup contains=cCppString,cCppSkip @@ -190,16 +190,16 @@ syn case ignore syn match cNumbers display transparent "\<\d\|\.\d" contains=cNumber,cFloat,cOctalError,cOctal " Same, but without octal error (for comments) syn match cNumbersCom display contained transparent "\<\d\|\.\d" contains=cNumber,cFloat,cOctal -syn match cNumber display contained "\d\+\(u\=l\{0,2}\|ll\=u\)\>" +syn match cNumber display contained "\d\+\%(u\=l\{0,2}\|ll\=u\)\>" "hex number -syn match cNumber display contained "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>" +syn match cNumber display contained "0x\x\+\%(u\=l\{0,2}\|ll\=u\)\>" " Flag the first zero of an octal number as something special -syn match cOctal display contained "0\o\+\(u\=l\{0,2}\|ll\=u\)\>" contains=cOctalZero +syn match cOctal display contained "0\o\+\%(u\=l\{0,2}\|ll\=u\)\>" contains=cOctalZero syn match cOctalZero display contained "\<0" "floating point number, with dot, optional exponent -syn match cFloat display contained "\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=" +syn match cFloat display contained "\d\+\.\d*\%(e[-+]\=\d\+\)\=[fl]\=" "floating point number, starting with a dot, optional exponent -syn match cFloat display contained "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>" +syn match cFloat display contained "\.\d\+\%(e[-+]\=\d\+\)\=[fl]\=\>" "floating point number, without dot, with exponent syn match cFloat display contained "\d\+e[-+]\=\d\+[fl]\=\>" if !exists("c_no_c99") @@ -219,7 +219,7 @@ if exists("c_comment_strings") " need to use a special type of cString: cCommentString, which also ends on " "*/", and sees a "*" at the start of the line as comment again. " Unfortunately this doesn't very well work for // type of comments :-( - syn match cCommentSkip contained "^\s*\*\($\|\s\+\)" + syn match cCommentSkip contained "^\s*\*\%($\|\s\+\)" syn region cCommentString contained start=+L\=\\\@<!"+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=cSpecial,cCommentSkip syn region cComment2String contained start=+L\=\\\@<!"+ skip=+\\\\\|\\"+ end=+"+ end="$" contains=cSpecial syn region cCommentL start="//" skip="\\$" end="$" keepend contains=@cCommentGroup,cComment2String,cCharacter,cNumbersCom,cSpaceError,cWrongComTail,@Spell @@ -245,8 +245,14 @@ syn match cWrongComTail display "\*/" syn keyword cOperator sizeof if exists("c_gnu") + syn keyword cType __label__ __complex__ syn keyword cStatement __asm__ - syn keyword cOperator typeof __real__ __imag__ + syn keyword cOperator __alignof__ + syn keyword cOperator typeof __typeof__ + syn keyword cOperator __real__ __imag__ + syn keyword cStorageClass __attribute__ __const__ __extension__ + syn keyword cStorageClass inline __inline__ + syn keyword cStorageClass __restrict__ __volatile__ __noreturn__ endif syn keyword cType int long short char void syn keyword cType signed unsigned float double @@ -270,16 +276,10 @@ if !exists("c_no_c99") " ISO C99 syn keyword cType intptr_t uintptr_t syn keyword cType intmax_t uintmax_t endif -if exists("c_gnu") - syn keyword cType __label__ __complex__ __volatile__ -endif 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:in_cpp_family syn keyword cStorageClass inline restrict endif @@ -292,6 +292,7 @@ if !exists("c_no_c11") syn keyword cOperator _Static_assert static_assert syn keyword cStorageClass _Thread_local thread_local syn keyword cType char16_t char32_t + syn keyword cType max_align_t " C11 atomics (take down the shield wall!) syn keyword cType atomic_bool atomic_char atomic_schar atomic_uchar syn keyword Ctype atomic_short atomic_ushort atomic_int atomic_uint @@ -375,36 +376,36 @@ if !exists("c_no_c99") " ISO C99 endif " Accept %: for # (C99) -syn region cPreCondit start="^\s*\zs\(%:\|#\)\s*\(if\|ifdef\|ifndef\|elif\)\>" skip="\\$" end="$" keepend contains=cComment,cCommentL,cCppString,cCharacter,cCppParen,cParenError,cNumbers,cCommentError,cSpaceError -syn match cPreConditMatch display "^\s*\zs\(%:\|#\)\s*\(else\|endif\)\>" +syn region cPreCondit start="^\s*\zs\%(%:\|#\)\s*\%(if\|ifdef\|ifndef\|elif\)\>" skip="\\$" end="$" keepend contains=cComment,cCommentL,cCppString,cCharacter,cCppParen,cParenError,cNumbers,cCommentError,cSpaceError +syn match cPreConditMatch display "^\s*\zs\%(%:\|#\)\s*\%(else\|endif\)\>" if !exists("c_no_if0") syn cluster cCppOutInGroup contains=cCppInIf,cCppInElse,cCppInElse2,cCppOutIf,cCppOutIf2,cCppOutElse,cCppInSkip,cCppOutSkip - syn region cCppOutWrapper start="^\s*\zs\(%:\|#\)\s*if\s\+0\+\s*\($\|//\|/\*\|&\)" end=".\@=\|$" contains=cCppOutIf,cCppOutElse,@NoSpell fold - syn region cCppOutIf contained start="0\+" matchgroup=cCppOutWrapper end="^\s*\(%:\|#\)\s*endif\>" contains=cCppOutIf2,cCppOutElse + syn region cCppOutWrapper start="^\s*\zs\%(%:\|#\)\s*if\s\+0\+\s*\%($\|//\|/\*\|&\)" end=".\@=\|$" contains=cCppOutIf,cCppOutElse,@NoSpell fold + syn region cCppOutIf contained start="0\+" matchgroup=cCppOutWrapper end="^\s*\%(%:\|#\)\s*endif\>" contains=cCppOutIf2,cCppOutElse if !exists("c_no_if0_fold") - syn region cCppOutIf2 contained matchgroup=cCppOutWrapper start="0\+" end="^\s*\(%:\|#\)\s*\(else\>\|elif\s\+\(0\+\s*\($\|//\|/\*\|&\)\)\@!\|endif\>\)"me=s-1 contains=cSpaceError,cCppOutSkip,@Spell fold + syn region cCppOutIf2 contained matchgroup=cCppOutWrapper start="0\+" end="^\s*\%(%:\|#\)\s*\%(else\>\|elif\s\+\%(0\+\s*\%($\|//\|/\*\|&\)\)\@!\|endif\>\)"me=s-1 contains=cSpaceError,cCppOutSkip,@Spell fold else - syn region cCppOutIf2 contained matchgroup=cCppOutWrapper start="0\+" end="^\s*\(%:\|#\)\s*\(else\>\|elif\s\+\(0\+\s*\($\|//\|/\*\|&\)\)\@!\|endif\>\)"me=s-1 contains=cSpaceError,cCppOutSkip,@Spell + syn region cCppOutIf2 contained matchgroup=cCppOutWrapper start="0\+" end="^\s*\%(%:\|#\)\s*\%(else\>\|elif\s\+\%(0\+\s*\%($\|//\|/\*\|&\)\)\@!\|endif\>\)"me=s-1 contains=cSpaceError,cCppOutSkip,@Spell endif - syn region cCppOutElse contained matchgroup=cCppOutWrapper start="^\s*\(%:\|#\)\s*\(else\|elif\)" end="^\s*\(%:\|#\)\s*endif\>"me=s-1 contains=TOP,cPreCondit - syn region cCppInWrapper start="^\s*\zs\(%:\|#\)\s*if\s\+0*[1-9]\d*\s*\($\|//\|/\*\||\)" end=".\@=\|$" contains=cCppInIf,cCppInElse fold - syn region cCppInIf contained matchgroup=cCppInWrapper start="\d\+" end="^\s*\(%:\|#\)\s*endif\>" contains=TOP,cPreCondit + syn region cCppOutElse contained matchgroup=cCppOutWrapper start="^\s*\%(%:\|#\)\s*\%(else\|elif\)" end="^\s*\%(%:\|#\)\s*endif\>"me=s-1 contains=TOP,cPreCondit + syn region cCppInWrapper start="^\s*\zs\%(%:\|#\)\s*if\s\+0*[1-9]\d*\s*\%($\|//\|/\*\||\)" end=".\@=\|$" contains=cCppInIf,cCppInElse fold + syn region cCppInIf contained matchgroup=cCppInWrapper start="\d\+" end="^\s*\%(%:\|#\)\s*endif\>" contains=TOP,cPreCondit if !exists("c_no_if0_fold") - syn region cCppInElse contained start="^\s*\(%:\|#\)\s*\(else\>\|elif\s\+\(0*[1-9]\d*\s*\($\|//\|/\*\||\)\)\@!\)" end=".\@=\|$" containedin=cCppInIf contains=cCppInElse2 fold + syn region cCppInElse contained start="^\s*\%(%:\|#\)\s*\%(else\>\|elif\s\+\%(0*[1-9]\d*\s*\%($\|//\|/\*\||\)\)\@!\)" end=".\@=\|$" containedin=cCppInIf contains=cCppInElse2 fold else - syn region cCppInElse contained start="^\s*\(%:\|#\)\s*\(else\>\|elif\s\+\(0*[1-9]\d*\s*\($\|//\|/\*\||\)\)\@!\)" end=".\@=\|$" containedin=cCppInIf contains=cCppInElse2 + syn region cCppInElse contained start="^\s*\%(%:\|#\)\s*\%(else\>\|elif\s\+\%(0*[1-9]\d*\s*\%($\|//\|/\*\||\)\)\@!\)" end=".\@=\|$" containedin=cCppInIf contains=cCppInElse2 endif - syn region cCppInElse2 contained matchgroup=cCppInWrapper start="^\s*\(%:\|#\)\s*\(else\|elif\)\([^/]\|/[^/*]\)*" end="^\s*\(%:\|#\)\s*endif\>"me=s-1 contains=cSpaceError,cCppOutSkip,@Spell - syn region cCppOutSkip contained start="^\s*\(%:\|#\)\s*\(if\>\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*\(%:\|#\)\s*endif\>" contains=cSpaceError,cCppOutSkip - syn region cCppInSkip contained matchgroup=cCppInWrapper start="^\s*\(%:\|#\)\s*\(if\s\+\(\d\+\s*\($\|//\|/\*\||\|&\)\)\@!\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*\(%:\|#\)\s*endif\>" containedin=cCppOutElse,cCppInIf,cCppInSkip contains=TOP,cPreProc + syn region cCppInElse2 contained matchgroup=cCppInWrapper start="^\s*\%(%:\|#\)\s*\%(else\|elif\)\%([^/]\|/[^/*]\)*" end="^\s*\%(%:\|#\)\s*endif\>"me=s-1 contains=cSpaceError,cCppOutSkip,@Spell + syn region cCppOutSkip contained start="^\s*\%(%:\|#\)\s*\%(if\>\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*\%(%:\|#\)\s*endif\>" contains=cSpaceError,cCppOutSkip + syn region cCppInSkip contained matchgroup=cCppInWrapper start="^\s*\%(%:\|#\)\s*\%(if\s\+\%(\d\+\s*\%($\|//\|/\*\||\|&\)\)\@!\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*\%(%:\|#\)\s*endif\>" containedin=cCppOutElse,cCppInIf,cCppInSkip contains=TOP,cPreProc endif syn region cIncluded display contained start=+"+ skip=+\\\\\|\\"+ end=+"+ syn match cIncluded display contained "<[^>]*>" -syn match cInclude display "^\s*\zs\(%:\|#\)\s*include\>\s*["<]" contains=cIncluded +syn match cInclude display "^\s*\zs\%(%:\|#\)\s*include\>\s*["<]" contains=cIncluded "syn match cLineSkip "\\$" syn cluster cPreProcGroup contains=cPreCondit,cIncluded,cInclude,cDefine,cErrInParen,cErrInBracket,cUserLabel,cSpecial,cOctalZero,cCppOutWrapper,cCppInWrapper,@cCppOutInGroup,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom,cString,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cParen,cBracket,cMulti,cBadBlock -syn region cDefine start="^\s*\zs\(%:\|#\)\s*\(define\|undef\)\>" skip="\\$" end="$" keepend contains=ALLBUT,@cPreProcGroup,@Spell -syn region cPreProc start="^\s*\zs\(%:\|#\)\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@cPreProcGroup,@Spell +syn region cDefine start="^\s*\zs\%(%:\|#\)\s*\%(define\|undef\)\>" skip="\\$" end="$" keepend contains=ALLBUT,@cPreProcGroup,@Spell +syn region cPreProc start="^\s*\zs\%(%:\|#\)\s*\%(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@cPreProcGroup,@Spell " Optional embedded Autodoc parsing if exists("c_autodoc") diff --git a/runtime/syntax/chordpro.vim b/runtime/syntax/chordpro.vim index 5ccec26508..41a0a1e9d1 100644 --- a/runtime/syntax/chordpro.vim +++ b/runtime/syntax/chordpro.vim @@ -1,8 +1,7 @@ " Vim syntax file -" Language: ChordPro (v. 3.6.2) +" Language: ChordPro 6 (https://www.chordpro.org) " Maintainer: Niels Bo Andersen <niels@niboan.dk> -" Last Change: 2006 Apr 30 -" Remark: Requires VIM version 6.00 or greater +" Last Change: 2022-04-15 " Quit when a syntax file was already loaded if exists("b:current_syntax") @@ -12,54 +11,161 @@ endif let s:cpo_save = &cpo set cpo&vim -setlocal iskeyword+=- - syn case ignore -syn keyword chordproDirective contained - \ start_of_chorus soc end_of_chorus eoc new_song ns no_grid ng grid g - \ new_page np new_physical_page npp start_of_tab sot end_of_tab eot - \ column_break colb - -syn keyword chordproDirWithOpt contained - \ comment c comment_italic ci comment_box cb title t subtitle st define - \ textfont textsize chordfont chordsize columns col - -syn keyword chordproDefineKeyword contained base-fret frets +" Include embedded abc syntax +syn include @Abc syntax/abc.vim + +" Lilypond and Pango syntaxes could be embedded as well, but they are not +" available in the distribution. + +" Directives without arguments +syn keyword chordproDirective contained nextgroup=chordproConditional + \ new_song ns + \ start_of_chorus soc + \ chorus + \ start_of_verse sov + \ start_of_bridge sob + \ start_of_tab sot + \ start_of_grid sog + \ start_of_abc + \ start_of_ly + \ end_of_chorus eoc + \ end_of_verse eov + \ end_of_bridge eob + \ end_of_tab eot + \ end_of_grid eog + \ end_of_abc + \ end_of_ly + \ new_page np + \ new_physical_page npp + \ column_break cb + \ grid g + \ no_grid ng + \ transpose + \ chordfont cf chordsize cs chordcolour + \ footerfont footersize footercolour + \ gridfont gridsize gridcolour + \ tabfont tabsize tabcolour + \ tocfont tocsize toccolour + \ textfont tf textsize ts textcolour + \ titlefont titlesize titlecolour + +" Directives with arguments. Some directives are in both groups, as they can +" be used both with and without arguments +syn keyword chordproDirWithArg contained nextgroup=chordproConditional + \ title t + \ subtitle st + \ sorttitle + \ artist + \ composer + \ lyricist + \ arranger + \ copyright + \ album + \ year + \ key + \ time + \ tempo + \ duration + \ capo + \ comment c + \ highlight + \ comment_italic ci + \ comment_box cb + \ image + \ start_of_chorus soc + \ chorus + \ start_of_verse sov + \ start_of_bridge sob + \ start_of_tab sot + \ start_of_grid sog + \ start_of_abc + \ start_of_ly + \ define + \ chord + \ transpose + \ chordfont cf chordsize cs chordcolour + \ footerfont footersize footercolour + \ gridfont gridsize gridcolour + \ tabfont tabsize tabcolour + \ tocfont tocsize toccolour + \ textfont tf textsize ts textcolour + \ titlefont titlesize titlecolour + \ pagetype + \ titles + \ columns col + +syn keyword chordproMetaKeyword contained meta +syn keyword chordproMetadata contained title sorttitle subtitle artist composer lyricist arranger copyright album year key time tempo duration capo +syn keyword chordproStandardMetadata contained songindex page pages pagerange today tuning instrument user +syn match chordproStandardMetadata /instrument\.type/ contained +syn match chordproStandardMetadata /instrument\.description/ contained +syn match chordproStandardMetadata /user\.name/ contained +syn match chordproStandardMetadata /user\.fullname/ contained + +syn keyword chordproDefineKeyword contained frets fingers +syn match chordproDefineKeyword /base-fret/ contained + +syn match chordproArgumentsNumber /\d\+/ contained + +syn match chordproCustom /x_\w\+/ contained + +syn match chordproDirMatch /{\w\+\(-\w\+\)\?}/ contains=chordproDirective contained transparent +syn match chordproDirArgMatch /{\w\+\(-\w\+\)\?[: ]/ contains=chordproDirWithArg contained transparent +syn match chordproMetaMatch /{meta\(-\w\+\)\?[: ]\+\w\+/ contains=chordproMetaKeyword,chordproMetadata contained transparent +syn match chordproCustomMatch /{x_\w\+\(-\w\+\)\?[: ]/ contains=chordproCustom contained transparent + +syn match chordproConditional /-\w\+/ contained + +syn match chordproMetaDataOperator /[=|]/ contained +syn match chordproMetaDataValue /%{\w*/ contains=chordproMetaData,chordproStandardMetadata contained transparent +" Handles nested metadata tags, but the end of the containing chordproTag is +" not highlighted correctly, if there are more than two levels of nesting +syn region chordproMetaDataTag start=/%{\w*/ skip=/%{[^}]*}/ end=/}/ contains=chordproMetaDataValue,chordproMetaDataOperator,chordproMetadataTag contained + +syn region chordproArguments start=/{\w\+\(-\w\+\)\?[: ]/hs=e+1 skip=/%{[^}]*}/ end=/}/he=s-1 contains=chordproDirArgMatch,chordproArgumentsNumber,chordproMetaDataTag contained +syn region chordproArguments start=/{\(define\|chord\)\(-\w\+\)\?[: ]/hs=e+1 end=/}/he=s-1 contains=chordproDirArgMatch,chordproDefineKeyword,chordproArgumentsNumber contained +syn region chordproArguments start=/{meta\(-\w\+\)\?[: ]/hs=e+1 skip=/%{[^}]*}/ end=/}/he=s-1 contains=chordproMetaMatch,chordproMetaDataTag contained +syn region chordproArguments start=/{x_\w\+\(-\w\+\)\?[: ]/hs=e+1 end=/}/he=s-1 contains=chordproCustomMatch contained + +syn region chordproTag start=/{/ skip=/%{[^}]*}/ end=/}/ contains=chordproDirMatch,chordproArguments oneline -syn match chordproDirMatch /{\w*}/ contains=chordproDirective contained transparent -syn match chordproDirOptMatch /{\w*:/ contains=chordproDirWithOpt contained transparent +syn region chordproChord matchgroup=chordproBracket start=/\[/ end=/]/ oneline -" Workaround for a bug in VIM 6, which causes incorrect coloring of the first { -if version < 700 - syn region chordproOptions start=/{\w*:/ end=/}/ contains=chordproDirOptMatch contained transparent - syn region chordproOptions start=/{define:/ end=/}/ contains=chordproDirOptMatch, chordproDefineKeyword contained transparent -else - syn region chordproOptions start=/{\w*:/hs=e+1 end=/}/he=s-1 contains=chordproDirOptMatch contained - syn region chordproOptions start=/{define:/hs=e+1 end=/}/he=s-1 contains=chordproDirOptMatch, chordproDefineKeyword contained -endif +syn region chordproAnnotation matchgroup=chordproBracket start=/\[\*/ end=/]/ oneline -syn region chordproTag start=/{/ end=/}/ contains=chordproDirMatch,chordproOptions oneline +syn region chordproTab start=/{start_of_tab\(-\w\+\)\?\([: ].\+\)\?}\|{sot\(-\w\+\)\?\([: ].\+\)\?}/hs=e+1 end=/{end_of_tab}\|{eot}/me=s-1 contains=chordproTag,chordproComment keepend -syn region chordproChord matchgroup=chordproBracket start=/\[/ end=/]/ oneline +syn region chordproChorus start=/{start_of_chorus\(-\w\+\)\?\([: ].\+\)\?}\|{soc\(-\w\+\)\?\([: ].\+\)\?}/hs=e+1 end=/{end_of_chorus}\|{eoc}/me=s-1 contains=chordproTag,chordproChord,chordproAnnotation,chordproComment keepend -syn region chordproTab start=/{start_of_tab}\|{sot}/hs=e+1 end=/{end_of_tab}\|{eot}/he=s-1 contains=chordproTag,chordproComment keepend +syn region chordproBridge start=/{start_of_bridge\(-\w\+\)\?\([: ].\+\)\?}\|{sob\(-\w\+\)\?\([: ].\+\)\?}/hs=e+1 end=/{end_of_bridge}\|{eob}/me=s-1 contains=chordproTag,chordproChord,chordproAnnotation,chordproComment keepend -syn region chordproChorus start=/{start_of_chorus}\|{soc}/hs=e+1 end=/{end_of_chorus}\|{eoc}/he=s-1 contains=chordproTag,chordproChord,chordproComment keepend +syn region chordproAbc start=/{start_of_abc\(-\w\+\)\?\([: ].\+\)\?}/hs=e+1 end=/{end_of_abc}/me=s-1 contains=chordproTag,@Abc keepend syn match chordproComment /^#.*/ " Define the default highlighting. hi def link chordproDirective Statement -hi def link chordproDirWithOpt Statement -hi def link chordproOptions Special +hi def link chordproDirWithArg Statement +hi def link chordproConditional Statement +hi def link chordproCustom Statement +hi def link chordproMetaKeyword Statement +hi def link chordproMetaDataOperator Operator +hi def link chordproMetaDataTag Function +hi def link chordproArguments Special +hi def link chordproArgumentsNumber Number hi def link chordproChord Type +hi def link chordproAnnotation Identifier hi def link chordproTag Constant hi def link chordproTab PreProc hi def link chordproComment Comment hi def link chordproBracket Constant -hi def link chordproDefineKeyword Type +hi def link chordproDefineKeyword Identifier +hi def link chordproMetadata Identifier +hi def link chordproStandardMetadata Identifier hi def chordproChorus term=bold cterm=bold gui=bold +hi def chordproBridge term=italic cterm=italic gui=italic let b:current_syntax = "chordpro" diff --git a/runtime/syntax/clojure.vim b/runtime/syntax/clojure.vim index 9782dc41ad..0d63728250 100644 --- a/runtime/syntax/clojure.vim +++ b/runtime/syntax/clojure.vim @@ -7,7 +7,7 @@ " Contributors: Joel Holdbrooks <cjholdbrooks@gmail.com> (Regexp support, bug fixes) " URL: https://github.com/clojure-vim/clojure.vim " License: Vim (see :h license) -" Last Change: 2021-10-26 +" Last Change: 2022-03-24 if exists("b:current_syntax") finish @@ -21,20 +21,20 @@ if has("folding") && exists("g:clojure_fold") && g:clojure_fold > 0 endif " -*- KEYWORDS -*- -" Generated from https://github.com/clojure-vim/clojure.vim/blob/62b215f079ce0f3834fd295c7a7f6bd8cc54bcc3/clj/src/vim_clojure_static/generate.clj -" Clojure version 1.10.3 +" Generated from https://github.com/clojure-vim/clojure.vim/blob/fd280e33e84c88e97860930557dba3ff80b1a82d/clj/src/vim_clojure_static/generate.clj +" Clojure version 1.11.0 let s:clojure_syntax_keywords = { - \ 'clojureBoolean': ["false","true"] - \ , 'clojureCond': ["case","clojure.core/case","clojure.core/cond","clojure.core/cond->","clojure.core/cond->>","clojure.core/condp","clojure.core/if-let","clojure.core/if-not","clojure.core/if-some","clojure.core/when","clojure.core/when-first","clojure.core/when-let","clojure.core/when-not","clojure.core/when-some","cond","cond->","cond->>","condp","if-let","if-not","if-some","when","when-first","when-let","when-not","when-some"] - \ , 'clojureConstant': ["nil"] - \ , 'clojureDefine': ["clojure.core/definline","clojure.core/definterface","clojure.core/defmacro","clojure.core/defmethod","clojure.core/defmulti","clojure.core/defn","clojure.core/defn-","clojure.core/defonce","clojure.core/defprotocol","clojure.core/defrecord","clojure.core/defstruct","clojure.core/deftype","definline","definterface","defmacro","defmethod","defmulti","defn","defn-","defonce","defprotocol","defrecord","defstruct","deftype"] - \ , 'clojureException': ["catch","finally","throw","try"] - \ , 'clojureFunc': ["*","*'","+","+'","-","-'","->ArrayChunk","->Eduction","->Vec","->VecNode","->VecSeq","-cache-protocol-fn","-reset-methods","/","<","<=","=","==",">",">=","PrintWriter-on","StackTraceElement->vec","Throwable->map","accessor","aclone","add-classpath","add-tap","add-watch","agent","agent-error","agent-errors","aget","alength","alias","all-ns","alter","alter-meta!","alter-var-root","ancestors","any?","apply","array-map","aset","aset-boolean","aset-byte","aset-char","aset-double","aset-float","aset-int","aset-long","aset-short","assoc","assoc!","assoc-in","associative?","atom","await","await-for","await1","bases","bean","bigdec","bigint","biginteger","bit-and","bit-and-not","bit-clear","bit-flip","bit-not","bit-or","bit-set","bit-shift-left","bit-shift-right","bit-test","bit-xor","boolean","boolean-array","boolean?","booleans","bound-fn*","bound?","bounded-count","butlast","byte","byte-array","bytes","bytes?","cast","cat","char","char-array","char?","chars","chunk","chunk-append","chunk-buffer","chunk-cons","chunk-first","chunk-next","chunk-rest","chunked-seq?","class","class?","clear-agent-errors","clojure-version","clojure.core/*","clojure.core/*'","clojure.core/+","clojure.core/+'","clojure.core/-","clojure.core/-'","clojure.core/->ArrayChunk","clojure.core/->Eduction","clojure.core/->Vec","clojure.core/->VecNode","clojure.core/->VecSeq","clojure.core/-cache-protocol-fn","clojure.core/-reset-methods","clojure.core//","clojure.core/<","clojure.core/<=","clojure.core/=","clojure.core/==","clojure.core/>","clojure.core/>=","clojure.core/PrintWriter-on","clojure.core/StackTraceElement->vec","clojure.core/Throwable->map","clojure.core/accessor","clojure.core/aclone","clojure.core/add-classpath","clojure.core/add-tap","clojure.core/add-watch","clojure.core/agent","clojure.core/agent-error","clojure.core/agent-errors","clojure.core/aget","clojure.core/alength","clojure.core/alias","clojure.core/all-ns","clojure.core/alter","clojure.core/alter-meta!","clojure.core/alter-var-root","clojure.core/ancestors","clojure.core/any?","clojure.core/apply","clojure.core/array-map","clojure.core/aset","clojure.core/aset-boolean","clojure.core/aset-byte","clojure.core/aset-char","clojure.core/aset-double","clojure.core/aset-float","clojure.core/aset-int","clojure.core/aset-long","clojure.core/aset-short","clojure.core/assoc","clojure.core/assoc!","clojure.core/assoc-in","clojure.core/associative?","clojure.core/atom","clojure.core/await","clojure.core/await-for","clojure.core/await1","clojure.core/bases","clojure.core/bean","clojure.core/bigdec","clojure.core/bigint","clojure.core/biginteger","clojure.core/bit-and","clojure.core/bit-and-not","clojure.core/bit-clear","clojure.core/bit-flip","clojure.core/bit-not","clojure.core/bit-or","clojure.core/bit-set","clojure.core/bit-shift-left","clojure.core/bit-shift-right","clojure.core/bit-test","clojure.core/bit-xor","clojure.core/boolean","clojure.core/boolean-array","clojure.core/boolean?","clojure.core/booleans","clojure.core/bound-fn*","clojure.core/bound?","clojure.core/bounded-count","clojure.core/butlast","clojure.core/byte","clojure.core/byte-array","clojure.core/bytes","clojure.core/bytes?","clojure.core/cast","clojure.core/cat","clojure.core/char","clojure.core/char-array","clojure.core/char?","clojure.core/chars","clojure.core/chunk","clojure.core/chunk-append","clojure.core/chunk-buffer","clojure.core/chunk-cons","clojure.core/chunk-first","clojure.core/chunk-next","clojure.core/chunk-rest","clojure.core/chunked-seq?","clojure.core/class","clojure.core/class?","clojure.core/clear-agent-errors","clojure.core/clojure-version","clojure.core/coll?","clojure.core/commute","clojure.core/comp","clojure.core/comparator","clojure.core/compare","clojure.core/compare-and-set!","clojure.core/compile","clojure.core/complement","clojure.core/completing","clojure.core/concat","clojure.core/conj","clojure.core/conj!","clojure.core/cons","clojure.core/constantly","clojure.core/construct-proxy","clojure.core/contains?","clojure.core/count","clojure.core/counted?","clojure.core/create-ns","clojure.core/create-struct","clojure.core/cycle","clojure.core/dec","clojure.core/dec'","clojure.core/decimal?","clojure.core/dedupe","clojure.core/delay?","clojure.core/deliver","clojure.core/denominator","clojure.core/deref","clojure.core/derive","clojure.core/descendants","clojure.core/destructure","clojure.core/disj","clojure.core/disj!","clojure.core/dissoc","clojure.core/dissoc!","clojure.core/distinct","clojure.core/distinct?","clojure.core/doall","clojure.core/dorun","clojure.core/double","clojure.core/double-array","clojure.core/double?","clojure.core/doubles","clojure.core/drop","clojure.core/drop-last","clojure.core/drop-while","clojure.core/eduction","clojure.core/empty","clojure.core/empty?","clojure.core/ensure","clojure.core/ensure-reduced","clojure.core/enumeration-seq","clojure.core/error-handler","clojure.core/error-mode","clojure.core/eval","clojure.core/even?","clojure.core/every-pred","clojure.core/every?","clojure.core/ex-cause","clojure.core/ex-data","clojure.core/ex-info","clojure.core/ex-message","clojure.core/extend","clojure.core/extenders","clojure.core/extends?","clojure.core/false?","clojure.core/ffirst","clojure.core/file-seq","clojure.core/filter","clojure.core/filterv","clojure.core/find","clojure.core/find-keyword","clojure.core/find-ns","clojure.core/find-protocol-impl","clojure.core/find-protocol-method","clojure.core/find-var","clojure.core/first","clojure.core/flatten","clojure.core/float","clojure.core/float-array","clojure.core/float?","clojure.core/floats","clojure.core/flush","clojure.core/fn?","clojure.core/fnext","clojure.core/fnil","clojure.core/force","clojure.core/format","clojure.core/frequencies","clojure.core/future-call","clojure.core/future-cancel","clojure.core/future-cancelled?","clojure.core/future-done?","clojure.core/future?","clojure.core/gensym","clojure.core/get","clojure.core/get-in","clojure.core/get-method","clojure.core/get-proxy-class","clojure.core/get-thread-bindings","clojure.core/get-validator","clojure.core/group-by","clojure.core/halt-when","clojure.core/hash","clojure.core/hash-combine","clojure.core/hash-map","clojure.core/hash-ordered-coll","clojure.core/hash-set","clojure.core/hash-unordered-coll","clojure.core/ident?","clojure.core/identical?","clojure.core/identity","clojure.core/ifn?","clojure.core/in-ns","clojure.core/inc","clojure.core/inc'","clojure.core/indexed?","clojure.core/init-proxy","clojure.core/inst-ms","clojure.core/inst-ms*","clojure.core/inst?","clojure.core/instance?","clojure.core/int","clojure.core/int-array","clojure.core/int?","clojure.core/integer?","clojure.core/interleave","clojure.core/intern","clojure.core/interpose","clojure.core/into","clojure.core/into-array","clojure.core/ints","clojure.core/isa?","clojure.core/iterate","clojure.core/iterator-seq","clojure.core/juxt","clojure.core/keep","clojure.core/keep-indexed","clojure.core/key","clojure.core/keys","clojure.core/keyword","clojure.core/keyword?","clojure.core/last","clojure.core/line-seq","clojure.core/list","clojure.core/list*","clojure.core/list?","clojure.core/load","clojure.core/load-file","clojure.core/load-reader","clojure.core/load-string","clojure.core/loaded-libs","clojure.core/long","clojure.core/long-array","clojure.core/longs","clojure.core/macroexpand","clojure.core/macroexpand-1","clojure.core/make-array","clojure.core/make-hierarchy","clojure.core/map","clojure.core/map-entry?","clojure.core/map-indexed","clojure.core/map?","clojure.core/mapcat","clojure.core/mapv","clojure.core/max","clojure.core/max-key","clojure.core/memoize","clojure.core/merge","clojure.core/merge-with","clojure.core/meta","clojure.core/method-sig","clojure.core/methods","clojure.core/min","clojure.core/min-key","clojure.core/mix-collection-hash","clojure.core/mod","clojure.core/munge","clojure.core/name","clojure.core/namespace","clojure.core/namespace-munge","clojure.core/nat-int?","clojure.core/neg-int?","clojure.core/neg?","clojure.core/newline","clojure.core/next","clojure.core/nfirst","clojure.core/nil?","clojure.core/nnext","clojure.core/not","clojure.core/not-any?","clojure.core/not-empty","clojure.core/not-every?","clojure.core/not=","clojure.core/ns-aliases","clojure.core/ns-imports","clojure.core/ns-interns","clojure.core/ns-map","clojure.core/ns-name","clojure.core/ns-publics","clojure.core/ns-refers","clojure.core/ns-resolve","clojure.core/ns-unalias","clojure.core/ns-unmap","clojure.core/nth","clojure.core/nthnext","clojure.core/nthrest","clojure.core/num","clojure.core/number?","clojure.core/numerator","clojure.core/object-array","clojure.core/odd?","clojure.core/parents","clojure.core/partial","clojure.core/partition","clojure.core/partition-all","clojure.core/partition-by","clojure.core/pcalls","clojure.core/peek","clojure.core/persistent!","clojure.core/pmap","clojure.core/pop","clojure.core/pop!","clojure.core/pop-thread-bindings","clojure.core/pos-int?","clojure.core/pos?","clojure.core/pr","clojure.core/pr-str","clojure.core/prefer-method","clojure.core/prefers","clojure.core/print","clojure.core/print-ctor","clojure.core/print-dup","clojure.core/print-method","clojure.core/print-simple","clojure.core/print-str","clojure.core/printf","clojure.core/println","clojure.core/println-str","clojure.core/prn","clojure.core/prn-str","clojure.core/promise","clojure.core/proxy-call-with-super","clojure.core/proxy-mappings","clojure.core/proxy-name","clojure.core/push-thread-bindings","clojure.core/qualified-ident?","clojure.core/qualified-keyword?","clojure.core/qualified-symbol?","clojure.core/quot","clojure.core/rand","clojure.core/rand-int","clojure.core/rand-nth","clojure.core/random-sample","clojure.core/range","clojure.core/ratio?","clojure.core/rational?","clojure.core/rationalize","clojure.core/re-find","clojure.core/re-groups","clojure.core/re-matcher","clojure.core/re-matches","clojure.core/re-pattern","clojure.core/re-seq","clojure.core/read","clojure.core/read+string","clojure.core/read-line","clojure.core/read-string","clojure.core/reader-conditional","clojure.core/reader-conditional?","clojure.core/realized?","clojure.core/record?","clojure.core/reduce","clojure.core/reduce-kv","clojure.core/reduced","clojure.core/reduced?","clojure.core/reductions","clojure.core/ref","clojure.core/ref-history-count","clojure.core/ref-max-history","clojure.core/ref-min-history","clojure.core/ref-set","clojure.core/refer","clojure.core/release-pending-sends","clojure.core/rem","clojure.core/remove","clojure.core/remove-all-methods","clojure.core/remove-method","clojure.core/remove-ns","clojure.core/remove-tap","clojure.core/remove-watch","clojure.core/repeat","clojure.core/repeatedly","clojure.core/replace","clojure.core/replicate","clojure.core/require","clojure.core/requiring-resolve","clojure.core/reset!","clojure.core/reset-meta!","clojure.core/reset-vals!","clojure.core/resolve","clojure.core/rest","clojure.core/restart-agent","clojure.core/resultset-seq","clojure.core/reverse","clojure.core/reversible?","clojure.core/rseq","clojure.core/rsubseq","clojure.core/run!","clojure.core/satisfies?","clojure.core/second","clojure.core/select-keys","clojure.core/send","clojure.core/send-off","clojure.core/send-via","clojure.core/seq","clojure.core/seq?","clojure.core/seqable?","clojure.core/seque","clojure.core/sequence","clojure.core/sequential?","clojure.core/set","clojure.core/set-agent-send-executor!","clojure.core/set-agent-send-off-executor!","clojure.core/set-error-handler!","clojure.core/set-error-mode!","clojure.core/set-validator!","clojure.core/set?","clojure.core/short","clojure.core/short-array","clojure.core/shorts","clojure.core/shuffle","clojure.core/shutdown-agents","clojure.core/simple-ident?","clojure.core/simple-keyword?","clojure.core/simple-symbol?","clojure.core/slurp","clojure.core/some","clojure.core/some-fn","clojure.core/some?","clojure.core/sort","clojure.core/sort-by","clojure.core/sorted-map","clojure.core/sorted-map-by","clojure.core/sorted-set","clojure.core/sorted-set-by","clojure.core/sorted?","clojure.core/special-symbol?","clojure.core/spit","clojure.core/split-at","clojure.core/split-with","clojure.core/str","clojure.core/string?","clojure.core/struct","clojure.core/struct-map","clojure.core/subs","clojure.core/subseq","clojure.core/subvec","clojure.core/supers","clojure.core/swap!","clojure.core/swap-vals!","clojure.core/symbol","clojure.core/symbol?","clojure.core/tagged-literal","clojure.core/tagged-literal?","clojure.core/take","clojure.core/take-last","clojure.core/take-nth","clojure.core/take-while","clojure.core/tap>","clojure.core/test","clojure.core/the-ns","clojure.core/thread-bound?","clojure.core/to-array","clojure.core/to-array-2d","clojure.core/trampoline","clojure.core/transduce","clojure.core/transient","clojure.core/tree-seq","clojure.core/true?","clojure.core/type","clojure.core/unchecked-add","clojure.core/unchecked-add-int","clojure.core/unchecked-byte","clojure.core/unchecked-char","clojure.core/unchecked-dec","clojure.core/unchecked-dec-int","clojure.core/unchecked-divide-int","clojure.core/unchecked-double","clojure.core/unchecked-float","clojure.core/unchecked-inc","clojure.core/unchecked-inc-int","clojure.core/unchecked-int","clojure.core/unchecked-long","clojure.core/unchecked-multiply","clojure.core/unchecked-multiply-int","clojure.core/unchecked-negate","clojure.core/unchecked-negate-int","clojure.core/unchecked-remainder-int","clojure.core/unchecked-short","clojure.core/unchecked-subtract","clojure.core/unchecked-subtract-int","clojure.core/underive","clojure.core/unreduced","clojure.core/unsigned-bit-shift-right","clojure.core/update","clojure.core/update-in","clojure.core/update-proxy","clojure.core/uri?","clojure.core/use","clojure.core/uuid?","clojure.core/val","clojure.core/vals","clojure.core/var-get","clojure.core/var-set","clojure.core/var?","clojure.core/vary-meta","clojure.core/vec","clojure.core/vector","clojure.core/vector-of","clojure.core/vector?","clojure.core/volatile!","clojure.core/volatile?","clojure.core/vreset!","clojure.core/with-bindings*","clojure.core/with-meta","clojure.core/with-redefs-fn","clojure.core/xml-seq","clojure.core/zero?","clojure.core/zipmap","coll?","commute","comp","comparator","compare","compare-and-set!","compile","complement","completing","concat","conj","conj!","cons","constantly","construct-proxy","contains?","count","counted?","create-ns","create-struct","cycle","dec","dec'","decimal?","dedupe","delay?","deliver","denominator","deref","derive","descendants","destructure","disj","disj!","dissoc","dissoc!","distinct","distinct?","doall","dorun","double","double-array","double?","doubles","drop","drop-last","drop-while","eduction","empty","empty?","ensure","ensure-reduced","enumeration-seq","error-handler","error-mode","eval","even?","every-pred","every?","ex-cause","ex-data","ex-info","ex-message","extend","extenders","extends?","false?","ffirst","file-seq","filter","filterv","find","find-keyword","find-ns","find-protocol-impl","find-protocol-method","find-var","first","flatten","float","float-array","float?","floats","flush","fn?","fnext","fnil","force","format","frequencies","future-call","future-cancel","future-cancelled?","future-done?","future?","gensym","get","get-in","get-method","get-proxy-class","get-thread-bindings","get-validator","group-by","halt-when","hash","hash-combine","hash-map","hash-ordered-coll","hash-set","hash-unordered-coll","ident?","identical?","identity","ifn?","in-ns","inc","inc'","indexed?","init-proxy","inst-ms","inst-ms*","inst?","instance?","int","int-array","int?","integer?","interleave","intern","interpose","into","into-array","ints","isa?","iterate","iterator-seq","juxt","keep","keep-indexed","key","keys","keyword","keyword?","last","line-seq","list","list*","list?","load","load-file","load-reader","load-string","loaded-libs","long","long-array","longs","macroexpand","macroexpand-1","make-array","make-hierarchy","map","map-entry?","map-indexed","map?","mapcat","mapv","max","max-key","memoize","merge","merge-with","meta","method-sig","methods","min","min-key","mix-collection-hash","mod","munge","name","namespace","namespace-munge","nat-int?","neg-int?","neg?","newline","next","nfirst","nil?","nnext","not","not-any?","not-empty","not-every?","not=","ns-aliases","ns-imports","ns-interns","ns-map","ns-name","ns-publics","ns-refers","ns-resolve","ns-unalias","ns-unmap","nth","nthnext","nthrest","num","number?","numerator","object-array","odd?","parents","partial","partition","partition-all","partition-by","pcalls","peek","persistent!","pmap","pop","pop!","pop-thread-bindings","pos-int?","pos?","pr","pr-str","prefer-method","prefers","print","print-ctor","print-dup","print-method","print-simple","print-str","printf","println","println-str","prn","prn-str","promise","proxy-call-with-super","proxy-mappings","proxy-name","push-thread-bindings","qualified-ident?","qualified-keyword?","qualified-symbol?","quot","rand","rand-int","rand-nth","random-sample","range","ratio?","rational?","rationalize","re-find","re-groups","re-matcher","re-matches","re-pattern","re-seq","read","read+string","read-line","read-string","reader-conditional","reader-conditional?","realized?","record?","reduce","reduce-kv","reduced","reduced?","reductions","ref","ref-history-count","ref-max-history","ref-min-history","ref-set","refer","release-pending-sends","rem","remove","remove-all-methods","remove-method","remove-ns","remove-tap","remove-watch","repeat","repeatedly","replace","replicate","require","requiring-resolve","reset!","reset-meta!","reset-vals!","resolve","rest","restart-agent","resultset-seq","reverse","reversible?","rseq","rsubseq","run!","satisfies?","second","select-keys","send","send-off","send-via","seq","seq?","seqable?","seque","sequence","sequential?","set","set-agent-send-executor!","set-agent-send-off-executor!","set-error-handler!","set-error-mode!","set-validator!","set?","short","short-array","shorts","shuffle","shutdown-agents","simple-ident?","simple-keyword?","simple-symbol?","slurp","some","some-fn","some?","sort","sort-by","sorted-map","sorted-map-by","sorted-set","sorted-set-by","sorted?","special-symbol?","spit","split-at","split-with","str","string?","struct","struct-map","subs","subseq","subvec","supers","swap!","swap-vals!","symbol","symbol?","tagged-literal","tagged-literal?","take","take-last","take-nth","take-while","tap>","test","the-ns","thread-bound?","to-array","to-array-2d","trampoline","transduce","transient","tree-seq","true?","type","unchecked-add","unchecked-add-int","unchecked-byte","unchecked-char","unchecked-dec","unchecked-dec-int","unchecked-divide-int","unchecked-double","unchecked-float","unchecked-inc","unchecked-inc-int","unchecked-int","unchecked-long","unchecked-multiply","unchecked-multiply-int","unchecked-negate","unchecked-negate-int","unchecked-remainder-int","unchecked-short","unchecked-subtract","unchecked-subtract-int","underive","unreduced","unsigned-bit-shift-right","update","update-in","update-proxy","uri?","use","uuid?","val","vals","var-get","var-set","var?","vary-meta","vec","vector","vector-of","vector?","volatile!","volatile?","vreset!","with-bindings*","with-meta","with-redefs-fn","xml-seq","zero?","zipmap"] - \ , 'clojureMacro': ["->","->>","..","amap","and","areduce","as->","assert","binding","bound-fn","clojure.core/->","clojure.core/->>","clojure.core/..","clojure.core/amap","clojure.core/and","clojure.core/areduce","clojure.core/as->","clojure.core/assert","clojure.core/binding","clojure.core/bound-fn","clojure.core/comment","clojure.core/declare","clojure.core/delay","clojure.core/dosync","clojure.core/doto","clojure.core/extend-protocol","clojure.core/extend-type","clojure.core/for","clojure.core/future","clojure.core/gen-class","clojure.core/gen-interface","clojure.core/import","clojure.core/io!","clojure.core/lazy-cat","clojure.core/lazy-seq","clojure.core/letfn","clojure.core/locking","clojure.core/memfn","clojure.core/ns","clojure.core/or","clojure.core/proxy","clojure.core/proxy-super","clojure.core/pvalues","clojure.core/refer-clojure","clojure.core/reify","clojure.core/some->","clojure.core/some->>","clojure.core/sync","clojure.core/time","clojure.core/vswap!","clojure.core/with-bindings","clojure.core/with-in-str","clojure.core/with-loading-context","clojure.core/with-local-vars","clojure.core/with-open","clojure.core/with-out-str","clojure.core/with-precision","clojure.core/with-redefs","comment","declare","delay","dosync","doto","extend-protocol","extend-type","for","future","gen-class","gen-interface","import","io!","lazy-cat","lazy-seq","letfn","locking","memfn","ns","or","proxy","proxy-super","pvalues","refer-clojure","reify","some->","some->>","sync","time","vswap!","with-bindings","with-in-str","with-loading-context","with-local-vars","with-open","with-out-str","with-precision","with-redefs"] - \ , 'clojureRepeat': ["clojure.core/doseq","clojure.core/dotimes","clojure.core/while","doseq","dotimes","while"] - \ , 'clojureSpecial': [".","clojure.core/fn","clojure.core/let","clojure.core/loop","def","do","fn","if","let","loop","monitor-enter","monitor-exit","new","quote","recur","set!","var"] - \ , 'clojureVariable': ["*1","*2","*3","*agent*","*allow-unresolved-vars*","*assert*","*clojure-version*","*command-line-args*","*compile-files*","*compile-path*","*compiler-options*","*data-readers*","*default-data-reader-fn*","*e","*err*","*file*","*flush-on-newline*","*fn-loader*","*in*","*math-context*","*ns*","*out*","*print-dup*","*print-length*","*print-level*","*print-meta*","*print-namespace-maps*","*print-readably*","*read-eval*","*reader-resolver*","*source-path*","*suppress-read*","*unchecked-math*","*use-context-classloader*","*verbose-defrecords*","*warn-on-reflection*","EMPTY-NODE","Inst","char-escape-string","char-name-string","clojure.core/*1","clojure.core/*2","clojure.core/*3","clojure.core/*agent*","clojure.core/*allow-unresolved-vars*","clojure.core/*assert*","clojure.core/*clojure-version*","clojure.core/*command-line-args*","clojure.core/*compile-files*","clojure.core/*compile-path*","clojure.core/*compiler-options*","clojure.core/*data-readers*","clojure.core/*default-data-reader-fn*","clojure.core/*e","clojure.core/*err*","clojure.core/*file*","clojure.core/*flush-on-newline*","clojure.core/*fn-loader*","clojure.core/*in*","clojure.core/*math-context*","clojure.core/*ns*","clojure.core/*out*","clojure.core/*print-dup*","clojure.core/*print-length*","clojure.core/*print-level*","clojure.core/*print-meta*","clojure.core/*print-namespace-maps*","clojure.core/*print-readably*","clojure.core/*read-eval*","clojure.core/*reader-resolver*","clojure.core/*source-path*","clojure.core/*suppress-read*","clojure.core/*unchecked-math*","clojure.core/*use-context-classloader*","clojure.core/*verbose-defrecords*","clojure.core/*warn-on-reflection*","clojure.core/EMPTY-NODE","clojure.core/Inst","clojure.core/char-escape-string","clojure.core/char-name-string","clojure.core/default-data-readers","clojure.core/primitives-classnames","clojure.core/unquote","clojure.core/unquote-splicing","default-data-readers","primitives-classnames","unquote","unquote-splicing"] - \ } + \ 'clojureBoolean': ["false","true"], + \ 'clojureCond': ["case","case*","clojure.core/case","clojure.core/cond","clojure.core/cond->","clojure.core/cond->>","clojure.core/condp","clojure.core/if-let","clojure.core/if-not","clojure.core/if-some","clojure.core/when","clojure.core/when-first","clojure.core/when-let","clojure.core/when-not","clojure.core/when-some","cond","cond->","cond->>","condp","if","if-let","if-not","if-some","when","when-first","when-let","when-not","when-some"], + \ 'clojureConstant': ["nil"], + \ 'clojureDefine': ["clojure.core/definline","clojure.core/definterface","clojure.core/defmacro","clojure.core/defmethod","clojure.core/defmulti","clojure.core/defn","clojure.core/defn-","clojure.core/defonce","clojure.core/defprotocol","clojure.core/defrecord","clojure.core/defstruct","clojure.core/deftype","def","definline","definterface","defmacro","defmethod","defmulti","defn","defn-","defonce","defprotocol","defrecord","defstruct","deftype","deftype*"], + \ 'clojureException': ["catch","finally","throw","try"], + \ 'clojureFunc': ["*","*'","+","+'","-","-'","->ArrayChunk","->Eduction","->Vec","->VecNode","->VecSeq","-cache-protocol-fn","-reset-methods","/","<","<=","=","==",">",">=","NaN?","PrintWriter-on","StackTraceElement->vec","Throwable->map","abs","accessor","aclone","add-classpath","add-tap","add-watch","agent","agent-error","agent-errors","aget","alength","alias","all-ns","alter","alter-meta!","alter-var-root","ancestors","any?","apply","array-map","aset","aset-boolean","aset-byte","aset-char","aset-double","aset-float","aset-int","aset-long","aset-short","assoc","assoc!","assoc-in","associative?","atom","await","await-for","await1","bases","bean","bigdec","bigint","biginteger","bit-and","bit-and-not","bit-clear","bit-flip","bit-not","bit-or","bit-set","bit-shift-left","bit-shift-right","bit-test","bit-xor","boolean","boolean-array","boolean?","booleans","bound-fn*","bound?","bounded-count","butlast","byte","byte-array","bytes","bytes?","cast","cat","char","char-array","char?","chars","chunk","chunk-append","chunk-buffer","chunk-cons","chunk-first","chunk-next","chunk-rest","chunked-seq?","class","class?","clear-agent-errors","clojure-version","clojure.core/*","clojure.core/*'","clojure.core/+","clojure.core/+'","clojure.core/-","clojure.core/-'","clojure.core/->ArrayChunk","clojure.core/->Eduction","clojure.core/->Vec","clojure.core/->VecNode","clojure.core/->VecSeq","clojure.core/-cache-protocol-fn","clojure.core/-reset-methods","clojure.core//","clojure.core/<","clojure.core/<=","clojure.core/=","clojure.core/==","clojure.core/>","clojure.core/>=","clojure.core/NaN?","clojure.core/PrintWriter-on","clojure.core/StackTraceElement->vec","clojure.core/Throwable->map","clojure.core/abs","clojure.core/accessor","clojure.core/aclone","clojure.core/add-classpath","clojure.core/add-tap","clojure.core/add-watch","clojure.core/agent","clojure.core/agent-error","clojure.core/agent-errors","clojure.core/aget","clojure.core/alength","clojure.core/alias","clojure.core/all-ns","clojure.core/alter","clojure.core/alter-meta!","clojure.core/alter-var-root","clojure.core/ancestors","clojure.core/any?","clojure.core/apply","clojure.core/array-map","clojure.core/aset","clojure.core/aset-boolean","clojure.core/aset-byte","clojure.core/aset-char","clojure.core/aset-double","clojure.core/aset-float","clojure.core/aset-int","clojure.core/aset-long","clojure.core/aset-short","clojure.core/assoc","clojure.core/assoc!","clojure.core/assoc-in","clojure.core/associative?","clojure.core/atom","clojure.core/await","clojure.core/await-for","clojure.core/await1","clojure.core/bases","clojure.core/bean","clojure.core/bigdec","clojure.core/bigint","clojure.core/biginteger","clojure.core/bit-and","clojure.core/bit-and-not","clojure.core/bit-clear","clojure.core/bit-flip","clojure.core/bit-not","clojure.core/bit-or","clojure.core/bit-set","clojure.core/bit-shift-left","clojure.core/bit-shift-right","clojure.core/bit-test","clojure.core/bit-xor","clojure.core/boolean","clojure.core/boolean-array","clojure.core/boolean?","clojure.core/booleans","clojure.core/bound-fn*","clojure.core/bound?","clojure.core/bounded-count","clojure.core/butlast","clojure.core/byte","clojure.core/byte-array","clojure.core/bytes","clojure.core/bytes?","clojure.core/cast","clojure.core/cat","clojure.core/char","clojure.core/char-array","clojure.core/char?","clojure.core/chars","clojure.core/chunk","clojure.core/chunk-append","clojure.core/chunk-buffer","clojure.core/chunk-cons","clojure.core/chunk-first","clojure.core/chunk-next","clojure.core/chunk-rest","clojure.core/chunked-seq?","clojure.core/class","clojure.core/class?","clojure.core/clear-agent-errors","clojure.core/clojure-version","clojure.core/coll?","clojure.core/commute","clojure.core/comp","clojure.core/comparator","clojure.core/compare","clojure.core/compare-and-set!","clojure.core/compile","clojure.core/complement","clojure.core/completing","clojure.core/concat","clojure.core/conj","clojure.core/conj!","clojure.core/cons","clojure.core/constantly","clojure.core/construct-proxy","clojure.core/contains?","clojure.core/count","clojure.core/counted?","clojure.core/create-ns","clojure.core/create-struct","clojure.core/cycle","clojure.core/dec","clojure.core/dec'","clojure.core/decimal?","clojure.core/dedupe","clojure.core/delay?","clojure.core/deliver","clojure.core/denominator","clojure.core/deref","clojure.core/derive","clojure.core/descendants","clojure.core/destructure","clojure.core/disj","clojure.core/disj!","clojure.core/dissoc","clojure.core/dissoc!","clojure.core/distinct","clojure.core/distinct?","clojure.core/doall","clojure.core/dorun","clojure.core/double","clojure.core/double-array","clojure.core/double?","clojure.core/doubles","clojure.core/drop","clojure.core/drop-last","clojure.core/drop-while","clojure.core/eduction","clojure.core/empty","clojure.core/empty?","clojure.core/ensure","clojure.core/ensure-reduced","clojure.core/enumeration-seq","clojure.core/error-handler","clojure.core/error-mode","clojure.core/eval","clojure.core/even?","clojure.core/every-pred","clojure.core/every?","clojure.core/ex-cause","clojure.core/ex-data","clojure.core/ex-info","clojure.core/ex-message","clojure.core/extend","clojure.core/extenders","clojure.core/extends?","clojure.core/false?","clojure.core/ffirst","clojure.core/file-seq","clojure.core/filter","clojure.core/filterv","clojure.core/find","clojure.core/find-keyword","clojure.core/find-ns","clojure.core/find-protocol-impl","clojure.core/find-protocol-method","clojure.core/find-var","clojure.core/first","clojure.core/flatten","clojure.core/float","clojure.core/float-array","clojure.core/float?","clojure.core/floats","clojure.core/flush","clojure.core/fn?","clojure.core/fnext","clojure.core/fnil","clojure.core/force","clojure.core/format","clojure.core/frequencies","clojure.core/future-call","clojure.core/future-cancel","clojure.core/future-cancelled?","clojure.core/future-done?","clojure.core/future?","clojure.core/gensym","clojure.core/get","clojure.core/get-in","clojure.core/get-method","clojure.core/get-proxy-class","clojure.core/get-thread-bindings","clojure.core/get-validator","clojure.core/group-by","clojure.core/halt-when","clojure.core/hash","clojure.core/hash-combine","clojure.core/hash-map","clojure.core/hash-ordered-coll","clojure.core/hash-set","clojure.core/hash-unordered-coll","clojure.core/ident?","clojure.core/identical?","clojure.core/identity","clojure.core/ifn?","clojure.core/in-ns","clojure.core/inc","clojure.core/inc'","clojure.core/indexed?","clojure.core/infinite?","clojure.core/init-proxy","clojure.core/inst-ms","clojure.core/inst-ms*","clojure.core/inst?","clojure.core/instance?","clojure.core/int","clojure.core/int-array","clojure.core/int?","clojure.core/integer?","clojure.core/interleave","clojure.core/intern","clojure.core/interpose","clojure.core/into","clojure.core/into-array","clojure.core/ints","clojure.core/isa?","clojure.core/iterate","clojure.core/iteration","clojure.core/iterator-seq","clojure.core/juxt","clojure.core/keep","clojure.core/keep-indexed","clojure.core/key","clojure.core/keys","clojure.core/keyword","clojure.core/keyword?","clojure.core/last","clojure.core/line-seq","clojure.core/list","clojure.core/list*","clojure.core/list?","clojure.core/load","clojure.core/load-file","clojure.core/load-reader","clojure.core/load-string","clojure.core/loaded-libs","clojure.core/long","clojure.core/long-array","clojure.core/longs","clojure.core/macroexpand","clojure.core/macroexpand-1","clojure.core/make-array","clojure.core/make-hierarchy","clojure.core/map","clojure.core/map-entry?","clojure.core/map-indexed","clojure.core/map?","clojure.core/mapcat","clojure.core/mapv","clojure.core/max","clojure.core/max-key","clojure.core/memoize","clojure.core/merge","clojure.core/merge-with","clojure.core/meta","clojure.core/method-sig","clojure.core/methods","clojure.core/min","clojure.core/min-key","clojure.core/mix-collection-hash","clojure.core/mod","clojure.core/munge","clojure.core/name","clojure.core/namespace","clojure.core/namespace-munge","clojure.core/nat-int?","clojure.core/neg-int?","clojure.core/neg?","clojure.core/newline","clojure.core/next","clojure.core/nfirst","clojure.core/nil?","clojure.core/nnext","clojure.core/not","clojure.core/not-any?","clojure.core/not-empty","clojure.core/not-every?","clojure.core/not=","clojure.core/ns-aliases","clojure.core/ns-imports","clojure.core/ns-interns","clojure.core/ns-map","clojure.core/ns-name","clojure.core/ns-publics","clojure.core/ns-refers","clojure.core/ns-resolve","clojure.core/ns-unalias","clojure.core/ns-unmap","clojure.core/nth","clojure.core/nthnext","clojure.core/nthrest","clojure.core/num","clojure.core/number?","clojure.core/numerator","clojure.core/object-array","clojure.core/odd?","clojure.core/parents","clojure.core/parse-boolean","clojure.core/parse-double","clojure.core/parse-long","clojure.core/parse-uuid","clojure.core/partial","clojure.core/partition","clojure.core/partition-all","clojure.core/partition-by","clojure.core/pcalls","clojure.core/peek","clojure.core/persistent!","clojure.core/pmap","clojure.core/pop","clojure.core/pop!","clojure.core/pop-thread-bindings","clojure.core/pos-int?","clojure.core/pos?","clojure.core/pr","clojure.core/pr-str","clojure.core/prefer-method","clojure.core/prefers","clojure.core/print","clojure.core/print-ctor","clojure.core/print-dup","clojure.core/print-method","clojure.core/print-simple","clojure.core/print-str","clojure.core/printf","clojure.core/println","clojure.core/println-str","clojure.core/prn","clojure.core/prn-str","clojure.core/promise","clojure.core/proxy-call-with-super","clojure.core/proxy-mappings","clojure.core/proxy-name","clojure.core/push-thread-bindings","clojure.core/qualified-ident?","clojure.core/qualified-keyword?","clojure.core/qualified-symbol?","clojure.core/quot","clojure.core/rand","clojure.core/rand-int","clojure.core/rand-nth","clojure.core/random-sample","clojure.core/random-uuid","clojure.core/range","clojure.core/ratio?","clojure.core/rational?","clojure.core/rationalize","clojure.core/re-find","clojure.core/re-groups","clojure.core/re-matcher","clojure.core/re-matches","clojure.core/re-pattern","clojure.core/re-seq","clojure.core/read","clojure.core/read+string","clojure.core/read-line","clojure.core/read-string","clojure.core/reader-conditional","clojure.core/reader-conditional?","clojure.core/realized?","clojure.core/record?","clojure.core/reduce","clojure.core/reduce-kv","clojure.core/reduced","clojure.core/reduced?","clojure.core/reductions","clojure.core/ref","clojure.core/ref-history-count","clojure.core/ref-max-history","clojure.core/ref-min-history","clojure.core/ref-set","clojure.core/refer","clojure.core/release-pending-sends","clojure.core/rem","clojure.core/remove","clojure.core/remove-all-methods","clojure.core/remove-method","clojure.core/remove-ns","clojure.core/remove-tap","clojure.core/remove-watch","clojure.core/repeat","clojure.core/repeatedly","clojure.core/replace","clojure.core/replicate","clojure.core/require","clojure.core/requiring-resolve","clojure.core/reset!","clojure.core/reset-meta!","clojure.core/reset-vals!","clojure.core/resolve","clojure.core/rest","clojure.core/restart-agent","clojure.core/resultset-seq","clojure.core/reverse","clojure.core/reversible?","clojure.core/rseq","clojure.core/rsubseq","clojure.core/run!","clojure.core/satisfies?","clojure.core/second","clojure.core/select-keys","clojure.core/send","clojure.core/send-off","clojure.core/send-via","clojure.core/seq","clojure.core/seq-to-map-for-destructuring","clojure.core/seq?","clojure.core/seqable?","clojure.core/seque","clojure.core/sequence","clojure.core/sequential?","clojure.core/set","clojure.core/set-agent-send-executor!","clojure.core/set-agent-send-off-executor!","clojure.core/set-error-handler!","clojure.core/set-error-mode!","clojure.core/set-validator!","clojure.core/set?","clojure.core/short","clojure.core/short-array","clojure.core/shorts","clojure.core/shuffle","clojure.core/shutdown-agents","clojure.core/simple-ident?","clojure.core/simple-keyword?","clojure.core/simple-symbol?","clojure.core/slurp","clojure.core/some","clojure.core/some-fn","clojure.core/some?","clojure.core/sort","clojure.core/sort-by","clojure.core/sorted-map","clojure.core/sorted-map-by","clojure.core/sorted-set","clojure.core/sorted-set-by","clojure.core/sorted?","clojure.core/special-symbol?","clojure.core/spit","clojure.core/split-at","clojure.core/split-with","clojure.core/str","clojure.core/string?","clojure.core/struct","clojure.core/struct-map","clojure.core/subs","clojure.core/subseq","clojure.core/subvec","clojure.core/supers","clojure.core/swap!","clojure.core/swap-vals!","clojure.core/symbol","clojure.core/symbol?","clojure.core/tagged-literal","clojure.core/tagged-literal?","clojure.core/take","clojure.core/take-last","clojure.core/take-nth","clojure.core/take-while","clojure.core/tap>","clojure.core/test","clojure.core/the-ns","clojure.core/thread-bound?","clojure.core/to-array","clojure.core/to-array-2d","clojure.core/trampoline","clojure.core/transduce","clojure.core/transient","clojure.core/tree-seq","clojure.core/true?","clojure.core/type","clojure.core/unchecked-add","clojure.core/unchecked-add-int","clojure.core/unchecked-byte","clojure.core/unchecked-char","clojure.core/unchecked-dec","clojure.core/unchecked-dec-int","clojure.core/unchecked-divide-int","clojure.core/unchecked-double","clojure.core/unchecked-float","clojure.core/unchecked-inc","clojure.core/unchecked-inc-int","clojure.core/unchecked-int","clojure.core/unchecked-long","clojure.core/unchecked-multiply","clojure.core/unchecked-multiply-int","clojure.core/unchecked-negate","clojure.core/unchecked-negate-int","clojure.core/unchecked-remainder-int","clojure.core/unchecked-short","clojure.core/unchecked-subtract","clojure.core/unchecked-subtract-int","clojure.core/underive","clojure.core/unreduced","clojure.core/unsigned-bit-shift-right","clojure.core/update","clojure.core/update-in","clojure.core/update-keys","clojure.core/update-proxy","clojure.core/update-vals","clojure.core/uri?","clojure.core/use","clojure.core/uuid?","clojure.core/val","clojure.core/vals","clojure.core/var-get","clojure.core/var-set","clojure.core/var?","clojure.core/vary-meta","clojure.core/vec","clojure.core/vector","clojure.core/vector-of","clojure.core/vector?","clojure.core/volatile!","clojure.core/volatile?","clojure.core/vreset!","clojure.core/with-bindings*","clojure.core/with-meta","clojure.core/with-redefs-fn","clojure.core/xml-seq","clojure.core/zero?","clojure.core/zipmap","coll?","commute","comp","comparator","compare","compare-and-set!","compile","complement","completing","concat","conj","conj!","cons","constantly","construct-proxy","contains?","count","counted?","create-ns","create-struct","cycle","dec","dec'","decimal?","dedupe","delay?","deliver","denominator","deref","derive","descendants","destructure","disj","disj!","dissoc","dissoc!","distinct","distinct?","doall","dorun","double","double-array","double?","doubles","drop","drop-last","drop-while","eduction","empty","empty?","ensure","ensure-reduced","enumeration-seq","error-handler","error-mode","eval","even?","every-pred","every?","ex-cause","ex-data","ex-info","ex-message","extend","extenders","extends?","false?","ffirst","file-seq","filter","filterv","find","find-keyword","find-ns","find-protocol-impl","find-protocol-method","find-var","first","flatten","float","float-array","float?","floats","flush","fn?","fnext","fnil","force","format","frequencies","future-call","future-cancel","future-cancelled?","future-done?","future?","gensym","get","get-in","get-method","get-proxy-class","get-thread-bindings","get-validator","group-by","halt-when","hash","hash-combine","hash-map","hash-ordered-coll","hash-set","hash-unordered-coll","ident?","identical?","identity","ifn?","in-ns","inc","inc'","indexed?","infinite?","init-proxy","inst-ms","inst-ms*","inst?","instance?","int","int-array","int?","integer?","interleave","intern","interpose","into","into-array","ints","isa?","iterate","iteration","iterator-seq","juxt","keep","keep-indexed","key","keys","keyword","keyword?","last","line-seq","list","list*","list?","load","load-file","load-reader","load-string","loaded-libs","long","long-array","longs","macroexpand","macroexpand-1","make-array","make-hierarchy","map","map-entry?","map-indexed","map?","mapcat","mapv","max","max-key","memoize","merge","merge-with","meta","method-sig","methods","min","min-key","mix-collection-hash","mod","munge","name","namespace","namespace-munge","nat-int?","neg-int?","neg?","newline","next","nfirst","nil?","nnext","not","not-any?","not-empty","not-every?","not=","ns-aliases","ns-imports","ns-interns","ns-map","ns-name","ns-publics","ns-refers","ns-resolve","ns-unalias","ns-unmap","nth","nthnext","nthrest","num","number?","numerator","object-array","odd?","parents","parse-boolean","parse-double","parse-long","parse-uuid","partial","partition","partition-all","partition-by","pcalls","peek","persistent!","pmap","pop","pop!","pop-thread-bindings","pos-int?","pos?","pr","pr-str","prefer-method","prefers","print","print-ctor","print-dup","print-method","print-simple","print-str","printf","println","println-str","prn","prn-str","promise","proxy-call-with-super","proxy-mappings","proxy-name","push-thread-bindings","qualified-ident?","qualified-keyword?","qualified-symbol?","quot","rand","rand-int","rand-nth","random-sample","random-uuid","range","ratio?","rational?","rationalize","re-find","re-groups","re-matcher","re-matches","re-pattern","re-seq","read","read+string","read-line","read-string","reader-conditional","reader-conditional?","realized?","record?","reduce","reduce-kv","reduced","reduced?","reductions","ref","ref-history-count","ref-max-history","ref-min-history","ref-set","refer","release-pending-sends","rem","remove","remove-all-methods","remove-method","remove-ns","remove-tap","remove-watch","repeat","repeatedly","replace","replicate","require","requiring-resolve","reset!","reset-meta!","reset-vals!","resolve","rest","restart-agent","resultset-seq","reverse","reversible?","rseq","rsubseq","run!","satisfies?","second","select-keys","send","send-off","send-via","seq","seq-to-map-for-destructuring","seq?","seqable?","seque","sequence","sequential?","set","set-agent-send-executor!","set-agent-send-off-executor!","set-error-handler!","set-error-mode!","set-validator!","set?","short","short-array","shorts","shuffle","shutdown-agents","simple-ident?","simple-keyword?","simple-symbol?","slurp","some","some-fn","some?","sort","sort-by","sorted-map","sorted-map-by","sorted-set","sorted-set-by","sorted?","special-symbol?","spit","split-at","split-with","str","string?","struct","struct-map","subs","subseq","subvec","supers","swap!","swap-vals!","symbol","symbol?","tagged-literal","tagged-literal?","take","take-last","take-nth","take-while","tap>","test","the-ns","thread-bound?","to-array","to-array-2d","trampoline","transduce","transient","tree-seq","true?","type","unchecked-add","unchecked-add-int","unchecked-byte","unchecked-char","unchecked-dec","unchecked-dec-int","unchecked-divide-int","unchecked-double","unchecked-float","unchecked-inc","unchecked-inc-int","unchecked-int","unchecked-long","unchecked-multiply","unchecked-multiply-int","unchecked-negate","unchecked-negate-int","unchecked-remainder-int","unchecked-short","unchecked-subtract","unchecked-subtract-int","underive","unreduced","unsigned-bit-shift-right","update","update-in","update-keys","update-proxy","update-vals","uri?","use","uuid?","val","vals","var-get","var-set","var?","vary-meta","vec","vector","vector-of","vector?","volatile!","volatile?","vreset!","with-bindings*","with-meta","with-redefs-fn","xml-seq","zero?","zipmap"], + \ 'clojureMacro': ["->","->>","..","amap","and","areduce","as->","assert","binding","bound-fn","clojure.core/->","clojure.core/->>","clojure.core/..","clojure.core/amap","clojure.core/and","clojure.core/areduce","clojure.core/as->","clojure.core/assert","clojure.core/binding","clojure.core/bound-fn","clojure.core/comment","clojure.core/declare","clojure.core/delay","clojure.core/dosync","clojure.core/doto","clojure.core/extend-protocol","clojure.core/extend-type","clojure.core/for","clojure.core/future","clojure.core/gen-class","clojure.core/gen-interface","clojure.core/import","clojure.core/io!","clojure.core/lazy-cat","clojure.core/lazy-seq","clojure.core/locking","clojure.core/memfn","clojure.core/ns","clojure.core/or","clojure.core/proxy","clojure.core/proxy-super","clojure.core/pvalues","clojure.core/refer-clojure","clojure.core/reify","clojure.core/some->","clojure.core/some->>","clojure.core/sync","clojure.core/time","clojure.core/vswap!","clojure.core/with-bindings","clojure.core/with-in-str","clojure.core/with-loading-context","clojure.core/with-local-vars","clojure.core/with-open","clojure.core/with-out-str","clojure.core/with-precision","clojure.core/with-redefs","comment","declare","delay","dosync","doto","extend-protocol","extend-type","for","future","gen-class","gen-interface","import","io!","lazy-cat","lazy-seq","locking","memfn","ns","or","proxy","proxy-super","pvalues","refer-clojure","reify","some->","some->>","sync","time","vswap!","with-bindings","with-in-str","with-loading-context","with-local-vars","with-open","with-out-str","with-precision","with-redefs"], + \ 'clojureRepeat': ["clojure.core/doseq","clojure.core/dotimes","clojure.core/loop","clojure.core/while","doseq","dotimes","loop","loop*","recur","while"], + \ 'clojureSpecial': ["&",".","clojure.core/fn","clojure.core/import*","clojure.core/let","clojure.core/letfn","do","fn","fn*","let","let*","letfn","letfn*","monitor-enter","monitor-exit","new","quote","reify*","set!","var"], + \ 'clojureVariable': ["*1","*2","*3","*agent*","*allow-unresolved-vars*","*assert*","*clojure-version*","*command-line-args*","*compile-files*","*compile-path*","*compiler-options*","*data-readers*","*default-data-reader-fn*","*e","*err*","*file*","*flush-on-newline*","*fn-loader*","*in*","*math-context*","*ns*","*out*","*print-dup*","*print-length*","*print-level*","*print-meta*","*print-namespace-maps*","*print-readably*","*read-eval*","*reader-resolver*","*source-path*","*suppress-read*","*unchecked-math*","*use-context-classloader*","*verbose-defrecords*","*warn-on-reflection*","EMPTY-NODE","Inst","char-escape-string","char-name-string","clojure.core/*1","clojure.core/*2","clojure.core/*3","clojure.core/*agent*","clojure.core/*allow-unresolved-vars*","clojure.core/*assert*","clojure.core/*clojure-version*","clojure.core/*command-line-args*","clojure.core/*compile-files*","clojure.core/*compile-path*","clojure.core/*compiler-options*","clojure.core/*data-readers*","clojure.core/*default-data-reader-fn*","clojure.core/*e","clojure.core/*err*","clojure.core/*file*","clojure.core/*flush-on-newline*","clojure.core/*fn-loader*","clojure.core/*in*","clojure.core/*math-context*","clojure.core/*ns*","clojure.core/*out*","clojure.core/*print-dup*","clojure.core/*print-length*","clojure.core/*print-level*","clojure.core/*print-meta*","clojure.core/*print-namespace-maps*","clojure.core/*print-readably*","clojure.core/*read-eval*","clojure.core/*reader-resolver*","clojure.core/*source-path*","clojure.core/*suppress-read*","clojure.core/*unchecked-math*","clojure.core/*use-context-classloader*","clojure.core/*verbose-defrecords*","clojure.core/*warn-on-reflection*","clojure.core/EMPTY-NODE","clojure.core/Inst","clojure.core/char-escape-string","clojure.core/char-name-string","clojure.core/default-data-readers","clojure.core/primitives-classnames","clojure.core/print-dup","clojure.core/print-method","clojure.core/unquote","clojure.core/unquote-splicing","default-data-readers","primitives-classnames","print-dup","print-method","unquote","unquote-splicing"] + \ } function! s:syntax_keyword(dict) for key in keys(a:dict) @@ -81,8 +81,6 @@ syntax match clojureSymbol "\v%([a-zA-Z!$&*_+=|<.>?-]|[^\x00-\x7F])+%(:?%([a-zA- " NB. Correct matching of radix literals was removed for better performance. syntax match clojureNumber "\v<[-+]?%(%([2-9]|[12]\d|3[0-6])[rR][[:alnum:]]+|%(0\o*|0x\x+|[1-9]\d*)N?|%(0|[1-9]\d*|%(0|[1-9]\d*)\.\d*)%(M|[eE][-+]?\d+)?|%(0|[1-9]\d*)/%(0|[1-9]\d*))>" -syntax match clojureVarArg "&" - syntax match clojureQuote "\v['`]" syntax match clojureUnquote "\v\~\@?" syntax match clojureMeta "\^" @@ -97,8 +95,8 @@ syntax region clojureRegexpQuoted start=/\\Q/ms=e+1 skip=/\\\\\|\\"/ end=/\\E/me syntax region clojureRegexpQuote start=/\\Q/ skip=/\\\\\|\\"/ end=/\\E/ end=/"/me=s-1 contains=clojureRegexpQuoted keepend contained " -*- CHARACTER PROPERTY CLASSES -*- -" Generated from https://github.com/clojure-vim/clojure.vim/blob/62b215f079ce0f3834fd295c7a7f6bd8cc54bcc3/clj/src/vim_clojure_static/generate.clj -" Java version 17 +" Generated from https://github.com/clojure-vim/clojure.vim/blob/fd280e33e84c88e97860930557dba3ff80b1a82d/clj/src/vim_clojure_static/generate.clj +" Java version 17.0.2 syntax match clojureRegexpPosixCharClass "\v\\[pP]\{%(Cntrl|A%(l%(pha|num)|SCII)|Space|Graph|Upper|P%(rint|unct)|Blank|XDigit|Digit|Lower)\}" contained display syntax match clojureRegexpJavaCharClass "\v\\[pP]\{java%(Whitespace|JavaIdentifier%(Part|Start)|SpaceChar|Mirrored|TitleCase|I%(SOControl|de%(ographic|ntifierIgnorable))|D%(efined|igit)|U%(pperCase|nicodeIdentifier%(Part|Start))|L%(etter%(OrDigit)?|owerCase)|Alphabetic)\}" contained display syntax match clojureRegexpUnicodeCharClass "\v\\[pP]\{\cIs%(l%(owercase|etter)|hex%(digit|_digit)|w%(hite%(_space|space)|ord)|noncharacter%(_code_point|codepoint)|p%(rint|unctuation)|ideographic|graph|a%(l%(num|phabetic)|ssigned)|uppercase|join%(control|_control)|titlecase|blank|digit|control)\}" contained display @@ -127,7 +125,7 @@ syntax match clojureRegexpMod "\v\(@<=\?%(\<?[=!]|\>)" contained display syntax match clojureRegexpMod "\v\(@<=\?\<[[:alpha:]]+\>" contained display syntax region clojureRegexpGroup start="(" skip=/\\\\\|\\)/ end=")" matchgroup=clojureRegexpGroup contained contains=clojureRegexpMod,clojureRegexpQuantifier,clojureRegexpBoundary,clojureRegexpEscape,@clojureRegexpCharClasses -syntax region clojureRegexp start=/\#"/ skip=/\\\\\|\\"/ end=/"/ contains=@clojureRegexpCharClasses,clojureRegexpEscape,clojureRegexpQuote,clojureRegexpBoundary,clojureRegexpQuantifier,clojureRegexpOr,clojureRegexpBackRef,clojureRegexpGroup keepend +syntax region clojureRegexp matchgroup=clojureRegexpDelimiter start=/\#"/ skip=/\\\\\|\\"/ end=/"/ contains=@clojureRegexpCharClasses,clojureRegexpEscape,clojureRegexpQuote,clojureRegexpBoundary,clojureRegexpQuantifier,clojureRegexpOr,clojureRegexpBackRef,clojureRegexpGroup keepend syntax keyword clojureCommentTodo contained FIXME XXX TODO BUG NOTE HACK FIXME: XXX: TODO: BUG: NOTE: HACK: @@ -149,8 +147,8 @@ if exists('g:clojure_discard_macro') && g:clojure_discard_macro endif " -*- TOP CLUSTER -*- -" Generated from https://github.com/clojure-vim/clojure.vim/blob/62b215f079ce0f3834fd295c7a7f6bd8cc54bcc3/clj/src/vim_clojure_static/generate.clj -syntax cluster clojureTop contains=@Spell,clojureAnonArg,clojureBoolean,clojureCharacter,clojureComment,clojureCond,clojureConstant,clojureDefine,clojureDeref,clojureDiscard,clojureDispatch,clojureError,clojureException,clojureFunc,clojureKeyword,clojureMacro,clojureMap,clojureMeta,clojureNumber,clojureQuote,clojureRegexp,clojureRepeat,clojureSexp,clojureSpecial,clojureString,clojureSymbol,clojureUnquote,clojureVarArg,clojureVariable,clojureVector +" Generated from https://github.com/clojure-vim/clojure.vim/blob/fd280e33e84c88e97860930557dba3ff80b1a82d/clj/src/vim_clojure_static/generate.clj +syntax cluster clojureTop contains=@Spell,clojureAnonArg,clojureBoolean,clojureCharacter,clojureComment,clojureCond,clojureConstant,clojureDefine,clojureDeref,clojureDiscard,clojureDispatch,clojureError,clojureException,clojureFunc,clojureKeyword,clojureMacro,clojureMap,clojureMeta,clojureNumber,clojureQuote,clojureRegexp,clojureRepeat,clojureSexp,clojureSpecial,clojureString,clojureSymbol,clojureUnquote,clojureVariable,clojureVector syntax region clojureSexp matchgroup=clojureParen start="(" end=")" contains=@clojureTop fold syntax region clojureVector matchgroup=clojureParen start="\[" end="]" contains=@clojureTop fold @@ -171,6 +169,7 @@ highlight default link clojureStringDelimiter String highlight default link clojureStringEscape Character highlight default link clojureRegexp Constant +highlight default link clojureRegexpDelimiter Constant highlight default link clojureRegexpEscape Character highlight default link clojureRegexpCharClass SpecialChar highlight default link clojureRegexpPosixCharClass clojureRegexpCharClass @@ -195,7 +194,6 @@ highlight default link clojureMacro Macro highlight default link clojureRepeat Repeat highlight default link clojureSpecial Special -highlight default link clojureVarArg Special highlight default link clojureQuote SpecialChar highlight default link clojureUnquote SpecialChar highlight default link clojureMeta SpecialChar diff --git a/runtime/syntax/coco.vim b/runtime/syntax/coco.vim index ae32348bcb..dc21314e35 100644 --- a/runtime/syntax/coco.vim +++ b/runtime/syntax/coco.vim @@ -1,7 +1,7 @@ " Vim syntax file " Language: Coco/R " Maintainer: Ashish Shukla <wahjava@gmail.com> -" Last Change: 2007 Aug 10 +" Last Change: 2022 Jun 14 " Remark: Coco/R syntax partially implemented. " License: Vim license @@ -30,3 +30,4 @@ hi def link cocoOperator Operator hi def link cocoProductionCode Statement hi def link cocoPragma Special +let b:current_syntax = 'coco' diff --git a/runtime/syntax/confini.vim b/runtime/syntax/confini.vim new file mode 100644 index 0000000000..823d417a81 --- /dev/null +++ b/runtime/syntax/confini.vim @@ -0,0 +1,12 @@ +" Vim syntax file +" Language: confini + +" Quit if a syntax file was already loaded +if exists("b:current_syntax") + finish +endif + +" Use the cfg syntax for now, it's similar. +runtime! syntax/cfg.vim + +let b:current_syntax = 'confini' 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/debchangelog.vim b/runtime/syntax/debchangelog.vim index 79352c0827..2efd919772 100644 --- a/runtime/syntax/debchangelog.vim +++ b/runtime/syntax/debchangelog.vim @@ -3,7 +3,7 @@ " Maintainer: Debian Vim Maintainers " Former Maintainers: Gerfried Fuchs <alfie@ist.org> " Wichert Akkerman <wakkerma@debian.org> -" Last Change: 2021 Oct 19 +" Last Change: 2022 May 01 " URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/syntax/debchangelog.vim " Standard syntax initialization @@ -24,7 +24,7 @@ let s:supported = [ \ 'jessie', 'stretch', 'buster', 'bullseye', 'bookworm', \ 'trixie', 'sid', 'rc-buggy', \ - \ 'trusty', 'xenial', 'bionic', 'focal', 'hirsute', 'impish', 'jammy', + \ 'trusty', 'xenial', 'bionic', 'focal', 'impish', 'jammy', 'kinetic', \ 'devel' \ ] let s:unsupported = [ @@ -35,7 +35,7 @@ let s:unsupported = [ \ 'gutsy', 'hardy', 'intrepid', 'jaunty', 'karmic', 'lucid', \ 'maverick', 'natty', 'oneiric', 'precise', 'quantal', 'raring', 'saucy', \ 'utopic', 'vivid', 'wily', 'yakkety', 'zesty', 'artful', 'cosmic', - \ 'disco', 'eoan', 'groovy' + \ 'disco', 'eoan', 'hirsute', 'groovy' \ ] let &cpo=s:cpo diff --git a/runtime/syntax/debcontrol.vim b/runtime/syntax/debcontrol.vim index 8b65ece4ca..4c7fb5dd63 100644 --- a/runtime/syntax/debcontrol.vim +++ b/runtime/syntax/debcontrol.vim @@ -3,7 +3,7 @@ " Maintainer: Debian Vim Maintainers " Former Maintainers: Gerfried Fuchs <alfie@ist.org> " Wichert Akkerman <wakkerma@debian.org> -" Last Change: 2021 Nov 26 +" Last Change: 2022 May 11 " URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/syntax/debcontrol.vim " Standard syntax initialization @@ -17,7 +17,7 @@ set cpo&vim " Should match case except for the keys of each field syn case match -syn iskeyword @,48-57,-,/ +syn iskeyword @,48-57,- " Everything that is not explicitly matched by the rules below syn match debcontrolElse "^.*$" diff --git a/runtime/syntax/debsources.vim b/runtime/syntax/debsources.vim index 4b4c497f18..e3ec6e6598 100644 --- a/runtime/syntax/debsources.vim +++ b/runtime/syntax/debsources.vim @@ -2,7 +2,7 @@ " Language: Debian sources.list " Maintainer: Debian Vim Maintainers " Former Maintainer: Matthijs Mohlmann <matthijs@cacholong.nl> -" Last Change: 2021 Oct 19 +" Last Change: 2022 May 01 " URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/syntax/debsources.vim " Standard syntax initialization @@ -26,7 +26,7 @@ let s:supported = [ \ 'jessie', 'stretch', 'buster', 'bullseye', 'bookworm', \ 'trixie', 'sid', 'rc-buggy', \ - \ 'trusty', 'xenial', 'bionic', 'focal', 'hirsute', 'impish', 'jammy', + \ 'trusty', 'xenial', 'bionic', 'focal', 'impish', 'jammy', 'kinetic', \ 'devel' \ ] let s:unsupported = [ @@ -37,7 +37,7 @@ let s:unsupported = [ \ 'gutsy', 'hardy', 'intrepid', 'jaunty', 'karmic', 'lucid', \ 'maverick', 'natty', 'oneiric', 'precise', 'quantal', 'raring', 'saucy', \ 'utopic', 'vivid', 'wily', 'yakkety', 'zesty', 'artful', 'cosmic', - \ 'disco', 'eoan', 'groovy' + \ 'disco', 'eoan', 'hirsute', 'groovy' \ ] let &cpo=s:cpo diff --git a/runtime/syntax/dep3patch.vim b/runtime/syntax/dep3patch.vim index 8b2cee629c..cb0eda8931 100644 --- a/runtime/syntax/dep3patch.vim +++ b/runtime/syntax/dep3patch.vim @@ -1,7 +1,7 @@ " Vim syntax file " Language: Debian DEP3 Patch headers " Maintainer: Gabriel Filion <gabster@lelutin.ca> -" Last Change: 2021-01-09 +" Last Change: 2022 Apr 06 " URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/syntax/dep3patch.vim " " Specification of the DEP3 patch header format is available at: @@ -28,7 +28,7 @@ syn region dep3patchMultiField matchgroup=dep3patchKey start="^Bug\%(-[[:graph:] syn region dep3patchMultiField matchgroup=dep3patchKey start="^Forwarded\ze: *" end="$" contained contains=dep3patchHTTPUrl,dep3patchForwardedShort oneline keepend syn region dep3patchMultiField matchgroup=dep3patchKey start="^\%(Author\|From\)\ze: *" end="$" contained contains=dep3patchEmail oneline keepend syn region dep3patchMultiField matchgroup=dep3patchKey start="^\%(Reviewed-by\|Acked-by\)\ze: *" end="$" contained contains=dep3patchEmail oneline keepend -syn region dep3patchMultiField matchgroup=dep3patchKey start="^Last-Updated\ze: *" end="$" contained contains=dep3patchISODate oneline keepend +syn region dep3patchMultiField matchgroup=dep3patchKey start="^Last-Update\ze: *" end="$" contained contains=dep3patchISODate oneline keepend syn region dep3patchMultiField matchgroup=dep3patchKey start="^Applied-Upstream\ze: *" end="$" contained contains=dep3patchHTTPUrl,dep3patchCommitID oneline keepend syn match dep3patchHTTPUrl contained "\vhttps?://[[:alnum:]][-[:alnum:]]*[[:alnum:]]?(\.[[:alnum:]][-[:alnum:]]*[[:alnum:]]?)*\.[[:alpha:]][-[:alnum:]]*[[:alpha:]]?(:\d+)?(/[^[:space:]]*)?$" diff --git a/runtime/syntax/dirpager.vim b/runtime/syntax/dirpager.vim index 40137e4936..e93420f3ab 100644 --- a/runtime/syntax/dirpager.vim +++ b/runtime/syntax/dirpager.vim @@ -6,7 +6,7 @@ " Description: display directory content inside Vim with syntax " highlighting " File: runtime/syntax/dirpager.vim -" Last Change: 2012 May 19 +" Last Change: 2022 Jun 14 " Modeline: vim: ts=8:sw=2:sts=2: " " Credits: dirpager.vim is derived from Nikolai Weibulls dircolors.vim diff --git a/runtime/syntax/doxygen.vim b/runtime/syntax/doxygen.vim index 167b17cd0f..357c4302cf 100644 --- a/runtime/syntax/doxygen.vim +++ b/runtime/syntax/doxygen.vim @@ -120,7 +120,7 @@ try " end=+\(\n\s*\*\=\s*\([@\\]\([npcbea]\>\|em\>\|ref\>\|link\>\|f\$\|[$\\&<>#]\)\@!\)\|\s*$\)\@=+ "syn region doxygenBriefLine contained start=+\<\k+ skip=+^\s*\(\*/\@!\s*\)\=\(\<\|[@\\]\<\([npcbea]\>\|em\>\|ref\|link\>\>\|f\$\|[$\\&<>#]\)\|[^ \t\\@*]\)+ end=+^+ contains=doxygenContinueCommentWhite,doxygenSmallSpecial,@doxygenHtmlGroup,doxygenTODO,doxygenHyperLink,doxygenHashLink,@Spell skipwhite keepend matchgroup=xxx -syn region doxygenBriefLine contained start=+\<\k+ skip=+^\s*\(\*/\@!\s*\)\=\(\<\|[@\\]\<\([npcbea]\>\|em\>\|ref\|link\>\>\|f\$\|[$\\&<>#]\)\|[^ \t\\@*]\)+ end=+^+ skipwhite keepend matchgroup=xxx +syn region doxygenBriefLine contained start=+\<\k+ skip=+^\s*\(\*/\@!\s*\)\=\(\<\|[@\\]\<\([npcbea]\>\|em\>\|ref\|link\>\>\|f\$\|[$\\&<>#]\)\|[^ \t\\@*]\)+ end=+^+ skipwhite keepend matchgroup=xxx contains=@Spell " syn region doxygenBriefLine matchgroup=xxxy contained start=+\<\k.\++ skip=+^\s*\k+ end=+end+ skipwhite keepend "doxygenFindBriefSpecial, "" syn region doxygenSpecialMultilineDesc start=+.\++ contained contains=doxygenSpecialContinueCommentWhite,doxygenSmallSpecial,doxygenHyperLink,doxygenHashLink,@doxygenHtmlGroup,@Spell skipwhite keepend @@ -498,12 +498,16 @@ endif syn match doxygenLeadingWhite +\(^\s*\*\)\@<=\s*+ contained - " This is still a proposal, but won't do any harm. - aug doxygengroup - au! - au Syntax UserColor_reset nested call s:Doxygen_Hilights_Base() - au Syntax UserColor_{on,reset,enable} nested call s:Doxygen_Hilights() - aug END + " This is still a proposal, but it is probably fine. However, it doesn't + " work when 'syntax' is set in a modeline, catch the security error. + try + aug doxygengroup + au! + au Syntax UserColor_reset nested call s:Doxygen_Hilights_Base() + au Syntax UserColor_{on,reset,enable} nested call s:Doxygen_Hilights() + aug END + catch /E12:/ + endtry SynLink doxygenBody Comment diff --git a/runtime/syntax/dts.vim b/runtime/syntax/dts.vim index d75b9c178a..be51ab5b10 100644 --- a/runtime/syntax/dts.vim +++ b/runtime/syntax/dts.vim @@ -1,11 +1,12 @@ " Vim syntax file " Language: dts/dtsi (device tree files) " Maintainer: Daniel Mack <vim@zonque.org> -" Last Change: 2021 May 15 +" Last Change: 2022 Jun 14 if exists("b:current_syntax") finish endif +let b:current_syntax = 'dts' syntax region dtsComment start="/\*" end="\*/" syntax match dtsReference "&[[:alpha:][:digit:]_]\+" diff --git a/runtime/syntax/eruby.vim b/runtime/syntax/eruby.vim index 6bb24fe562..3d1bf715db 100644 --- a/runtime/syntax/eruby.vim +++ b/runtime/syntax/eruby.vim @@ -3,9 +3,9 @@ " Maintainer: Tim Pope <vimNOSPAM@tpope.org> " URL: https://github.com/vim-ruby/vim-ruby " Release Coordinator: Doug Kearns <dougkearns@gmail.com> -" Last Change: 2018 Jul 04 +" Last Change: 2022 Mar 18 -if &syntax !~# '\<eruby\>' || get(b:, 'current_syntax') =~# '\<eruby\>' +if exists("b:current_syntax") finish endif @@ -19,8 +19,6 @@ endif if &filetype =~ '^eruby\.' let b:eruby_subtype = matchstr(&filetype,'^eruby\.\zs\w\+') -elseif &filetype =~ '^.*\.eruby\>' - let b:eruby_subtype = matchstr(&filetype,'^.\{-\}\ze\.eruby\>') elseif !exists("b:eruby_subtype") && main_syntax == 'eruby' let s:lines = getline(1)."\n".getline(2)."\n".getline(3)."\n".getline(4)."\n".getline(5)."\n".getline("$") let b:eruby_subtype = matchstr(s:lines,'eruby_subtype=\zs\w\+') @@ -54,10 +52,10 @@ if !b:eruby_nest_level let b:eruby_nest_level = 1 endif -if get(b:, 'eruby_subtype', '') !~# '^\%(eruby\)\=$' && &syntax =~# '^eruby\>' +if exists("b:eruby_subtype") && b:eruby_subtype != '' && b:eruby_subtype !=? 'eruby' exe "runtime! syntax/".b:eruby_subtype.".vim" + unlet! b:current_syntax endif -unlet! b:current_syntax syn include @rubyTop syntax/ruby.vim syn cluster erubyRegions contains=erubyOneLiner,erubyBlock,erubyExpression,erubyComment @@ -72,7 +70,7 @@ exe 'syn region erubyComment matchgroup=erubyDelimiter start="<%\{1,'.b:erub hi def link erubyDelimiter PreProc hi def link erubyComment Comment -let b:current_syntax = matchstr(&syntax, '^.*\<eruby\>') +let b:current_syntax = 'eruby' if main_syntax == 'eruby' unlet main_syntax diff --git a/runtime/syntax/fetchmail.vim b/runtime/syntax/fetchmail.vim index 7a421050d0..50d6b82562 100644 --- a/runtime/syntax/fetchmail.vim +++ b/runtime/syntax/fetchmail.vim @@ -1,7 +1,10 @@ " Vim syntax file -" Language: fetchmail(1) RC File -" Previous Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2006-04-19 +" Language: fetchmail(1) RC File +" Maintainer: Doug Kearns <dougkearns@gmail.com> +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2022 Jul 02 + +" Version 6.4.3 if exists("b:current_syntax") finish @@ -10,64 +13,69 @@ endif let s:cpo_save = &cpo set cpo&vim -syn keyword fetchmailTodo contained FIXME TODO XXX NOTE +syn keyword fetchmailTodo contained FIXME TODO XXX NOTE -syn region fetchmailComment start='#' end='$' contains=fetchmailTodo,@Spell +syn region fetchmailComment start='#' end='$' contains=fetchmailTodo,@Spell -syn match fetchmailNumber display '\<\d\+\>' +syn match fetchmailNumber display '\<\d\+\>' -syn region fetchmailString start=+"+ skip=+\\\\\|\\"+ end=+"+ - \ contains=fetchmailStringEsc -syn region fetchmailString start=+'+ skip=+\\\\\|\\'+ end=+'+ - \ contains=fetchmailStringEsc +syn region fetchmailString start=+"+ skip=+\\\\\|\\"+ end=+"+ + \ contains=fetchmailStringEsc +syn region fetchmailString start=+'+ skip=+\\\\\|\\'+ end=+'+ + \ contains=fetchmailStringEsc -syn match fetchmailStringEsc contained '\\\([ntb]\|0\d*\|x\x\+\)' +syn match fetchmailStringEsc contained '\\\([ntb]\|0\d*\|x\x\+\)' -syn region fetchmailKeyword transparent matchgroup=fetchmailKeyword - \ start='\<poll\|skip\|defaults\>' - \ end='\<poll\|skip\|defaults\>' - \ contains=ALLBUT,fetchmailOptions,fetchmailSet +syn region fetchmailKeyword transparent matchgroup=fetchmailKeyword + \ start='\<poll\|skip\|defaults\>' + \ end='\<poll\|skip\|defaults\>' + \ contains=ALLBUT,fetchmailOptions,fetchmailSet syn keyword fetchmailServerOpts contained via proto[col] local[domains] port - \ auth[enticate] timeout envelope qvirtual aka - \ interface monitor plugin plugout dns - \ checkalias uidl interval netsec principal - \ esmtpname esmtppassword - \ sslcertck sslcertpath sslfingerprint + \ service auth[enticate] timeout envelope + \ qvirtual aka interface monitor plugin plugout + \ dns checkalias uidl interval tracepolls + \ principal esmtpname esmtppassword +" removed in 6.3.0 +syn keyword fetchmailServerOpts contained netsec +syn match fetchmailServerOpts contained '\<bad-header\>' syn match fetchmailServerOpts contained '\<no\_s\+\(envelope\|dns\|checkalias\|uidl\)' -syn keyword fetchmailUserOpts contained user[name] is to pass[word] ssl - \ sslcert sslkey sslproto folder smtphost - \ fetchdomains smtpaddress smtpname antispam - \ mda bsmtp preconnect postconnect keep flush - \ fetchall rewrite stripcr forcecr pass8bits - \ dropstatus dropdelivered mimedecode idle - \ limit warnings batchlimit fetchlimit expunge - \ tracepolls properties -syn match fetchmailUserOpts contained '\<no\_s\+\(keep\|flush\|fetchall\|rewrite\|stripcr\|forcecr\|pass8bits\|dropstatus\|dropdelivered\|mimedecode\|noidle\)' - -syn keyword fetchmailSpecial contained here there - -syn keyword fetchmailNoise and with has wants options -syn match fetchmailNoise display '[:;,]' - -syn keyword fetchmailSet nextgroup=fetchmailOptions skipwhite skipnl set - -syn keyword fetchmailOptions daemon postmaster bouncemail spambounce logfile - \ idfile syslog nosyslog properties -syn match fetchmailOptions '\<no\_s\+\(bouncemail\|spambounce\)' - -hi def link fetchmailComment Comment -hi def link fetchmailTodo Todo -hi def link fetchmailNumber Number -hi def link fetchmailString String -hi def link fetchmailStringEsc SpecialChar -hi def link fetchmailKeyword Keyword +syn keyword fetchmailUserOpts contained user[name] is to pass[word] ssl + \ sslcert sslcertck sslcertfile sslcertpath + \ sslfingerprint sslkey sslproto folder + \ smtphost fetchdomains smtpaddress smtpname + \ antispam mda bsmtp preconnect postconnect + \ keep flush limitflush fetchall rewrite + \ stripcr forcecr pass8bits dropstatus + \ dropdelivered mimedecode idle limit warnings + \ batchlimit fetchlimit fetchsizelimit + \ fastuidl expunge properties + \ sslcommonname +syn match fetchmailUserOpts contained '\<no\_s\+\(sslcertck\|keep\|flush\|fetchall\|rewrite\|stripcr\|forcecr\|pass8bits\|dropstatus\|dropdelivered\|mimedecode\|idle\)' + +syn keyword fetchmailSpecial contained here there + +syn keyword fetchmailNoise and with has wants options +syn match fetchmailNoise display '[:;,]' + +syn keyword fetchmailSet nextgroup=fetchmailOptions skipwhite skipnl set + +syn keyword fetchmailOptions daemon postmaster bouncemail spambounce + \ softbounce logfile pidfile idfile syslog properties +syn match fetchmailOptions '\<no\_s\+\(bouncemail\|spambounce\|softbounce\|syslog\)' + +hi def link fetchmailComment Comment +hi def link fetchmailTodo Todo +hi def link fetchmailNumber Number +hi def link fetchmailString String +hi def link fetchmailStringEsc SpecialChar +hi def link fetchmailKeyword Keyword hi def link fetchmailServerOpts Identifier -hi def link fetchmailUserOpts Identifier -hi def link fetchmailSpecial Special -hi def link fetchmailSet Keyword -hi def link fetchmailOptions Identifier +hi def link fetchmailUserOpts Identifier +hi def link fetchmailSpecial Special +hi def link fetchmailSet Keyword +hi def link fetchmailOptions Identifier let b:current_syntax = "fetchmail" diff --git a/runtime/syntax/freebasic.vim b/runtime/syntax/freebasic.vim index 68e838f393..7549d02555 100644 --- a/runtime/syntax/freebasic.vim +++ b/runtime/syntax/freebasic.vim @@ -1,14 +1,14 @@ " Vim syntax file -" Language: FreeBasic -" Maintainer: Mark Manning <markem@sim1.us> -" Updated: 10/9/2019 -" Version: 7.0b +" Language: FreeBASIC +" Maintainer: Doug Kearns <dougkearns@gmail.com> +" Previous Maintainer: Mark Manning <markem@sim1.us> +" Last Change: 2022 Jun 26 " " Description: " " Based originally on the work done by Allan Kelly <Allan.Kelly@ed.ac.uk> " Updated by Mark Manning <markem@sim1.us> -" Applied FreeBasic support to the already excellent support +" Applied FreeBASIC support to the already excellent support " for standard basic syntax (like QB). " " First version based on Micro$soft QBASIC circa @@ -17,215 +17,595 @@ " not a complete implementation yet. Send suggestions to " the maintainer. " +" TODO: split this into separate dialect-based files, possibly with a common base +" " Quit when a (custom) syntax file was already loaded (Taken from c.vim) " if exists("b:current_syntax") finish endif " +" Dialect detection +" +let s:lang = freebasic#GetDialect() +" +" Whitespace Errors +" +if exists("freebasic_space_errors") + if !exists("freebasic_no_trail_space_error") + syn match freebasicSpaceError display excludenl "\s\+$" + endif + if !exists("freebasic_no_tab_space_error") + syn match freebasicSpaceError display " \+\t"me=e-1 + endif +endif +" " Be sure to turn on the "case ignore" since current versions " of freebasic support both upper as well as lowercase " letters. - MEM 10/1/2006 " syn case ignore " -" This list of keywords is taken directly from the FreeBasic -" user's guide as presented by the FreeBasic online site. +" Do the Basic variables names first. This is because it +" is the most inclusive of the tests. Later on we change +" this so the identifiers are split up into the various +" types of identifiers like functions, basic commands and +" such. MEM 9/9/2006 +" +if s:lang =~# '\<\%(qb\|fblite\)\>' + syn iskeyword @,48-57,_,192-255,. + syn match freebasicIdentifier "\<\h\%(\w\|\.\)*\>" + syn match freebasicGenericFunction "\<\h\%(\w\|\.\)*\>\ze\s*(" +else + syn iskeyword @,48-57,_,192-255 + syn match freebasicIdentifier "\<\h\w*\>" + syn match freebasicGenericFunction "\<\h\w*\>\ze\s*(" +endif +" +" This list of keywords is taken directly from the FreeBASIC +" user's guide as presented by the FreeBASIC online site. " -syn keyword freebasicArrays ERASE LBOUND REDIM PRESERVE UBOUND +syn keyword freebasicArrays ERASE LBOUND PRESERVE REDIM UBOUND -syn keyword freebasicBitManipulation BIT BITRESET BITSET HIBYTE HIWORD LOBYTE LOWORD SHL SHR +" array.bi +syn keyword freebasicArrays ARRAYLEN ARRAYSIZE +if s:lang == "fb" + syn keyword freebasicArrays ArrayConstDescriptorPtr ArrayDescriptorPtr FBARRAY +endif -syn keyword freebasicCompilerSwitches DEFBYTE DEFDBL DEFINT DEFLNG DEFLNGINT DEFSHORT DEFSNG DEFSTR -syn keyword freebasicCompilerSwitches DEFUBYTE DEFUINT DEFULNGINT DEFUSHORT -syn match freebasicCompilerSwitches "\<option\s+\(BASE\|BYVAL\|DYNAMIC\|ESCAPE\|EXPLICIT\|NOKEYWORD\)\>" -syn match freebasicCompilerSwitches "\<option\s+\(PRIVATE\|STATIC\)\>" +if s:lang == "qb" + syn keyword freebasicAsm __ASM + syn match freebasicAsm "\<end\s\+__asm\>" +else + syn keyword freebasicAsm ASM + syn match freebasicAsm "\<end\s\+asm\>" +endif -syn region freebasicConditional start="\son\s+" skip=".*" end="gosub" -syn region freebasicConditional start="\son\s+" skip=".*" end="goto" -syn match freebasicConditional "\<select\s+case\>" -syn keyword freebasicConditional if iif then case else elseif with +if s:lang == "qb" + syn keyword freebasicBitManipulation __BIT __BITRESET __BITSET __HIBYTE __HIWORD __LOBYTE __LOWORD +else + syn keyword freebasicBitManipulation BIT BITRESET BITSET HIBYTE HIWORD LOBYTE LOWORD +endif -syn match freebasicConsole "\<open\s+\(CONS\|ERR\|PIPE\|SCRN\)\>" -syn keyword freebasicConsole BEEP CLS CSRLIN LOCATE PRINT POS SPC TAB VIEW WIDTH +if s:lang != "fb" + syn keyword freebasicCompilerSwitches DEFDBL DEFINT DEFLNG DEFSNG DEFSTR +endif +if s:lang == "qb" + syn keyword freebasicCompilerSwitches __DEFBYTE __DEFLONGINT __DEFSHORT __DEFUBYTE __DEFUINT __DEFULONGINT __DEFUSHORT +elseif s:lang == "fblite" || s:lang == "deprecated" + syn keyword freebasicCompilerSwitches DEFBYTE DEFLONGINT DEFSHORT DEFUBYTE DEFUINT DEFUILONGINT DEFUSHORT +endif -syn keyword freebasicDataTypes BYTE AS DIM CONST DOUBLE ENUM INTEGER LONG LONGINT SHARED SHORT STRING -syn keyword freebasicDataTypes SINGLE TYPE UBYTE UINTEGER ULONGINT UNION UNSIGNED USHORT WSTRING ZSTRING +syn match freebasicCompilerSwitches "\<option\s\+\%(BASE\|BYVAL\|DYNAMIC\|ESCAPE\|EXPLICIT\|GOSUB\|NOGOSUB\)\>" +syn match freebasicCompilerSwitches "\<option\s\+\%(NOKEYWORD\|PRIVATE\|STATIC\)\>" -syn keyword freebasicDateTime DATE DATEADD DATEDIFF DATEPART DATESERIAL DATEVALUE DAY HOUR MINUTE -syn keyword freebasicDateTime MONTH MONTHNAME NOW SECOND SETDATE SETTIME TIME TIMESERIAL TIMEVALUE -syn keyword freebasicDateTime TIMER YEAR WEEKDAY WEEKDAYNAME +syn keyword freebasicData DATA READ RESTORE -syn keyword freebasicDebug ASSERT STOP +syn keyword freebasicProgramFlow EXIT GOTO RETURN SLEEP +syn match freebasicProgramFlow "\<end\>" +if s:lang == "qb" + syn keyword freebasicProgramFlow __SLEEP +endif +if s:lang == "fblite" || s:lang == "qb" + syn keyword freebasicProgramFlow GOSUB +endif +if s:lang == "fb" || s:lang == "deprecated" + syn keyword freebasicProgramFlow SCOPE + syn match freebasicProgramFlow "\<end\s\+scope\>" +endif -syn keyword freebasicErrorHandling ERR ERL ERROR LOCAL RESUME -syn match freebasicErrorHandling "\<resume\s+next\>" -syn match freebasicErrorHandling "\<on\s+error\>" +if s:lang == "fblite" || s:lang == "qb" + syn region freebasicConditional matchgroup=freebasicConditional start="\<on\>" end="\<gosub\>" transparent + syn region freebasicConditional matchgroup=freebasicConditional start="\<on\>" end="\<goto\>" transparent +endif +syn keyword freebasicConditional IF THEN ELSE ELSEIF +if s:lang == "qb" + syn keyword freebasicConditional __IIF __WITH + syn match freebasicConditional "\<end\s\+__with\>" +else + syn keyword freebasicConditional IIF WITH + syn match freebasicConditional "\<end\s\+with\>" +endif +syn match freebasicConditional "\<end\s\+if\>" +syn match freebasicConditional "\<select\s\+case\>" +syn match freebasicConditional "\<case\>" +syn match freebasicConditional "\<case\s\+is\>" +syn match freebasicConditional "\<end\s\+select\>" -syn match freebasicFiles "\<get\s+#\>" -syn match freebasicFiles "\<input\s+#\>" -syn match freebasicFiles "\<line\s+input\s+#\>" -syn match freebasicFiles "\<put\s+#\>" -syn keyword freebasicFiles ACCESS APPEND BINARY BLOAD BSAVE CLOSE EOF FREEFILE INPUT LOC -syn keyword freebasicFiles LOCK LOF OPEN OUTPUT RANDOM RESET SEEK UNLOCK WRITE +syn keyword freebasicConsole BEEP CLS CSRLIN LOCATE PRINT POS SPC TAB USING VIEW WIDTH +syn match freebasicConsole "?" -syn keyword freebasicFunctions ALIAS ANY BYREF BYVAL CALL CDECL CONSTRUCTOR DESTRUCTOR -syn keyword freebasicFunctions DECLARE FUNCTION LIB OVERLOAD PASCAL STATIC SUB STDCALL -syn keyword freebasicFunctions VA_ARG VA_FIRST VA_NEXT +syn keyword freebasicDataTypes SINGLE DOUBLE INTEGER LONG +syn match freebasicDataTypes "\<string\>" +syn keyword freebasicDataTypes AS DIM CONST ENUM SHARED TYPE +syn match freebasicDataTypes "\<end\s\+enum\>" +syn match freebasicDataTypes "\<end\s\+type\>" +if s:lang == "qb" + syn keyword freebasicDataTypes __BOOLEAN __BYTE __LONGINT __SHORT __UBYTE __UINTEGER __ULONG __ULONGINT __UNSIGNED __USHORT __ZSTRING + syn match freebasicDataTypes "\<__WSTRING\>" + syn keyword freebasicDataTypes __EXPLICIT __EXTENDS __IMPLEMENTS __OBJECT __POINTER __PTR __SIZEOF __TYPEOF + syn keyword freebasicDataTypes __UNION + syn match freebasicDataTypes "\<end\s\+__union\>" +else + syn keyword freebasicDataTypes BOOLEAN BYTE LONGINT SHORT UBYTE UINTEGER ULONG ULONGINT UNSIGNED USHORT ZSTRING + syn match freebasicDataTypes "\<WSTRING\>" + syn keyword freebasicDataTypes EXPLICIT EXTENDS IMPLEMENTS OBJECT POINTER PTR SIZEOF TYPEOF + syn keyword freebasicDataTypes UNION + syn match freebasicDataTypes "\<end\s\+union\>" +endif +if s:lang == "fb" + syn keyword freebasicDataTypes BASE CLASS THIS VAR +endif -syn match freebasicGraphics "\<palette\s+get\>" -syn keyword freebasicGraphics ALPHA CIRCLE CLS COLOR CUSTOM DRAW FLIP GET -syn keyword freebasicGraphics IMAGECREATE IMAGEDESTROY LINE PAINT PALETTE PCOPY PMAP POINT -syn keyword freebasicGraphics PRESET PSET PUT RGB RGBA SCREEN SCREENCOPY SCREENINFO SCREENLIST -syn keyword freebasicGraphics SCREENLOCK SCREENPTR SCREENRES SCREENSET SCREENSYNC SCREENUNLOCK -syn keyword freebasicGraphics TRANS USING VIEW WINDOW +if s:lang == "qb" + syn match freebasicDateTime "\<\%(date\|time\)\$" +elseif s:lang == "fblite" || s:lang == "deprecated" + syn match freebasicDateTime "\<\%(date\|time\)\>\$\=" +else " fb + syn keyword freebasicDateTime DATE TIME +endif +syn keyword freebasicDateTime SETDATE SETTIME -syn match freebasicHardware "\<open\s+com\>" -syn keyword freebasicHardware INP OUT WAIT LPT LPOS LPRINT +" datetime.bi +syn keyword freebasicDateTime DATEADD DATEDIFF DATEPART DATESERIAL DATEVALUE DAY HOUR ISDATE MINUTE +syn keyword freebasicDateTime MONTH MONTHNAME NOW SECOND TIMESERIAL TIMEVALUE +syn keyword freebasicDateTime TIMER YEAR WEEKDAY WEEKDAYNAME -syn keyword freebasicLogical AND EQV IMP OR NOT XOR +syn keyword freebasicDebug STOP +if s:lang == "qb" + syn keyword freebasicDebug __ASSERT __ASSERTWARN +else + syn keyword freebasicDebug ASSERT ASSERTWARN +endif -syn keyword freebasicMath ABS ACOS ASIN ATAN2 ATN COS EXP FIX INT LOG MOD RANDOMIZE -syn keyword freebasicMath RND SGN SIN SQR TAN +syn keyword freebasicErrorHandling ERR ERL ERROR +if s:lang == "qb" + syn keyword freebasicErrorHandling __ERFN __ERMN + syn match freebasicErrorHandling "\<on\s\+error\>" +else + syn keyword freebasicErrorHandling ERFN ERMN + syn match freebasicErrorHandling "\<on\s\+\%(local\s\+\)\=error\>" +endif +if s:lang != "fb" + syn match freebasicErrorHandling "\<resume\%(\s\+next\)\=\>" +endif -syn keyword freebasicMemory ALLOCATE CALLOCATE CLEAR DEALLOCATE FIELD FRE PEEK POKE REALLOCATE +syn match freebasicFiles "\<get\s\+#\>" +syn match freebasicFiles "\<input\s\+#\>" +syn match freebasicFiles "\<line\s\+input\s\+#\>" +syn match freebasicFiles "\<put\s\+#\>" +syn keyword freebasicFiles ACCESS APPEND BINARY CLOSE EOF FREEFILE INPUT LOC +syn keyword freebasicFiles LOCK LOF OUTPUT RANDOM RESET SEEK UNLOCK WRITE +syn match freebasicFiles "\<open\>" +if s:lang == "qb" + syn keyword freebasicFiles __ENCODING +else + syn keyword freebasicFiles ENCODING WINPUT + syn match freebasicFiles "\<open\s\+\%(cons\|err\|pipe\|scrn\)\>" +endif -syn keyword freebasicMisc ASM DATA LET TO READ RESTORE SIZEOF SWAP OFFSETOF +" file.bi +syn keyword freebasicFiles FILEATTR FILECOPY FILEDATETIME FILEEXISTS FILEFLUSH FILELEN FILESETEOF -syn keyword freebasicModularizing CHAIN COMMON EXPORT EXTERN DYLIBFREE DYLIBLOAD DYLIBSYMBOL -syn keyword freebasicModularizing PRIVATE PUBLIC +syn keyword freebasicFunctions ALIAS BYREF BYVAL CDECL DECLARE LIB NAKED PASCAL STATIC STDCALL +syn match freebasicFunctions "\<option\ze\s*(" -syn keyword freebasicMultithreading MUTEXCREATE MUTEXDESTROY MUTEXLOCK MUTEXUNLOCK THREADCREATE THREADWAIT +if s:lang == "qb" + syn keyword freebasicFunctions __CVA_ARG __CVA_COPY __CVA_END __CVA_LIST __CVA_START + syn keyword freebasicFunctions __VA_ARG __VA_FIRST __VA_NEXT +else + syn keyword freebasicFunctions CVA_ARG CVA_COPY CVA_END CVA_LIST CVA_START + syn keyword freebasicFunctions VA_ARG VA_FIRST VA_NEXT + syn keyword freebasicFunctions ANY OVERLOAD +endif -syn keyword freebasicShell CHDIR DIR COMMAND ENVIRON EXEC EXEPATH KILL NAME MKDIR RMDIR RUN +syn keyword freebasicFunctions FUNCTION SUB +syn match freebasicFunctions "\<end\s\+function\>" +syn match freebasicFunctions "\<end\s\+sub\>" -syn keyword freebasicEnviron SHELL SYSTEM WINDOWTITLE POINTERS +if s:lang == "fb" + syn keyword freebasicFunctions ABSTRACT OVERRIDE VIRTUAL __THISCALL + syn keyword freebasicFunctions CONSTRUCTOR DESTRUCTOR OPERATOR PROPERTY + syn match freebasicFunctions "\<end\s\+constructor\>" + syn match freebasicFunctions "\<end\s\+destructor\>" + syn match freebasicFunctions "\<end\s\+operator\>" + syn match freebasicFunctions "\<end\s\+property\>" +else + syn keyword freebasicFunctions CALL +endif -syn keyword freebasicLoops FOR LOOP WHILE WEND DO CONTINUE STEP UNTIL next +syn match freebasicGraphics "\<palette\s\+get\>" +syn keyword freebasicGraphics ADD ALPHA BLOAD BSAVE CIRCLE CLS COLOR DRAW GET +syn keyword freebasicGraphics LINE PAINT PALETTE PCOPY PMAP POINT +syn keyword freebasicGraphics PRESET PSET PUT SCREEN +syn keyword freebasicGraphics TRANS WINDOW +if s:lang == "qb" + syn keyword freebasicGraphics __FLIP __IMAGECONVERTROW __IMAGECREATE __IMAGEDESTROY __IMAGEINFO __POINTCOORD + syn keyword freebasicGraphics __RGB __RGBA __SCREENCOPY __SCREENCONTROL __SCREENEVENT __SCREENGLPROC __SCREENINFO + syn keyword freebasicGraphics __SCREENLIST __SCREENLOCK __SCREENPTR __SCREENRES __SCREENSET __SCREENSYNC + syn keyword freebasicGraphics __SCREENUNLOCK __WINDOWTITLE +else + syn keyword freebasicGraphics CUSTOM + syn keyword freebasicGraphics FLIP IMAGECONVERTROW IMAGECREATE IMAGEDESTROY IMAGEINFO POINTCOORD + syn keyword freebasicGraphics RGB RGBA SCREENCOPY SCREENCONTROL SCREENEVENT SCREENGLPROC SCREENINFO + syn keyword freebasicGraphics SCREENLIST SCREENLOCK SCREENPTR SCREENRES SCREENSET SCREENSYNC + syn keyword freebasicGraphics SCREENUNLOCK WINDOWTITLE +endif -syn match freebasicInclude "\<#\s*\(inclib\|include\)\>" -syn match freebasicInclude "\<\$\s*include\>" +if s:lang != "qb" + syn match freebasicHardware "\<open\s\+\%(com\|lpt\)\>" +endif +syn keyword freebasicHardware INP OUT WAIT LPOS LPRINT -syn keyword freebasicPointer PROCPTR PTR SADD STRPTR VARPTR +syn keyword freebasicMath ABS ATN COS EXP FIX FRAC INT LOG MOD RANDOMIZE RND SGN SIN SQR TAN -syn keyword freebasicPredefined __DATE__ __FB_DOS__ __FB_LINUX__ __FB_MAIN__ __FB_MIN_VERSION__ -syn keyword freebasicPredefined __FB_SIGNATURE__ __FB_VERSION__ __FB_WIN32__ __FB_VER_MAJOR__ -syn keyword freebasicPredefined __FB_VER_MINOR__ __FB_VER_PATCH__ __FILE__ __FUNCTION__ -syn keyword freebasicPredefined __LINE__ __TIME__ +if s:lang == "qb" + syn keyword freebasicMath __ACOS __ASIN __ATAN2 +else + syn keyword freebasicMath ACOS ASIN ATAN2 +endif -syn match freebasicPreProcessor "\<^#\s*\(define\|undef\)\>" -syn match freebasicPreProcessor "\<^#\s*\(ifdef\|ifndef\|else\|elseif\|endif\|if\)\>" -syn match freebasicPreProcessor "\<#\s*error\>" -syn match freebasicPreProcessor "\<#\s*\(print\|dynamic\|static\)\>" -syn keyword freebasicPreProcessor DEFINED ONCE +if s:lang == "qb" + syn keyword freebasicMemory __ALLOCATE __CALLOCATE __DEALLOCATE __REALLOCATE +else + syn keyword freebasicMemory ALLOCATE CALLOCATE DEALLOCATE REALLOCATE + syn keyword freebasicMemory PEEK POKE CLEAR FB_MEMCOPY FB_MEMCOPYCLEAR FB_MEMMOVE SWAP SADD + syn keyword freebasicMemory FIELD FRE +endif -syn keyword freebasicProgramFlow END EXIT GOSUB GOTO -syn keyword freebasicProgramFlow IS RETURN SCOPE SLEEP +syn keyword freebasicMisc LET TO +if s:lang == "qb" + syn keyword freebasicMisc __OFFSETOF +else + syn keyword freebasicMisc OFFSETOF +endif + +syn keyword freebasicModularizing CHAIN COMMON +if s:lang == "fb" + syn keyword freebasicModularizing EXTERN + syn match freebasicModularizing "\<end\s\+extern\>" + syn keyword freebasicModularizing PROTECTED +endif +if s:lang == "qb" + syn keyword freebasicModularizing __EXPORT __IMPORT __DYLIBFREE __DYLIBLOAD __DYLIBSYMBOL +else + syn keyword freebasicModularizing EXPORT IMPORT DYLIBFREE DYLIBLOAD DYLIBSYMBOL + syn keyword freebasicModularizing PRIVATE PUBLIC + syn keyword freebasicModularizing NAMESPACE + syn match freebasicModularizing "\<end\s\+namespace\>" +endif + +if s:lang != "qb" + syn keyword freebasicMultithreading MUTEXCREATE MUTEXDESTROY MUTEXLOCK MUTEXUNLOCK THREADCREATE THREADWAIT + syn keyword freebasicMultithreading CONDBROADCAST CONDCREATE CONDDESTROY CONDSIGNAL CONDWAIT + syn keyword freebasicMultithreading THREADCALL THREADDETACH THREADSELF +endif -syn keyword freebasicString INSTR LCASE LEFT LEN LSET LTRIM MID RIGHT RSET RTRIM -syn keyword freebasicString SPACE STRING TRIM UCASE ASC BIN CHR CVD CVI CVL CVLONGINT -syn keyword freebasicString CVS CVSHORT FORMAT HEX MKD MKI MKL MKLONGINT MKS MKSHORT -syn keyword freebasicString OCT STR VAL VALLNG VALINT VALUINT VALULNG +syn keyword freebasicShell CHDIR KILL NAME MKDIR RMDIR RUN SETENVIRON +if s:lang == "qb" + syn keyword freebasicShell __CURDIR __DIR __EXEC __EXEPATH + syn match freebasicString "\<\%(command\|environ\)\$" +else + " fbio.bi + syn keyword freebasicShell ISREDIRECTED + syn keyword freebasicShell CURDIR DIR EXEC EXEPATH + syn match freebasicString "\<\%(command\|environ\)\>\$\=" +endif -syn keyword freebasicTypeCasting CAST CBYTE CDBL CINT CLNG CLNGINT CPTR CSHORT CSIGN CSNG -syn keyword freebasicTypeCasting CUBYTE CUINT CULNGINT CUNSG CURDIR CUSHORT +syn keyword freebasicEnviron SHELL SYSTEM -syn match freebasicUserInput "\<line\s+input\>" -syn keyword freebasicUserInput GETJOYSTICK GETKEY GETMOUSE INKEY INPUT MULTIKEY SETMOUSE +syn keyword freebasicLoops FOR LOOP WHILE WEND DO STEP UNTIL NEXT +if s:lang == "qb" + syn keyword freebasicLoops __CONTINUE +else + syn keyword freebasicLoops CONTINUE +endif " -" Do the Basic variables names first. This is because it -" is the most inclusive of the tests. Later on we change -" this so the identifiers are split up into the various -" types of identifiers like functions, basic commands and -" such. MEM 9/9/2006 +" File numbers " -syn match freebasicIdentifier "\<[a-zA-Z_][a-zA-Z0-9_]*\>" -syn match freebasicGenericFunction "\<[a-zA-Z_][a-zA-Z0-9_]*\>\s*("me=e-1,he=e-1 +syn match freebasicFilenumber "#\d\+" +syn match freebasicFilenumber "#\a[[:alpha:].]*[%&!#]\=" + +syn match freebasicMetacommand "$\s*\%(dynamic\|static\)" +syn match freebasicMetacommand "$\s*include\s*\%(once\)\=\s*:\s*'[^']\+'" +syn match freebasicMetacommand '$\s*include\s*\%(once\)\=\s*:\s*"[^"]\+"' +syn match freebasicMetacommand '$\s*lang\s*:\s*"[^"]\+"' +" +" Intrinsic defines +" +syn keyword freebasicPredefined __DATE__ __DATE_ISO__ +syn keyword freebasicPredefined __FB_64BIT__ __FB_ARGC__ __FB_ARG_COUNT__ __FB_ARG_EXTRACT__ __FB_ARG_LEFTOF__ +syn keyword freebasicPredefined __FB_ARG_RIGHTOF__ __FB_ARGV__ __FB_ARM__ __FB_ASM__ __FB_BACKEND__ +syn keyword freebasicPredefined __FB_BIGENDIAN__ __FB_BUILD_DATE__ __FB_BUILD_DATE_ISO__ __FB_BUILD_SHA1__ +syn keyword freebasicPredefined __FB_CYGWIN__ __FB_DARWIN__ __FB_DEBUG__ __FB_DOS__ __FB_ERR__ __FB_EVAL__ +syn keyword freebasicPredefined __FB_FPMODE__ __FB_FPU__ __FB_FREEBSD__ __FB_GCC__ __FB_GUI__ __FB_JOIN__ +syn keyword freebasicPredefined __FB_LANG__ __FB_LINUX__ __FB_MAIN__ __FB_MIN_VERSION__ __FB_MT__ __FB_NETBSD__ +syn keyword freebasicPredefined __FB_OPENBSD__ __FB_OPTIMIZE__ __FB_OPTION_BYVAL__ __FB_OPTION_DYNAMIC__ +syn keyword freebasicPredefined __FB_OPTION_ESCAPE__ __FB_OPTION_EXPLICIT__ __FB_OPTION_GOSUB__ +syn keyword freebasicPredefined __FB_OPTION_PRIVATE__ __FB_OUT_DLL__ __FB_OUT_EXE__ __FB_OUT_LIB__ __FB_OUT_OBJ__ +syn keyword freebasicPredefined __FB_PCOS__ __FB_PPC__ __FB_QUOTE__ __FB_SIGNATURE__ __FB_SSE__ __FB_UNIQUEID__ +syn keyword freebasicPredefined __FB_UNIQUEID_POP__ __FB_UNIQUEID_PUSH__ __FB_UNIX__ __FB_UNQUOTE__ +syn keyword freebasicPredefined __FB_VECTORIZE__ __FB_VER_MAJOR__ __FB_VER_MINOR__ __FB_VER_PATCH__ __FB_VERSION__ +syn keyword freebasicPredefined __FB_WIN32__ __FB_X86__ __FB_XBOX__ +syn keyword freebasicPredefined __FILE__ __FILE_NQ__ __FUNCTION__ __FUNCTION_NQ__ +syn keyword freebasicPredefined __LINE__ __PATH__ __TIME__ +" +" Preprocessor directives +" +syn match freebasicInclude "#\s*\%(inclib\|include\%(\s\+once\)\=\|libpath\)\>" + +syn match freebasicPreProcessor "#\s*assert\>" +syn match freebasicPreProcessor "#\s*cmdline\>" +syn match freebasicPreProcessor "#\s*\%(define\|undef\)\>" +syn match freebasicPreProcessor "#\s*\%(if\|ifdef\|ifndef\|else\|elseif\|endif\)\>" +syn match freebasicPreProcessor "#\s*\%(macro\|endmacro\)\>" +syn match freebasicPreProcessor "#\s*error\>" +syn match freebasicPreProcessor "#\s*lang\>" +syn match freebasicPreProcessor "#\s*line\>" +syn match freebasicPreProcessor "#\s*pragma\%(\s\+reserve\)\=\>" +syn match freebasicPreProcessor "#\s*\%(print\|dynamic\|static\)\>" +syn keyword freebasicPreProcessor DEFINED + +syn keyword freebasicString LEN +syn keyword freebasicString ASC +" string.bi +syn keyword freebasicString FORMAT +syn keyword freebasicString VAL +syn keyword freebasicString CVD CVI CVL CVS +syn keyword freebasicString INSTR +syn keyword freebasicString LSET RSET + +if s:lang == "qb" + syn match freebasicString "\<string\$\ze\s*(" + syn match freebasicString "\<__wstring\ze\s*(" + syn match freebasicString "\<space\$" + syn keyword freebasicString __WSPACE + syn match freebasicString "\<chr\$" + syn keyword freebasicString __WCHR + syn keyword freebasicString __WBIN __WHEX __WOCT __WSTR + syn match freebasicString "\<\%(bin\|hex\|oct\|str\)\$" + syn keyword freebasicString __VALLNG __VALINT __VALUINT __VALULNG + syn match freebasicString "\<\%(mkd\|mki\|mkl\|mks\)\$" + syn keyword freebasicString __MKLONGINT __MKSHORT + syn keyword freebasicString __CVLONGINT __CVSHORT + syn match freebasicString "\<\%(left\|mid\|right\|lcase\|ucase\|ltrim\|rtrim\)\$" + syn keyword freebasicString __TRIM + syn keyword freebasicString __INSTRREV +else + syn match freebasicString "\<string\$\=\ze\s*(" + syn match freebasicString "\<wstring\ze\s*(" + syn match freebasicString "\<space\>\$\=" + syn keyword freebasicString WSPACE + syn match freebasicString "\<chr\>\$\=" + syn keyword freebasicString WCHR + syn keyword freebasicString WBIN WHEX WOCT WSTR + syn match freebasicString "\<\%(bin\|hex\|oct\|str\)\>\$\=" + syn keyword freebasicString VALLNG VALINT VALUINT VALULNG + syn match freebasicString "\<\%(mkd\|mki\|mkl\|mks\)\>\$\=" + syn match freebasicString "\<\%(mklongint\|mkshort\)\>\$\=" + syn keyword freebasicString CVLONGINT CVSHORT + syn match freebasicString "\<\%(left\|mid\|right\|lcase\|ucase\|ltrim\|rtrim\)\>\$\=" + syn match freebasicString "\<trim\>\$\=" + syn keyword freebasicString INSTRREV +endif + +syn keyword freebasicTypeCasting CDBL CINT CLNG CSNG +if s:lang == "qb" + syn keyword freebasicTypeCasting __CAST __CBOOL __CBYTE __CLNGINT __CPTR __CSHORT __CSIGN __CYBTE __CUINT __CULNG + syn keyword freebasicTypeCasting __CULNGINT __CUNSG __CUSHORT +else + syn keyword freebasicTypeCasting CAST CBOOL CBYTE CLNGINT CPTR CSHORT CSIGN CUBYTE CUINT CULNG CULNGINT CUNSG CUSHORT +endif + +syn match freebasicUserInput "\<line\s\+input\>" +syn keyword freebasicUserInput INKEY INPUT +if s:lang == "qb" + syn keyword freebasicUserInput __GETJOYSTICK __GETKEY __GETMOUSE __MULTIKEY __SETMOUSE STICK STRIG +else + syn keyword freebasicUserInput GETJOYSTICK GETKEY GETMOUSE MULTIKEY SETMOUSE +endif " -" Function list +" Operators " -syn keyword freebasicTodo contained TODO +" TODO: make these context sensitive to remove the overlap of common operators +" : alpha operators should probably always be highlighted +" -- DJK 20/11/19 +if s:lang == "qb" + syn match freebasicArithmeticOperator "\<\%(MOD\|__SHL\|__SHR\)\>" +else + syn match freebasicArithmeticOperator "\<\%(MOD\|SHL\|SHR\)\>" +endif +syn match freebasicBitwiseOperator "\<\%(AND\|EQV\|IMP\|NOT\|OR\|XOR\)\>" " freebaseLogical? +if s:lang == "qb" + syn match freebasicAssignmentOperator "\<\%(MOD\|AND\|EQV\|IMP\|OR\|XOR\|__SHL\|__SHR\)=\@=" " exclude trailing '=' +else + syn match freebasicAssignmentOperator "\<\%(MOD\|AND\|EQV\|IMP\|OR\|XOR\|SHL\|SHR\)=\@=" +endif +syn match freebasicShortcircuitOperator "\<\%(ANDALSO\|ORELSE\)\>" +if s:lang == "fb" + syn match freebasicMemoryOperator '\<\%(new\|delete\)\>' +endif +syn keyword freebasicPointerOperator STRPTR VARPTR +if s:lang == "qb" + syn keyword freebasicPointerOperator __PROCPTR +else + syn keyword freebasicPointerOperator PROCPTR +endif +syn match freebasicTypeOperator '\<is\>' +syn match freebasicTypeOperator '\.' nextgroup=freebasicIdentifier skipwhite +if s:lang == "fb" + syn match freebasicTypeOperator '->' nextgroup=freebasicIdentifier skipwhite +endif + +if exists("freebasic_operators") + syn match freebasicAssignmentOperator "=>\=\|[-+&/\\*^]=" + if s:lang == "qb" + syn match freebasicAssignmentOperator "\<\%(MOD\|AND\|EQV\|IMP\|OR\|XOR\|__SHL\|__SHR\)=" " include trailing '=' + else + syn match freebasicAssignmentOperator "\<\%(MOD\|AND\|EQV\|IMP\|OR\|XOR\|SHL\|SHR\)=" + endif + syn match freebasicArithmeticOperator "[-+&/\\*^]" + " syn match freebasicIndexingOperator "[[\]()]" " FIXME + syn match freebasicRelationalOperator "=\|<>\|<=\|<\|>=\|>" + syn match freebasicPreprocessorOperator '\%(^\s*\)\@<!\%(##\|#\)\|[$!]"\@=' + syn match freebasicPointerOperator '[@*]' + syn match freebasicTypeOperator '\.' nextgroup=freebasicIdentifier skipwhite + if s:lang == "fb" + syn match freebasicTypeOperator '->' nextgroup=freebasicIdentifier skipwhite + endif +endif + +syn cluster freebasicOperator contains=freebasic.*Operator " " Catch errors caused by wrong parenthesis " -syn region freebasicParen transparent start='(' end=')' contains=ALLBUT,@freebasicParenGroup -syn match freebasicParenError ")" -syn match freebasicInParen contained "[{}]" -syn cluster freebasicParenGroup contains=freebasicParenError,freebasicSpecial,freebasicTodo,freebasicUserCont,freebasicUserLabel,freebasicBitField +" syn region freebasicParen transparent start='(' end=')' contains=ALLBUT,@freebasicParenGroup +" syn match freebasicParenError ")" +" syn match freebasicInParen contained "[{}]" +" syn cluster freebasicParenGroup contains=freebasicParenError,freebasicSpecial,freebasicTodo,freebasicUserCont,freebasicUserLabel,freebasicBitField " -" Integer number, or floating point number without a dot and with "f". +" Integer number " -syn region freebasicHex start="&h" end="\W" -syn region freebasicHexError start="&h\x*[g-zG-Z]" end="\W" -syn region freebasicOctal start="&o" end="\W" -syn region freebasicOctalError start="&o[0-7]*[89a-zA-Z]" end="\W" -syn region freebasicBinary start="&b" end="\W" -syn region freebasicBinaryError start="&b[01]*[2-9a-zA-Z]" end="\W" -syn match freebasicInteger "\<\d\+\(u\=l\=\|lu\|f\)\>" +syn match freebasicHexError "&h\w*\>" +syn match freebasicOctalError "&o\w*\>" +syn match freebasicBinaryError "&b\w*\>" +syn match freebasicHex "&h\x\+\%([%L&U]\|UL\|LL\|ULL\)\=\>" +syn match freebasicOctal "&o\o\+\%([%L&U]\|UL\|LL\|ULL\)\=\>" +syn match freebasicBinary "&b[10]\+\%([%L&U]\|UL\|LL\|ULL\)\=\>" +syn match freebasicInteger "\<\d\+\%([%L&U]\|UL\|LL\|ULL\)\=\>" " -" Floating point number, with dot, optional exponent +" Floating point +" See: https://www.freebasic.net/forum/viewtopic.php?t=20323 " -syn match freebasicFloat "\<\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=\>" +" Floating point number, with dot, optional exponent, optional suffix " -" Floating point number, starting with a dot, optional exponent +syn match freebasicFloat "\<\d\+\.\d*\%([de][-+]\=\d*\)\=[f!#]\=" " -syn match freebasicFloat "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>" +" Floating point number, starting with a dot, optional exponent, optional suffix " -" Floating point number, without dot, with exponent +syn match freebasicFloat "\.\d\+\%([de][-+]\=\d*\)\=[f!#]\=" " -syn match freebasicFloat "\<\d\+e[-+]\=\d\+[fl]\=\>" +" Floating point number, without dot, with optional exponent, optional suffix " -" Octal number +syn match freebasicFloat "\<\d\+\%([de][-+]\=\d*\)[f!#]\=" " -syn case match -syn match freebasicOctal2 "\<0\o*\>" -syn match freebasicOctal2Error "\<0\o*[89a-zA-Z]" +" Floating point number, without dot, without exponent, with suffix " -" String and Character contstants +syn match freebasicFloat "\<\d\+[f!#]" " -syn region freebasicString start='"' end='"' contains=freebasicSpecial,freebasicTodo -syn region freebasicString start="'" end="'" contains=freebasicSpecial,freebasicTodo +" Create the clusters " -" Comments +syn cluster freebasicNumber contains=freebasicHex,freebasicOctal,freebasicBinary,freebasicInteger,freebasicFloat +syn cluster freebasicNumberError contains=freebasicHexError,freebasicOctalError,freebasicBinaryError " -syn match freebasicSpecial contained "\\\\." -syn region freebasicComment start="^rem" end="$" contains=freebasicSpecial,freebasicTodo -syn region freebasicComment start=":\s*rem" end="$" contains=freebasicSpecial,freebasicTodo -syn region freebasicComment start="\s*'" end="$" contains=freebasicSpecial,freebasicTodo -syn region freebasicComment start="^'" end="$" contains=freebasicSpecial,freebasicTodo +" Booleans " -" Now do the comments and labels +if s:lang != "qb" + syn keyword freebasicBoolean TRUE FALSE +endif " -syn match freebasicLabel "^\d" -syn match freebasicLabel "\<^\w+:\>" -syn region freebasicLineNumber start="^\d" end="\s" " -" Create the clusters +" String and escape sequences " -syn cluster freebasicNumber contains=freebasicHex,freebasicOctal,freebasicOctal2,freebasicBinary,freebasicInteger,freebasicFloat -syn cluster freebasicError contains=freebasicHexError,freebasicOctalError,freebasicOctal2,freebasicBinary +syn match freebasicSpecial contained "\\." +syn match freebasicSpecial contained "\\\d\{1,3}" +syn match freebasicSpecial contained "\\&h\x\{1,2}" +syn match freebasicSpecial contained "\\&o\o\{1,3}" +syn match freebasicSpecial contained "\\&b[01]\{1,8}" +syn match freebasicSpecial contained "\\u\x\{1,4}" +syn region freebasicString start='"' end='"' " TODO: Toggle contains on Option Escape in fblite and qb? -- DJK 20/11/19 +syn region freebasicString start='!\zs"' end='"' contains=freebasicSpecial +syn region freebasicString start='$\zs"' end='"' " -" Used with OPEN statement +" Line labels " -syn match freebasicFilenumber "#\d\+" -syn match freebasicMathOperator "[\+\-\=\|\*\/\>\<\%\()[\]]" contains=freebasicParen +if s:lang =~# '\<\%(qb\|fblite\)\>' + syn match freebasicLineLabel "^\s*\zs\h\%(\w\|\.\)*\ze\s*:" +else + syn match freebasicLineLabel "^\s*\zs\h\w*\ze\s*:" +endif +syn match freebasicLineNumber "^\s*\zs\d\+" +" +" Line continuations +" +" syn match freebasicLineContinuation "\<_\>" nextgroup=freebasicComment,freebasicPostLineContinuation skipwhite +syn keyword freebasicLineContinuation _ nextgroup=freebasicComment,freebasicPostLineContinuation skipwhite +syn match freebasicPostLineContinuation ".*" contained +" +" +" Type suffixes +if exists("freebasic_type_suffixes") && s:lang =~# '\<\%(qb\|fblite\)\>' + syn match freebasicTypeSuffix "\h\%(\w\|.\)*\zs[$%&!#]" +endif +" +" Comments +" +syn keyword freebasicTodo TODO FIXME XXX NOTE contained +syn region freebasicComment start="\<rem\>" end="$" contains=freebasicTodo,@Spell,freebasicMetacommand +syn region freebasicComment start="'" end="$" contains=freebasicTodo,@Spell,freebasicMetacommand +syn region freebasicDoubleComment start="''" end="$" contains=freebasicTodo,@Spell + +if !exists("freebasic_no_comment_fold") + syn region freebasicMultilineComment start="/'" end="'/" contains=freebasicTodo,@Spell,freeBasicMultilineComment fold keepend extend + syn region freebasicMultilineComment2 start="^\s*'.*\n\%(\s*'\)\@=" end="^\s*'.*\n\%(\s*'\)\@!" contains=freebasicComment,freebasicDoubleComment keepend fold +else + syn region freebasicMultilineComment start="/'" end="'/" contains=freebasicTodo,@Spell,freeBasicMultilineComment +endif + +syn case match + +syn sync linebreaks=1 + " " The default methods for highlighting. Can be overridden later " hi def link freebasicArrays StorageClass +hi def link freebasicAsm Special hi def link freebasicBitManipulation Operator -hi def link freebasicCompilerSwitches PreCondit +hi def link freebasicBoolean Boolean +if s:lang == "fb" + hi def link freebasicCompilerSwitches freebasicUnsupportedError +else + hi def link freebasicCompilerSwitches PreCondit +endif hi def link freebasicConsole Special +hi def link freebasicData Special hi def link freebasicDataTypes Type hi def link freebasicDateTime Type hi def link freebasicDebug Special hi def link freebasicErrorHandling Special +hi def link freebasicFilenumber Special hi def link freebasicFiles Special hi def link freebasicFunctions Function hi def link freebasicGraphics Function hi def link freebasicHardware Special -hi def link freebasicLogical Conditional +hi def link freebasicLoops Repeat hi def link freebasicMath Function +if s:lang == "fb" + hi def link freebasicMetacommand freebasicUnsupportedError +else + hi def link freebasicMetacommand SpecialComment +endif hi def link freebasicMemory Function hi def link freebasicMisc Special hi def link freebasicModularizing Special @@ -240,18 +620,55 @@ hi def link freebasicString String hi def link freebasicTypeCasting Type hi def link freebasicUserInput Statement hi def link freebasicComment Comment +hi def link freebasicDoubleComment Comment +hi def link freebasicMultilineComment Comment hi def link freebasicConditional Conditional hi def link freebasicError Error hi def link freebasicIdentifier Identifier hi def link freebasicInclude Include hi def link freebasicGenericFunction Function -hi def link freebasicLabel Label -hi def link freebasicLineNumber Label +hi def link freebasicLineContinuation Special +hi def link freebasicLineLabel LineNr +if s:lang == "fb" + hi def link freebasicLineNumber freebasicUnsupportedError +else + hi def link freebasicLineNumber LineNr +endif hi def link freebasicMathOperator Operator -hi def link freebasicNumber Number + +hi def link freebasicHex Number +hi def link freebasicOctal Number +hi def link freebasicBinary Number +hi def link freebasicInteger Number +hi def link freebasicFloat Float + +hi def link freebasicHexError Error +hi def link freebasicOctalError Error +hi def link freebasicBinaryError Error + +hi def link freebasicAssignmentOperator Operator +hi def link freebasicArithmeticOperator Operator +hi def link freebasicIndexingOperator Operator +hi def link freebasicRelationalOperator Operator +hi def link freebasicBitwiseOperator Operator +hi def link freebasicShortcircuitOperator Operator +hi def link freebasicPreprocessorOperator Operator +hi def link freebasicPointerOperator Operator +if exists("freebasic_operators") + hi def link freebasicTypeOperator Operator +endif +hi def link freebasicMemoryOperator Operator + +hi def link freebasicSpaceError Error + hi def link freebasicSpecial Special hi def link freebasicTodo Todo +hi def link freebasicUnsupported freebasicUnsupportedError +hi def link freebasicUnsupportedError Error + +unlet s:lang + let b:current_syntax = "freebasic" -" vim: ts=8 +" vim: ts=8 tw=132 fdm=marker diff --git a/runtime/syntax/i3config.vim b/runtime/syntax/i3config.vim index f9e15d57e5..0018081da7 100644 --- a/runtime/syntax/i3config.vim +++ b/runtime/syntax/i3config.vim @@ -3,7 +3,7 @@ " Original Author: Mohamed Boughaba <mohamed dot bgb at gmail dot com> " Maintainer: Quentin Hibon (github user hiqua) " Version: 0.4 -" Last Change: 2022 Jan 04 +" Last Change: 2022 Jun 05 " References: " http://i3wm.org/docs/userguide.html#configuring @@ -17,9 +17,6 @@ endif scriptencoding utf-8 -" Error -syn match i3ConfigError /.*/ - " Todo syn keyword i3ConfigTodo TODO FIXME XXX contained @@ -50,6 +47,10 @@ syn match i3ConfigVariable /\$\w\+\(\(-\w\+\)\+\)\?\(\s\|+\)\?/ contains=i3Confi syn keyword i3ConfigInitializeKeyword set contained syn match i3ConfigInitialize /^\s*set\s\+.*$/ contains=i3ConfigVariable,i3ConfigInitializeKeyword,i3ConfigColor,i3ConfigString +" Include +syn keyword i3ConfigIncludeKeyword include contained +syn match i3ConfigInclude /^\s*include\s\+.*$/ contains=i3ConfigIncludeKeyword,i3ConfigString,i3ConfigVariable + " Gaps syn keyword i3ConfigGapStyleKeyword inner outer horizontal vertical top right bottom left current all set plus minus toggle up down contained syn match i3ConfigGapStyle /^\s*\(gaps\)\s\+\(inner\|outer\|horizontal\|vertical\|left\|top\|right\|bottom\)\(\s\+\(current\|all\)\)\?\(\s\+\(set\|plus\|minus\|toggle\)\)\?\(\s\+\(-\?\d\+\|\$.*\)\)$/ contains=i3ConfigGapStyleKeyword,i3ConfigNumber,i3ConfigVariable @@ -175,14 +176,13 @@ syn keyword i3ConfigDrawingMarksKeyword show_marks contained syn match i3ConfigDrawingMarks /^\s*show_marks\s\+\(yes\|no\)\s\?$/ contains=i3ConfigFocusWrappingType,i3ConfigDrawingMarksKeyword " Group mode/bar -syn keyword i3ConfigBlockKeyword mode bar colors i3bar_command status_command position exec mode hidden_state modifier id position output background statusline tray_output tray_padding separator separator_symbol workspace_buttons strip_workspace_numbers binding_mode_indicator focused_workspace active_workspace inactive_workspace urgent_workspace binding_mode contained -syn region i3ConfigBlock start=+.*s\?{$+ end=+^}$+ contains=i3ConfigBlockKeyword,i3ConfigString,i3ConfigBind,i3ConfigComment,i3ConfigFont,i3ConfigFocusWrappingType,i3ConfigColor,i3ConfigVariable transparent keepend extend +syn keyword i3ConfigBlockKeyword mode bar colors i3bar_command status_command position exec mode hidden_state modifier id position output background statusline tray_output tray_padding separator separator_symbol workspace_min_width workspace_buttons strip_workspace_numbers binding_mode_indicator focused_workspace active_workspace inactive_workspace urgent_workspace binding_mode contained +syn region i3ConfigBlock start=+^\s*[^#]*s\?{$+ end=+^\s*[^#]*}$+ contains=i3ConfigBlockKeyword,i3ConfigString,i3ConfigBind,i3ConfigComment,i3ConfigFont,i3ConfigFocusWrappingType,i3ConfigColor,i3ConfigVariable transparent keepend extend " Line continuation syn region i3ConfigLineCont start=/^.*\\$/ end=/^.*$/ contains=i3ConfigBlockKeyword,i3ConfigString,i3ConfigBind,i3ConfigComment,i3ConfigFont,i3ConfigFocusWrappingType,i3ConfigColor,i3ConfigVariable transparent keepend extend " Define the highlighting. -hi def link i3ConfigError Error hi def link i3ConfigTodo Todo hi def link i3ConfigComment Comment hi def link i3ConfigFontContent Type @@ -221,6 +221,7 @@ hi def link i3ConfigAssignSpecial Special hi def link i3ConfigFontNamespace PreProc hi def link i3ConfigBindArgument PreProc hi def link i3ConfigNoStartupId PreProc +hi def link i3ConfigIncludeKeyword Identifier hi def link i3ConfigFontKeyword Identifier hi def link i3ConfigBindKeyword Identifier hi def link i3ConfigOrientation Identifier diff --git a/runtime/syntax/icon.vim b/runtime/syntax/icon.vim index 179d75cd28..276bb58497 100644 --- a/runtime/syntax/icon.vim +++ b/runtime/syntax/icon.vim @@ -1,199 +1,211 @@ " Vim syntax file -" Language: Icon -" Maintainer: Wendell Turner <wendell@adsi-m4.com> -" URL: ftp://ftp.halcyon.com/pub/users/wturner/icon.vim -" Last Change: 2003 May 11 +" Language: Icon +" Maintainer: Doug Kearns <dougkearns@gmail.com> +" Previous Maintainer: Wendell Turner <wendell@adsi-m4.com> (invalid last known address) +" Last Change: 2022 Jun 16 +" Contributor: eschen@alumni.princeton.edu 2002.09.18 -" quit when a syntax file was already loaded +" Prelude {{{1 if exists("b:current_syntax") finish endif -syn keyword iconFunction abs acos any args asin atan bal -syn keyword iconFunction callout center char chdir close collect copy -syn keyword iconFunction cos cset delay delete detab display dtor -syn keyword iconFunction entab errorclear exit exp find flush function -syn keyword iconFunction get getch getche getenv iand icom image -syn keyword iconFunction insert integer ior ishift ixor kbhit key -syn keyword iconFunction left list loadfunc log many map match -syn keyword iconFunction member move name numeric open ord pop -syn keyword iconFunction pos proc pull push put read reads -syn keyword iconFunction real remove rename repl reverse right rtod -syn keyword iconFunction runerr save seek seq set sin sort -syn keyword iconFunction sortf sqrt stop string system tab table -syn keyword iconFunction tan trim type upto variable where write writes - -" Keywords -syn match iconKeyword "&allocated" -syn match iconKeyword "&ascii" -syn match iconKeyword "&clock" -syn match iconKeyword "&collections" -syn match iconKeyword "&cset" -syn match iconKeyword "¤t" -syn match iconKeyword "&date" -syn match iconKeyword "&dateline" -syn match iconKeyword "&digits" -syn match iconKeyword "&dump" -syn match iconKeyword "&e" -syn match iconKeyword "&error" -syn match iconKeyword "&errornumber" -syn match iconKeyword "&errortext" -syn match iconKeyword "&errorvalue" -syn match iconKeyword "&errout" -syn match iconKeyword "&fail" -syn match iconKeyword "&features" -syn match iconKeyword "&file" -syn match iconKeyword "&host" -syn match iconKeyword "&input" -syn match iconKeyword "&lcase" -syn match iconKeyword "&letters" -syn match iconKeyword "&level" -syn match iconKeyword "&line" -syn match iconKeyword "&main" -syn match iconKeyword "&null" -syn match iconKeyword "&output" -syn match iconKeyword "&phi" -syn match iconKeyword "&pi" -syn match iconKeyword "&pos" -syn match iconKeyword "&progname" -syn match iconKeyword "&random" -syn match iconKeyword "®ions" -syn match iconKeyword "&source" -syn match iconKeyword "&storage" -syn match iconKeyword "&subject" -syn match iconKeyword "&time" -syn match iconKeyword "&trace" -syn match iconKeyword "&ucase" -syn match iconKeyword "&version" - -" Reserved words -syn keyword iconReserved break by case create default do -syn keyword iconReserved else end every fail if -syn keyword iconReserved initial link next not of -syn keyword iconReserved procedure repeat return suspend -syn keyword iconReserved then to until while - -" Storage class reserved words -syn keyword iconStorageClass global static local record - -syn keyword iconTodo contained TODO FIXME XXX BUG - -" String and Character constants -" Highlight special characters (those which have a backslash) differently -syn match iconSpecial contained "\\x\x\{2}\|\\\o\{3\}\|\\[bdeflnrtv\"\'\\]\|\\^c[a-zA-Z0-9]\|\\$" -syn region iconString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=iconSpecial -syn region iconCset start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=iconSpecial -syn match iconCharacter "'[^\\]'" - -" not sure about these -"syn match iconSpecialCharacter "'\\[bdeflnrtv]'" -"syn match iconSpecialCharacter "'\\\o\{3\}'" -"syn match iconSpecialCharacter "'\\x\x\{2}'" -"syn match iconSpecialCharacter "'\\^c\[a-zA-Z0-9]'" - -"when wanted, highlight trailing white space +syn iskeyword @,48-57,_,192-255,& + +" Not Top {{{1 +syn cluster iconNotTop contains=iconDocField,iconIncluded,iconStringSpecial,iconTodo,@Spell + +" Whitespace errors {{{1 if exists("icon_space_errors") - syn match iconSpaceError "\s*$" - syn match iconSpaceError " \+\t"me=e-1 + if !exists("icon_no_trail_space_error") + syn match iconSpaceError "\s\+$" display excludenl + endif + if !exists("icon_no_tab_space_error") + syn match iconSpaceError " \+\t"me=e-1 display + endif endif -"catch errors caused by wrong parenthesis -syn cluster iconParenGroup contains=iconParenError,iconIncluded,iconSpecial,iconTodo,iconUserCont,iconUserLabel,iconBitField +" Reserved words {{{1 +syn keyword iconReserved break by case create default do else every fail if +syn keyword iconReserved initial next not of repeat return suspend then to +syn keyword iconReserved until while -syn region iconParen transparent start='(' end=')' contains=ALLBUT,@iconParenGroup -syn match iconParenError ")" -syn match iconInParen contained "[{}]" +syn keyword iconStorageClass global static local record invocable +syn keyword iconLink link -syn case ignore +" Procedure definitions {{{1 +if exists("icon_no_procedure_fold") + syn region iconProcedure matchgroup=iconReserved start="\<procedure\>" end="\<end\>" contains=ALLBUT,@iconNotTop +else + syn region iconProcedure matchgroup=iconReserved start="\<procedure\>" end="\<end\>" contains=ALLBUT,@iconNotTop fold +endif -"integer number, or floating point number without a dot -syn match iconNumber "\<\d\+\>" +" Keywords {{{1 +syn keyword iconKeyword &allocated &ascii &clock &collections &cset ¤t +syn keyword iconKeyword &date &dateline &digits &dump &e &error &errornumber +syn keyword iconKeyword &errortext &errorvalue &errout &fail &features &file +syn keyword iconKeyword &host &input &lcase &letters &level &line &main &null +syn keyword iconKeyword &output &phi &pi &pos &progname &random ®ions +syn keyword iconKeyword &source &storage &subject &time &trace &ucase &version + +" Graphics keywords +syn keyword iconKeyword &col &control &interval &ldrag &lpress &lrelease +syn keyword iconKeyword &mdrag &meta &mpress &mrelease &rdrag &resize &row +syn keyword iconKeyword &rpress &rrelease &shift &window &x &y + +" Functions {{{1 +syn keyword iconFunction abs acos any args asin atan bal callout center char +syn keyword iconFunction chdir close collect copy cos cset delay delete detab +syn keyword iconFunction display dtor entab errorclear exit exp find flush +syn keyword iconFunction function get getch getche getenv iand icom image +syn keyword iconFunction insert integer ior ishift ixor kbhit key left list +syn keyword iconFunction loadfunc log many map match member move name numeric +syn keyword iconFunction open ord pop pos proc pull push put read reads real +syn keyword iconFunction remove rename repl reverse right rtod runerr save +syn keyword iconFunction seek self seq serial set sin sort sortf sqrt stop +syn keyword iconFunction string system tab table tan trim type upto variable +syn keyword iconFunction where write writes + +" Graphics functions +syn keyword iconFunction Active Alert Bg CenterString Clip Clone Color +syn keyword iconFunction ColorDialog ColorValue CopyArea Couple DrawArc +syn keyword iconFunction DrawCircle DrawCurve DrawImage DrawLine DrawPoint +syn keyword iconFunction DrawPolygon DrawRectangle DrawSegment DrawString +syn keyword iconFunction Enqueue EraseArea Event Fg FillArc FillCircle +syn keyword iconFunction FillPolygon FillRectangle Font FreeColor GotoRC +syn keyword iconFunction GotoXY LeftString Lower NewColor Notice OpenDialog +syn keyword iconFunction PaletteChars PaletteColor PaletteGrays PaletteKey +syn keyword iconFunction Pattern Pending Pixel Raise ReadImage RightString +syn keyword iconFunction SaveDialog SelectDialog Shade TextDialog TextWidth +syn keyword iconFunction ToggleDialog Uncouple WAttrib WClose WDefault WDelay +syn keyword iconFunction WDone WFlush WOpen WQuit WRead WReads WriteImage +syn keyword iconFunction WSync WWrite WWrites + +" String and character constants {{{1 +syn match iconStringSpecial "\\x\x\{2}\|\\\o\{3\}\|\\[bdeflnrtv\"\'\\]\|\\^[a-zA-Z0-9]" contained +syn match iconStringSpecial "\\$" contained +syn match iconStringSpecial "_\ze\s*$" contained + +syn region iconString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=iconStringSpecial +syn region iconCset start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=iconStringSpecial + +" Bracket errors {{{1 + +if !exists("icon_no_bracket_errors") + " catch errors caused by wrong brackets (ACE 2002.09.18) + syn cluster iconBracketGroup contains=iconBracketError,iconIncluded + syn region iconBracket start='\[' end='\]' contains=ALLBUT,@iconBracketGroup,@iconNotTop transparent + syn match iconBracketError "]" + + "catch errors caused by wrong braces (ACE 2002.09.18) + syn cluster iconBraceGroup contains=iconBraceError,iconIncluded + syn region iconBrace start='{' end='}' contains=ALLBUT,@iconBraceGroup,@iconNotTop transparent + syn match iconBraceError "}" + + "catch errors caused by wrong parenthesis + syn cluster iconParenGroup contains=iconParenError,iconIncluded + syn region iconParen start='(' end=')' contains=ALLBUT,@iconParenGroup,@iconNotTop transparent + syn match iconParenError ")" +end + +" Numbers {{{1 +syn case ignore -"floating point number, with dot, optional exponent -syn match iconFloat "\<\d\+\.\d*\(e[-+]\=\d\+\)\=\>" +" integer +syn match iconInteger "\<\d\+\>" +syn match iconInteger "\<\d\{1,2}[rR][a-zA-Z0-9]\+\>" -"floating point number, starting with a dot, optional exponent -syn match iconFloat "\.\d\+\(e[-+]\=\d\+\)\=\>" +" real with trailing dot +syn match iconReal "\<\d\+\." -"floating point number, without dot, with exponent -syn match iconFloat "\<\d\+e[-+]\=\d\+\>" +" real, with dot, optional exponent +syn match iconReal "\<\d\+\.\d*\%(e[-+]\=\d\+\)\=\>" -"radix number -syn match iconRadix "\<\d\{1,2}[rR][a-zA-Z0-9]\+\>" +" real, with leading dot, optional exponent +syn match iconReal "\.\d\+\%(e[-+]\=\d\+\)\=\>" +" real, without dot, with exponent +syn match iconReal "\<\d\+e[-+]\=\d\+\>" -" syn match iconIdentifier "\<[a-z_][a-z0-9_]*\>" +syn cluster iconNumber contains=iconInteger,iconReal syn case match -" Comment -syn match iconComment "#.*" contains=iconTodo,iconSpaceError - -syn region iconPreCondit start="^\s*$\s*\(if\>\|ifdef\>\|ifndef\>\|elif\>\|else\>\|endif\>\)" skip="\\$" end="$" contains=iconComment,iconString,iconCharacter,iconNumber,iconCommentError,iconSpaceError - -syn region iconIncluded contained start=+"+ skip=+\\\\\|\\"+ end=+"+ -syn match iconIncluded contained "<[^>]*>" -syn match iconInclude "^\s*$\s*include\>\s*["<]" contains=iconIncluded -"syn match iconLineSkip "\\$" - -syn cluster iconPreProcGroup contains=iconPreCondit,iconIncluded,iconInclude,iconDefine,iconInParen,iconUserLabel - -syn region iconDefine start="^\s*$\s*\(define\>\|undef\>\)" skip="\\$" end="$" contains=ALLBUT,@iconPreProcGroup +" Comments {{{1 +syn keyword iconTodo TODO FIXME XXX BUG contained +syn match iconComment "#.*" contains=iconTodo,iconSpaceError,@Spell +syn match iconDocField "^#\s\+\zs\%(File\|Subject\|Authors\=\|Date\|Version\|Links\|Requires\|See also\):" contained -"wt:syn region iconPreProc "start="^\s*#\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" "end="$" contains=ALLBUT,@iconPreProcGroup - -" Highlight User Labels - -" syn cluster iconMultiGroup contains=iconIncluded,iconSpecial,iconTodo,iconUserCont,iconUserLabel,iconBitField +if exists("icon_no_comment_fold") + syn region iconDocumentation start="\%^#\{2,}\%(\n#\+\%(\s\+.*\)\=\)\+" end="^#\+\n\s*$" contains=iconDocField keepend +else + syn region iconMultilineComment start="^\s*#.*\n\%(^\s*#\)\@=" end="^\s*#.*\n\%(^\s*#\)\@!" contains=iconComment keepend fold transparent + syn region iconDocumentation start="\%^#\{2,}\%(\n#\)\+" end="^#\+\n\%([^#]\|$\)" contains=iconDocField keepend fold +endif +" Preprocessor {{{1 +syn match iconPreInclude '^\s*\zs$\s*include\>\ze\s*"' nextgroup=iconIncluded skipwhite +syn match iconIncluded '"[^"]\+"' contained + +syn region iconPreDefine start="^\s*\zs$\s*\%(define\|undef\)\>" end="$" oneline contains=ALLBUT,@iconPreGroup +syn region iconPreProc start="^\s*\zs$\s*\%(error\|line\)\>" end="$" oneline contains=ALLBUT,@iconPreGroup +syn region iconPreConditional start="^\s*\zs$\s*\%(if\|ifdef\|ifndef\|elif\|else\|endif\)\>" end="$" oneline contains=iconComment,iconString,iconCset,iconNumber,iconSpaceError + +syn cluster iconPreGroup contains=iconPreCondit,iconPreInclude,iconIncluded,iconPreDefine + +syn match iconPreSymbol "_V\d\+" +syn keyword iconPreSymbol _ACORN _AMIGA _ARM_FUNCTIONS _ASCII _CALLING +syn keyword iconPreSymbol _CO_EXPRESSIONS _COMPILED _DIRECT_EXECUTION +syn keyword iconPreSymbol _DOS_FUNCTIONS _EBCDIC _EVENT_MONITOR +syn keyword iconPreSymbol _EXECUTABLE_IMAGES _EXTERNAL_FUNCTIONS +syn keyword iconPreSymbol _EXTERNAL_VALUES _INTERPRETED _KEYBOARD_FUNCTIONS +syn keyword iconPreSymbol _LARGE_INTEGERS _MACINTOSH _MEMORY_MONITOR _MSDOS +syn keyword iconPreSymbol _MSDOS_386 _MULTIREGION _MULTITASKING _OS2 _PIPES +syn keyword iconPreSymbol _PORT _PRESENTATION_MGR _RECORD_IO _STRING_INVOKE +syn keyword iconPreSymbol _SYSTEM_FUNCTION _UNIX _VISUALIZATION _VMS +syn keyword iconPreSymbol _WINDOW_FUNCTIONS _X_WINDOW_SYSTEM + +" Syncing {{{1 if !exists("icon_minlines") - let icon_minlines = 15 + let icon_minlines = 250 endif exec "syn sync ccomment iconComment minlines=" . icon_minlines -" Define the default highlighting. - -" Only when an item doesn't have highlighting - -" The default methods for highlighting. Can be overridden later +" Default Highlighting {{{1 -" hi def link iconSpecialCharacter iconSpecial +hi def link iconParenError iconError +hi def link iconBracketError iconError +hi def link iconBraceError iconError +hi def link iconSpaceError iconError +hi def link iconError Error -hi def link iconOctalError iconError -hi def link iconParenError iconError -hi def link iconInParen iconError -hi def link iconCommentError iconError -hi def link iconSpaceError iconError -hi def link iconCommentError iconError -hi def link iconIncluded iconString -hi def link iconCommentString iconString -hi def link iconComment2String iconString -hi def link iconCommentSkip iconComment +hi def link iconInteger Number +hi def link iconReal Float +hi def link iconString String +hi def link iconCset String +hi def link iconStringSpecial SpecialChar -hi def link iconUserLabel Label -hi def link iconCharacter Character -hi def link iconNumber Number -hi def link iconRadix Number -hi def link iconFloat Float -hi def link iconInclude Include hi def link iconPreProc PreProc -hi def link iconDefine Macro -hi def link iconError Error -hi def link iconStatement Statement -hi def link iconPreCondit PreCondit -hi def link iconString String -hi def link iconCset String -hi def link iconComment Comment -hi def link iconSpecial SpecialChar -hi def link iconTodo Todo -hi def link iconStorageClass StorageClass -hi def link iconFunction Statement -hi def link iconReserved Label -hi def link iconKeyword Operator +hi def link iconIncluded iconString +hi def link iconPreInclude Include +hi def link iconPreSymbol iconPreProc +hi def link iconPreDefine Define +hi def link iconPreConditional PreCondit -"hi def link iconIdentifier Identifier +hi def link iconStatement Statement +hi def link iconStorageClass StorageClass +hi def link iconFunction Function +hi def link iconReserved Label +hi def link iconLink Include +hi def link iconKeyword Keyword +hi def link iconComment Comment +hi def link iconTodo Todo +hi def link iconDocField SpecialComment +hi def link iconDocumentation Comment +" Postscript {{{1 let b:current_syntax = "icon" +" vim: nowrap sw=2 sts=2 ts=8 noet fdm=marker: diff --git a/runtime/syntax/initng.vim b/runtime/syntax/initng.vim index 5d7685cde1..959c79a176 100644 --- a/runtime/syntax/initng.vim +++ b/runtime/syntax/initng.vim @@ -20,7 +20,6 @@ endif syn case match let is_bash = 1 -unlet! b:current_syntax syn include @shTop syntax/sh.vim syn region initngService matchgroup=initngServiceHeader start="^\s*\(service\|virtual\|daemon\|class\|cron\)\s\+\(\(\w\|[-/*]\)\+\(\s\+:\s\+\(\w\|[-/*]\)\+\)\?\)\s\+{" end="}" contains=@initngServiceCluster diff --git a/runtime/syntax/ipfilter.vim b/runtime/syntax/ipfilter.vim index a7b7df2bac..c00762623f 100644 --- a/runtime/syntax/ipfilter.vim +++ b/runtime/syntax/ipfilter.vim @@ -1,7 +1,7 @@ " ipfilter syntax file " Language: ipfilter configuration file " Maintainer: Hendrik Scholz <hendrik@scholz.net> -" Last Change: 2005 Jan 27 +" Last Change: 2022 Jun 14 " " http://www.wormulon.net/files/misc/ipfilter.vim " @@ -52,3 +52,4 @@ hi def link IPFNetmask String hi def link IPFAny Statement hi def link IPFProto Identifier +let b:current_syntax = 'ipfilter' 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/krl.vim b/runtime/syntax/krl.vim new file mode 100644 index 0000000000..a50790841e --- /dev/null +++ b/runtime/syntax/krl.vim @@ -0,0 +1,458 @@ +" Vim syntax file +" Language: Kuka Robot Language +" Maintainer: Patrick Meiser-Knosowski <knosowski@graeffrobotics.de> +" Version: 3.0.0 +" Last Change: 18. Apr 2022 +" Credits: Thanks for contributions to this to Michael Jagusch +" Thanks for beta testing to Thomas Baginski +" +" Note to self: +" for testing perfomance +" open a 1000 lines file. +" :syntime on +" G +" hold down CTRL-U until reaching top +" :syntime report + +" Init {{{ +if exists("b:current_syntax") + finish +endif + +let s:keepcpo = &cpo +set cpo&vim + +" if colorscheme is tortus(less)? krlGroupName defaults to 1 +if get(g:, 'colors_name', " ") =~ '\<tortus' + \&& !exists("g:krlGroupName") + let g:krlGroupName=1 +endif +" krlGroupName defaults to 0 if it's not initialized yet or 0 +if !get(g:, "krlGroupName", 0) + let g:krlGroupName = 0 +endif + +" krl does ignore case +syn case ignore +" take #, $ and & into keyword (syntax only) +syn iskeyword @,48-57,_,192-255,#,$,& +" spell checking +syn spell notoplevel +" }}} init + +" Comment and Folding {{{ + +" Special Comment + +" TODO Comment +syn keyword krlTodo contained TODO FIXME XXX +highlight default link krlTodo Todo + +" Debug Comment +syn keyword krlDebug contained DEBUG +highlight default link krlDebug Debug + +" Comment +" none move fold comment until second ; +syn match krlFoldComment /\c\v^\s*;\s*%(end)?fold>[^;]*/ containedin=krlFold contains=krlSingleQuoteString,krlInteger,krlFloat,krlMovement,krlDelimiter,krlBoolean +highlight default link krlFoldComment Comment + +" move fold comment until second ; +syn match krlMoveFoldComment /\c\v^\s*;\s*fold>[^;]*<s?%(ptp|lin|circ|spl)(_rel)?>[^;]*/ containedin=krlFold contains=krlInteger,krlFloat,krlMovement,krlDelimiter +highlight default link krlMoveFoldComment Comment + +" things to highlight in a fold line +syn keyword krlFoldHighlights CONT IN SYN OUT containedin=krlFoldComment +syn match krlFoldHighlights /\c\v<(M|F|E|A|t|i|bin|binin|UP|SPSMAKRO)\d+>/ containedin=krlFoldComment +if g:krlGroupName + highlight default link krlFoldHighlights Sysvars +else + " default color for Fold Highlights +endif +syn keyword krlVkrcFoldConstants EIN AUS containedin=krlFoldComment +highlight default link krlVkrcFoldConstants Boolean + +" Comment without Fold, also includes endfold lines and fold line part after second ; +syn match krlComment /\c\v;\s*%(<%(end)?fold>)@!.*$/ containedin=krlFold contains=krlTodo,krlDebug,@Spell +" Commented out Fold line: "; ;FOLD PTP..." +syn match krlComment /\c\v^\s*;\s*;.*$/ contains=krlTodo,krlDebug +highlight default link krlComment Comment + +if has("conceal") && get(g:, 'krlConcealFoldTail', 1) + syn match krlConcealFoldTail /\c\v(^\s*;\s*fold[^;]*)@250<=;%(--|\s*<fold>|\s*<endfold>)@!.*$/ transparent containedin=krlComment conceal cchar=* +endif +" }}} Comment and Folding + +" Header {{{ +syn match krlHeader /&\a\w*/ +highlight default link krlHeader PreProc +" }}} Header + +" Operator {{{ +" Boolean operator +syn keyword krlBoolOperator and or exor not b_and b_or b_exor b_not +highlight default link krlBoolOperator Operator +" Arithmetic operator +syn match krlArithOperator /[+-]/ containedin=krlFloat +syn match krlArithOperator /[*/]/ +highlight default link krlArithOperator Operator +" Compare operator +syn match krlCompOperator /[<>=]/ +highlight default link krlCompOperator Operator +" Geometric operator +" Do not move the : operator +" Must be present befor krlParamdef +syn match krlGeomOperator /[:]/ +" syn match krlGeomOperator /[:]/ containedin=krlLabel,krlParamdef +highlight default link krlGeomOperator Operator +" }}} Operator + +" Type, StorageClass and Typedef {{{ +" Simple data types +syn keyword krlType bool char real int containedin=krlAnyType +" External program and function +syn keyword krlType ext extfct extfctp extp containedin=krlAnyType +" Communication +syn keyword krlType signal channel containedin=krlAnyType +highlight default link krlType Type +" StorageClass +syn keyword krlStorageClass decl global const struc enum +highlight default link krlStorageClass StorageClass +" .dat file public +syn keyword krlDatStorageClass public +highlight default link krlDatStorageClass StorageClass +" Parameter StorageClass +" Do not move the :in/:out +" Must be present after krlGeomOperator +syn match krlParamdef /[:]\s*in\>/ +syn match krlParamdef /[:]\s*out\>/ +highlight default link krlParamdef StorageClass +" Not a typedef but I like to have those highlighted +" different then types, structures or strorage classes +syn keyword krlTypedef DEF DEFFCT ENDFCT DEFDAT ENDDAT +syn match krlTypedef /^\s*END\>/ +highlight default link krlTypedef Typedef +" }}} Type, StorageClass and Typedef + +" Delimiter {{{ +syn match krlDelimiter /[\[\](),\\]/ +highlight default link krlDelimiter Delimiter +" }}} Delimiter + +" Constant values {{{ +" Boolean +syn keyword krlBoolean true false containedin=krlStructVal +highlight default link krlBoolean Boolean +" Binary integer +syn match krlBinaryInt /'b[01]\+'/ containedin=krlStructVal +highlight default link krlBinaryInt Number +" Hexadecimal integer +syn match krlHexInt /'h[0-9a-fA-F]\+'/ containedin=krlStructVal +highlight default link krlHexInt Number +" Integer +syn match krlInteger /\W\@1<=[+-]\?\d\+/ containedin=krlStructVal,krlFloat contains=krlArithOperator +highlight default link krlInteger Number +" Float +syn match krlFloat /\v\W@1<=[+-]?\d+\.?\d*%(\s*[eE][+-]?\d+)?/ containedin=krlStructVal +highlight default link krlFloat Float +" String +syn region krlString start=/"/ end=/"/ oneline containedin=krlStructVal contains=@Spell +highlight default link krlString String +syn match krlSpecialChar /[|]/ containedin=krlString +highlight default link krlSpecialChar SpecialChar +" String within a fold line +syn region krlSingleQuoteString start=/'/ end=/'/ oneline contained contains=@Spell +highlight default link krlSingleQuoteString String +" Enum +syn match krlEnumVal /#\s*\a\w*/ containedin=krlStructVal +highlight default link krlEnumVal Constant +" }}} Constant values + +" Predefined Structure and Enum {{{ +" Predefined structures and enums found in +" /r1/mada/$*.dat, /r1/steu/$*.dat and +" /r1/system/$config.dat as well as +" basisTech, gripperTech and spotTech +" +" Predefined data types found in krc1 +syn keyword krlStructure servopara keymove powermodul trace techangle tech techfct techcps techfctctrl axis_inc axis_cal date display_var pro_ip con bus +syn keyword krlEnum ident_state sig_state move_state async_state emt_mode boxmode msg_prm_typ msg_typ cmd_stat asys trace_state trace_mode direction techsys techgeoref techclass techmode hpu_key_val pro_state eax transsys mode_move cosys device rotsys emstop cause_t +" +" Predefined data types found in kss functions +syn keyword krlEnum ediagstate rdc_fs_state ret_c_psync_e var_type cancel_psync_e sys_vars +syn keyword krlStructure siginf rw_rdc_file rw_mam_file diagpar_t error_t stopmess case_sense_t msgbuf_t e3pos e3axis diagopt_t +" +" Predefined structures for movement +syn keyword krlStructure frame e6pos pos e6axis axis +syn keyword krlStructure fdat ldat pdat +syn keyword krlStructure load inertia +" +" Predefined structures for shapes +syn keyword krlStructure axbox cylinder box +" +" Predefined structures and enums found in /r1/mada/$machine.dat +syn keyword krlStructure cp fra acc_car jerk_struc dhart spin trpspin ex_kin et_ax maxtool +syn keyword krlEnum individual_mames supply_voltage kinclass main_axis wrist_axis sw_onoff +" +" Predefined structures and enums found in /r1/mada/$robcor.dat +" syn keyword krlStructure +syn keyword krlEnum adap_acc model_type control_parameter eko_mode +" +" Predefined structures and enums found in /steu/mada/$custom.dat +syn keyword krlStructure pro_io_t ser ext_mod_t coop_krc ws_config bin_type coop_update_t ldc_reaction +syn keyword krlEnum axis_of_coordinates spline_para_variant target_status cp_vel_type cp_statmon +" +" Predefined structures and enums found in /steu/mada/$machine.dat +syn keyword krlStructure emstop_path boxstatesafein boxstatesafeout +syn keyword krlEnum digincode +" +" Predefined structures and enums found in /steu/mada/$option.dat +syn keyword krlStructure msg_t +" syn keyword krlEnum +" +" Predefined structures and enums found in /r1/system/$config.dat +" BasisTech +syn keyword krlStructure dig_out_type ctrl_in_t ctrl_out_t fct_out_t fct_in_t odat basis_sugg_t out_sugg_t md_state machine_def_t machine_tool_t machine_frame_t trigger_para constvel_para condstop_para adat tm_sugg_t tqm_tqdat_t sps_prog_type +syn keyword krlEnum bas_command out_modetype ipo_m_t apo_mode_t funct_type p00_command timer_actiontype +" +" GripperTech +syn keyword krlStructure grp_typ grp_types grp_sugg_t +syn keyword krlEnum on_off_typ apo_typ +" +" SpotTech +syn keyword krlStructure spot_type spot_sugg_t +syn keyword krlEnum s_command s_pair_slct command_retr +" +" VW +syn keyword krlStructure vw_mpara_typ zangentyp zangenbedingung ibszangentyp last_ibs_typ verr_typ verrcheck_t t_fb_state kollisionsdaten state_t modus_t +syn keyword krlEnum synctype dir_typ subtype ari_typ bool_typ vw_command ibgn_command vw_user_cmd move_types adv_t_type bas_type ibs_mode_typ vw_user_cmd pro_mode mode_op +" +" ProgCoop +syn keyword krlStructure ydat +" syn keyword krlEnum +" +" bas.src +syn keyword krlStructure cont +syn keyword krlEnum esys ipo_mode circ_mode circ_type ori_type var_state +" +" MsgLib.src +syn keyword krlStructure KrlMsg_T KrlMsgParType_T KrlMsgPar_T KrlMsgOpt_T KrlMsgDlgSK_T +syn keyword krlEnum EKrlMsgType +" +highlight default link krlStructure Structure +highlight default link krlEnum Structure +" }}} Predefined Structure and Enum + +" System variable {{{ +syn match krlSysvars /\<\$\a[a-zA-Z0-9_.]*/ +if g:krlGroupName + highlight default link krlSysvars Sysvars +else + " default color for Sysvars +endif +" }}} System variable + +" Statements, keywords et al {{{ +" continue +syn keyword krlContinue continue +if g:krlGroupName + highlight default link krlContinue Continue +else + highlight default link krlContinue Statement +endif +" interrupt +syn match krlStatement /\v\c%(<global>\s+)?<INTERRUPT>%(\s+<decl>)?/ contains=krlStorageClass +" keywords +syn keyword krlStatement wait on off enable disable stop trigger with when distance onstart delay do prio import is minimum maximum confirm on_error_proceed +syn match krlStatement /\v\c%(<wait\s+)@7<=<sec>/ +syn match krlStatement /\v\c%(<when\s+)@7<=<path>/ +highlight default link krlStatement Statement +" Conditional +syn keyword krlConditional if then else endif switch case default endswitch skip endskip +highlight default link krlConditional Conditional +" Repeat +syn keyword krlRepeat for to step endfor while endwhile repeat until loop endloop exit +highlight default link krlRepeat Repeat +" Label +syn keyword krlLabel goto +syn match krlLabel /^\s*\w\+:\ze\s*\%(;.*\)\?$/ +highlight default link krlLabel Label +" Keyword +syn keyword krlKeyword anin anout digin +highlight default link krlKeyword Keyword +" Exception +syn keyword krlException return resume halt +highlight default link krlException Exception +" }}} Statements, keywords et al + +" special keywords for movement commands {{{ +syn keyword krlMovement PTP PTP_REL LIN LIN_REL CIRC CIRC_REL SPL SPL_REL SPTP SPTP_REL SLIN SLIN_REL SCIRC SCIRC_REL +syn keyword krlMovement ASYPTP ASYCONT ASYSTOP ASYCANCEL MOVE_EMI +syn match krlMovement /\v\c^\s*<BRAKE(\s+F)?>/ +if g:krlGroupName + highlight default link krlMovement Movement +else + highlight default link krlMovement Special +endif +" movement modifiers +syn match krlMoveBlockInst /\c\v^\s*TIME_BLOCK\s+(START|PART|END)/ +syn match krlMoveBlockInst /\c\v^\s*CONST_VEL\s+(START|END)/ +syn keyword krlMoveBlockInst ptp_spline spline endspline +highlight default link krlMoveBlockInst Statement +syn keyword krlMoveMod ca c_ptp c_dis c_vel c_ori c_spl +if g:krlGroupName + highlight default link krlMoveMod Movement +else + highlight default link krlMoveMod Special +endif +" }}} special keywords for movement commands + +" Structure value {{{ +" avoid coloring structure component names +syn match krlNames /\.[a-zA-Z_][.a-zA-Z0-9_$]*/ +syn match krlNames contained /[a-zA-Z_][.a-zA-Z0-9_$]*/ +" highlight default link krlNames None +" Structure value +syn region krlStructVal start=/{/ end=/}/ oneline containedin=krlStructVal contains=krlNames +highlight default link krlStructVal Delimiter +" }}} Structure value + +" BuildInFunction {{{ +syn keyword krlBuildInFunction contained Pulse +syn keyword krlBuildInFunction contained m_comment +syn keyword krlBuildInFunction contained is_key_pressed +syn keyword krlBuildInFunction contained set_opt_filter +syn keyword krlBuildInFunction contained timer_limit +syn keyword krlBuildInFunction contained tool_adj +syn keyword krlBuildInFunction contained FRand +syn keyword krlBuildInFunction contained ExecFunc eb_test EB EK EO LK mbx_rec +" safe robot +syn keyword krlbuildinfunction contained get_AxesMask get_BrakeTest_Time +" math +syn keyword krlBuildInFunction contained Abs Sin Cos Acos Tan Atan Atan2 Sqrt +syn keyword krlBuildInFunction contained Forward Inverse inv_pos +" cFoo sFoo +syn keyword krlBuildInFunction contained cClose cOpen cRead cWrite sRead sWrite +" string +syn keyword krlBuildInFunction contained StrToBool StrToInt StrToReal StrToString StrToFrame StrToPos StrToE3Pos StrToE6Pos StrToAxis StrToE3Axis StrToE6Axis +syn keyword krlBuildInFunction contained StrAdd StrClear StrCopy StrComp StrFind StrLen StrDeclLen StrToBool StrToInt StrToReal StrToString +" diag +syn keyword krlBuildInFunction contained diag_start diag_stop get_DiagState +" rdc mam pid +syn keyword krlBuildInFunction contained CheckPidOnRdc check_mam_on_rdc get_rdc_fs_state +syn keyword krlBuildInFunction contained set_mam_on_hd copy_mam_hd_to_rdc copy_mam_rdc_to_hd +syn keyword krlBuildInFunction contained PidToHd PidToRdc +syn keyword krlBuildInFunction contained cal_to_rdc rdc_file_to_hd +syn keyword krlBuildInFunction contained delete_pid_on_rdc delete_rdc_content +syn keyword krlBuildInFunction contained create_rdc_archive restore_rdc_archive +" ioctl +syn keyword krlBuildInFunction contained IOCtl cIOCtl +syn keyword krlBuildInFunction contained WSpaceGive WSpaceTake +" sync +syn keyword krlBuildInFunction contained Sync SyncCmd CancelProgSync +" remote +syn keyword krlBuildInFunction contained RemoteCmd RemoteRead +" msg/dlg +syn keyword krlBuildInFunction contained IsMessageSet clear_KrlMsg get_MsgBuffer exists_KrlDlg exists_KrlMsg set_KrlDlg set_KrlDlgAnswer set_KrlMsg +" robvers +syn keyword krlBuildInFunction contained maximize_UsedxRobvers set_UsedxRobvers +" md_foo +syn keyword krlBuildInFunction contained md_Cmd md_GetState md_SetState md_Asgn +" emi +syn keyword krlBuildInFunction contained emi_ActPos emi_EndPos emi_StartPos emi_RecState emi_RecName +" var +syn keyword krlBuildInFunction contained cast_from cast_to +syn keyword krlBuildInFunction contained GetVarsize GetCycDef get_sig_inf get_decl_place VarType VarState +" sys +syn keyword krlBuildInFunction contained GetSysState get_system_data set_system_data set_system_data_delayed +" err +syn keyword krlBuildInFunction contained err_clear err_raise +" motion +syn keyword krlBuildInFunction contained delete_backward_buffer rob_stop rob_stop_release set_brake_delay suppress_repositioning VectorMoveOn VectorMoveOff +" torque +syn keyword krlBuildInFunction contained set_torque_limits reset_torque_limits +" krc1 +syn keyword krlBuildInFunction contained cLcopy cCurpos cNew cClear cRelease cKey +if g:krlGroupName + highlight default link krlBuildInFunction BuildInFunction +else + highlight default link krlBuildInFunction Function +endif +" }}} BuildInFunction + +" Function {{{ +syn match krlFunction /[a-zA-Z_]\w* *(/me=e-1 contains=krlBuildInFunction +highlight default link krlFunction Function +" }}} Function + +" Error {{{ +if get(g:, 'krlShowError', 1) + " some more or less common typos + " + " vars or funcs >24 chars are not possible in krl. a234567890123456789012345 + syn match krlError0 /\w\{25,}/ containedin=krlFunction,krlNames,krlLabel,krlAnyType,krlEnumVal,krlSysvars + " + " should be interrupt (on|off) \w+ + syn match krlError1 /\vinterrupt[ \t(]+[_$a-zA-Z0-9]+[_$a-zA-Z0-9.\[\]()+\-*/]*[ \t)]+o%(n|ff)>/ + " + " for bla==5 to 7... + " || + syn match krlError3 /\v%(^\s*for%(\(|\s)+[_$a-zA-Z]+[_$a-zA-Z0-9.\[\]()+\-*/ ]*\s*)@<=[:=]\=/ + " + " TODO optimize performance + " wait for a=b + " | + syn match krlError4 /\v%(^\s*%(return|wait\s+for|if|while|until|%(global\s+)?interrupt\s+decl)>[^;]+[^;<>=])@<=\=[^=]/ + " + " wait for a><b + " || + syn match krlError5 /\v%(^\s*%(return|wait\s+for|if|while|until|%(global\s+)?interrupt\s+decl)>[^;]+)@<=\>\s*\</ + " + " if (a==5) (b==6) ... + " ||| + syn match krlError6 /\v%(^\s*%(return|wait\s+for|if|while|until|%(global\s+)?interrupt\s+decl)>[^;]+[^;])@<=\)\s*\(/ + " + " TODO optimize performance + " a == b + 1 + " a := b + 1 + " || + syn match krlError7 /\v%(^\s*%(return|wait\s+for|if|while|until|%(global\s+)?interrupt\s+decl)>[^;]+[^;])@1<!%(^\s*[_$a-zA-Z]+[_$a-zA-Z0-9.\[\],+\-*/]*\s*)@<=[:=]\=/ + syn match krlError7 /\v\c%(^\s*%(decl\s+)%(global\s+)?%(const\s+)?\w+\s+\w+\s*)@<=[:=]\=/ + syn match krlError7 /\v\c%(^\s*%(decl\s+)?%(global\s+)?%(const\s+)?%(bool\s+|int\s+|real\s+|char\s+)\w+\s*)@<=[:=]\=/ + " + " this one is tricky. Make sure this does not match trigger instructions; OK, next try, now search for false positives + " TODO optimize performance + " a = b and c or (int1=int2) + " | + syn match krlError8 /\v(^\s*[_$a-zA-Z]+[_$a-zA-Z0-9.\[\]()+\-*/]*\s*\=[^;]*[^;<>=])@<=\=\ze[^=]/ + " + " <(distance|delay|prio)> := + " <(distance|delay|prio)> == + " || + syn match krlError9 /\v(^[^;]*<(distance|delay|prio|minimum|maximum)\s*)@<=[:=]\=/ + " + " 'for', 'while' or 'repeat' followed by 'do' + syn match krlError10 /\c\v^\s*(until|while|for)>[^;]*<do>/ + " + highlight default link krlError0 Error + highlight default link krlError1 Error + highlight default link krlError2 Error + highlight default link krlError3 Error + highlight default link krlError4 Error + highlight default link krlError5 Error + highlight default link krlError6 Error + highlight default link krlError7 Error + highlight default link krlError8 Error + highlight default link krlError9 Error + highlight default link krlError10 Error +endif +" }}} Error + +" Finish {{{ +let &cpo = s:keepcpo +unlet s:keepcpo + +let b:current_syntax = "krl" +" }}} Finish + +" vim:sw=2 sts=2 et fdm=marker diff --git a/runtime/syntax/liquid.vim b/runtime/syntax/liquid.vim index 295a91775e..966b60f6f8 100644 --- a/runtime/syntax/liquid.vim +++ b/runtime/syntax/liquid.vim @@ -2,7 +2,7 @@ " Language: Liquid " Maintainer: Tim Pope <vimNOSPAM@tpope.org> " Filenames: *.liquid -" Last Change: 2013 May 30 +" Last Change: 2022 Mar 15 if exists('b:current_syntax') finish @@ -68,10 +68,10 @@ if !exists('s:subtype') unlet s:subtype endif -syn region liquidStatement matchgroup=liquidDelimiter start="{%" end="%}" contains=@liquidStatement containedin=ALLBUT,@liquidExempt keepend -syn region liquidExpression matchgroup=liquidDelimiter start="{{" end="}}" contains=@liquidExpression containedin=ALLBUT,@liquidExempt keepend -syn region liquidComment matchgroup=liquidDelimiter start="{%\s*comment\s*%}" end="{%\s*endcomment\s*%}" contains=liquidTodo,@Spell containedin=ALLBUT,@liquidExempt keepend -syn region liquidRaw matchgroup=liquidDelimiter start="{%\s*raw\s*%}" end="{%\s*endraw\s*%}" contains=TOP,@liquidExempt containedin=ALLBUT,@liquidExempt keepend +syn region liquidStatement matchgroup=liquidDelimiter start="{%-\=" end="-\=%}" contains=@liquidStatement containedin=ALLBUT,@liquidExempt keepend +syn region liquidExpression matchgroup=liquidDelimiter start="{{-\=" end="-\=}}" contains=@liquidExpression containedin=ALLBUT,@liquidExempt keepend +syn region liquidComment matchgroup=liquidDelimiter start="{%-\=\s*comment\s*-\=%}" end="{%-\=\s*endcomment\s*-\=%}" contains=liquidTodo,@Spell containedin=ALLBUT,@liquidExempt keepend +syn region liquidRaw matchgroup=liquidDelimiter start="{%-\=\s*raw\s*-\=%}" end="{%-\=\s*endraw\s*-\=%}" contains=TOP,@liquidExempt containedin=ALLBUT,@liquidExempt keepend syn cluster liquidExempt contains=liquidStatement,liquidExpression,liquidComment,liquidRaw,@liquidStatement,liquidYamlHead syn cluster liquidStatement contains=liquidConditional,liquidRepeat,liquidKeyword,@liquidExpression @@ -79,11 +79,11 @@ syn cluster liquidExpression contains=liquidOperator,liquidString,liquidNumber,l syn keyword liquidKeyword highlight nextgroup=liquidTypeHighlight skipwhite contained syn keyword liquidKeyword endhighlight contained -syn region liquidHighlight start="{%\s*highlight\s\+\w\+\s*%}" end="{% endhighlight %}" keepend +syn region liquidHighlight start="{%-\=\s*highlight\s\+\w\+\s*-\=%}" end="{%-\= endhighlight -\=%}" keepend for s:type in g:liquid_highlight_types exe 'syn match liquidTypeHighlight "\<'.matchstr(s:type,'[^=]*').'\>" contained' - exe 'syn region liquidHighlight'.substitute(matchstr(s:type,'[^=]*$'),'\..*','','').' start="{%\s*highlight\s\+'.matchstr(s:type,'[^=]*').'\s*%}" end="{% endhighlight %}" keepend contains=@liquidHighlight'.substitute(matchstr(s:type,'[^=]*$'),'\.','','g') + exe 'syn region liquidHighlight'.substitute(matchstr(s:type,'[^=]*$'),'\..*','','').' start="{%-\=\s*highlight\s\+'.matchstr(s:type,'[^=]*').'\s*-\=%}" end="{%-\= endhighlight -\=%}" keepend contains=@liquidHighlight'.substitute(matchstr(s:type,'[^=]*$'),'\.','','g') endfor unlet! s:type @@ -92,18 +92,18 @@ syn region liquidString matchgroup=liquidQuote start=+'+ end=+'+ contained syn match liquidNumber "-\=\<\d\+\>" contained syn match liquidFloat "-\=\<\d\+\>\.\.\@!\%(\d\+\>\)\=" contained syn keyword liquidBoolean true false contained -syn keyword liquidNull null nil contained +syn keyword liquidNull null nil blank contained syn match liquidEmpty "\<empty\>" contained syn keyword liquidOperator and or not contained syn match liquidPipe '|' contained skipwhite nextgroup=liquidFilter -syn keyword liquidFilter date capitalize downcase upcase first last join sort size strip_html strip_newlines newline_to_br replace replace_first remove remove_first truncate truncatewords prepend append minus plus times divided_by contained +syn keyword liquidFilter date capitalize downcase upcase escape escape_once first last join sort size where uniq strip_html strip_newlines newline_to_br replace replace_first remove remove_first slice split strip truncate truncatewords prepend append url_encode url_decode abs at_most at_least ceil divided_by floor minus plus round times modulo contained syn keyword liquidConditional if elsif else endif unless endunless case when endcase ifchanged endifchanged contained -syn keyword liquidRepeat for endfor tablerow endtablerow in contained -syn match liquidRepeat "\%({%\s*\)\@<=empty\>" contained -syn keyword liquidKeyword assign cycle include with contained +syn keyword liquidRepeat for endfor tablerow endtablerow in break continue limit offset reversed contained +syn match liquidRepeat "\%({%-\=\s*\)\@<=empty\>" contained +syn keyword liquidKeyword assign capture endcapture increasement decreasement cycle include with render contained syn keyword liquidForloop forloop nextgroup=liquidForloopDot contained syn match liquidForloopDot "\." nextgroup=liquidForloopAttribute contained diff --git a/runtime/syntax/lsp_markdown.vim b/runtime/syntax/lsp_markdown.vim index 90d3185673..4be7595807 100644 --- a/runtime/syntax/lsp_markdown.vim +++ b/runtime/syntax/lsp_markdown.vim @@ -1,23 +1,34 @@ " Vim syntax file -" Language: lsp_markdown -" Maintainer: Michael Lingelbach <m.j.lbach@gmail.com -" URL: http://neovim.io -" Remark: Uses markdown syntax file +" Language: Markdown-like LSP docstrings +" Maintainer: https://github.com/neovim/neovim +" URL: http://neovim.io +" Remark: Uses markdown syntax file -" always source the system included markdown instead of any other installed -" markdown.vim syntax files +" Source the default Nvim markdown syntax, not other random ones. execute 'source' expand('<sfile>:p:h') .. '/markdown.vim' syn cluster mkdNonListItem add=mkdEscape,mkdNbsp +" Don't highlight invalid markdown syntax in LSP docstrings. +syn clear markdownError + syn clear markdownEscape syntax region markdownEscape matchgroup=markdownEscape start=/\\\ze[\\\x60*{}\[\]()#+\-,.!_>~|"$%&'\/:;<=?@^ ]/ end=/./ containedin=ALL keepend oneline concealends -" conceal html entities +" Conceal backticks (which delimit code fragments). +" We ignore g:markdown_syntax_conceal here. +syn region markdownCode matchgroup=markdownCodeDelimiter start="`" end="`" keepend contains=markdownLineStart concealends +syn region markdownCode matchgroup=markdownCodeDelimiter start="`` \=" end=" \=``" keepend contains=markdownLineStart concealends +syn region markdownCode matchgroup=markdownCodeDelimiter start="^\s*````*.*$" end="^\s*````*\ze\s*$" keepend concealends + +" Highlight code fragments. +hi def link markdownCode Special + +" Conceal HTML entities. syntax match mkdNbsp / / conceal cchar= syntax match mkdLt /</ conceal cchar=< syntax match mkdGt />/ conceal cchar=> syntax match mkdAmp /&/ conceal cchar=& syntax match mkdQuot /"/ conceal cchar=" -hi def link mkdEscape special +hi def link mkdEscape Special diff --git a/runtime/syntax/lua.vim b/runtime/syntax/lua.vim index f313c14e7a..b398e2e5c6 100644 --- a/runtime/syntax/lua.vim +++ b/runtime/syntax/lua.vim @@ -2,7 +2,7 @@ " Language: Lua 4.0, Lua 5.0, Lua 5.1 and Lua 5.2 " Maintainer: Marcus Aurelius Farias <masserahguard-lua 'at' yahoo com> " First Author: Carlos Augusto Teixeira Mendes <cmendes 'at' inf puc-rio br> -" Last Change: 2012 Aug 12 +" Last Change: 2022 Mar 31 " Options: lua_version = 4 or 5 " lua_subversion = 0 (4.0, 5.0) or 1 (5.1) or 2 (5.2) " default 5.2 @@ -319,6 +319,15 @@ elseif lua_version == 5 syn match luaFunc /\<debug\.upvalueid\>/ syn match luaFunc /\<debug\.upvaluejoin\>/ endif + if lua_subversion >= 3 + "https://www.lua.org/manual/5.3/manual.html#6.5 + syn match luaFunc /\<utf8\.char\>/ + syn match luaFunc /\<utf8\.charpattern\>/ + syn match luaFunc /\<utf8\.codes\>/ + syn match luaFunc /\<utf8\.codepoint\>/ + syn match luaFunc /\<utf8\.len\>/ + syn match luaFunc /\<utf8\.offset\>/ + endif endif " Define the default highlighting. diff --git a/runtime/syntax/m4.vim b/runtime/syntax/m4.vim index 6f229ea1ab..f90197aeb0 100644 --- a/runtime/syntax/m4.vim +++ b/runtime/syntax/m4.vim @@ -2,7 +2,8 @@ " Language: M4 " Maintainer: Claudio Fleiner (claudio@fleiner.com) " URL: http://www.fleiner.com/vim/syntax/m4.vim -" Last Change: 2005 Jan 15 +" (outdated) +" Last Change: 2022 Jun 12 " This file will highlight user function calls if they use only " capital letters and have at least one argument (i.e. the '(' @@ -21,6 +22,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 +34,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/man.vim b/runtime/syntax/man.vim index 55b0e16de9..89162f1e20 100644 --- a/runtime/syntax/man.vim +++ b/runtime/syntax/man.vim @@ -10,7 +10,7 @@ syntax match manReference display '[^()[:space:]]\+(\%([0-9][a-z]*\|[nlpox] syntax match manSectionHeading display '^\S.*$' syntax match manHeader display '^\%1l.*$' syntax match manSubHeading display '^ \{3\}\S.*$' -syntax match manOptionDesc display '^\s\+\%(+\|-\)\S\+' +syntax match manOptionDesc display '^\s\+\(\%(+\|-\)\S\+,\s\+\)*\%(+\|-\)\S\+' highlight default link manHeader Title highlight default link manSectionHeading Statement diff --git a/runtime/syntax/masm.vim b/runtime/syntax/masm.vim index c3b2a9bd63..3be0fd45d1 100644 --- a/runtime/syntax/masm.vim +++ b/runtime/syntax/masm.vim @@ -2,7 +2,7 @@ " Language: Microsoft Macro Assembler (80x86) " Orig Author: Rob Brady <robb@datatone.com> " Maintainer: Wu Yongwei <wuyongwei@gmail.com> -" Last Change: 2020-05-09 22:55:38 +0800 +" Last Change: 2022-04-24 20:07:04 +0800 " Quit when a syntax file was already loaded if exists("b:current_syntax") @@ -68,6 +68,7 @@ syn keyword masmType STDCALL SYSCALL C BASIC FORTRAN PASCAL syn keyword masmType PTR NEAR FAR NEAR16 FAR16 NEAR32 FAR32 syn keyword masmType REAL4 REAL8 REAL10 BYTE SBYTE TBYTE syn keyword masmType WORD DWORD QWORD FWORD SWORD SDWORD +syn keyword masmType SQWORD OWORD MMWORD XMMWORD YMMWORD syn keyword masmOperator AND NOT OR SHL SHR XOR MOD DUP syn keyword masmOperator EQ GE GT LE LT NE syn keyword masmOperator LROFFSET SEG LENGTH LENGTHOF SIZE SIZEOF diff --git a/runtime/syntax/mason.vim b/runtime/syntax/mason.vim index f087def794..e1638ece75 100644 --- a/runtime/syntax/mason.vim +++ b/runtime/syntax/mason.vim @@ -1,11 +1,12 @@ " Vim syntax file -" Language: Mason (Perl embedded in HTML) -" Maintainer: vim-perl <vim-perl@googlegroups.com> -" Homepage: http://github.com/vim-perl/vim-perl/tree/master -" Bugs/requests: http://github.com/vim-perl/vim-perl/issues -" Last Change: 2017-09-12 -" Contributors: Hinrik Örn Sigurðsson <hinrik.sig@gmail.com> -" Andrew Smith <andrewdsmith@yahoo.com> +" Language: Mason (Perl embedded in HTML) +" Maintainer: vim-perl <vim-perl@googlegroups.com> +" Homepage: https://github.com/vim-perl/vim-perl +" Bugs/requests: https://github.com/vim-perl/vim-perl/issues +" License: Vim License (see :help license) +" Last Change: 2021 Oct 10 +" Contributors: Hinrik Örn Sigurðsson <hinrik.sig@gmail.com> +" Andrew Smith <andrewdsmith@yahoo.com> " " TODO: " - Fix <%text> blocks to show HTML tags but ignore Mason tags. @@ -74,6 +75,7 @@ syn cluster masonTop contains=masonLine,masonExpr,masonPerl,masonComp,masonArgs, " syntax files. hi def link masonDoc Comment hi def link masonPod Comment +hi def link podOrdinary masonPod hi def link masonPerlComment perlComment let b:current_syntax = "mason" diff --git a/runtime/syntax/mupad.vim b/runtime/syntax/mupad.vim index 55ea9c4e43..df87ad14fe 100644 --- a/runtime/syntax/mupad.vim +++ b/runtime/syntax/mupad.vim @@ -279,5 +279,6 @@ hi def link mupadType Type hi def link mupadDefine Define hi def link mupadIdentifier Identifier +let b:current_syntax = 'mupad' " TODO More comprehensive listing. diff --git a/runtime/syntax/neomuttrc.vim b/runtime/syntax/neomuttrc.vim index bd73de49ea..421b11ffa3 100644 --- a/runtime/syntax/neomuttrc.vim +++ b/runtime/syntax/neomuttrc.vim @@ -2,10 +2,10 @@ " Language: NeoMutt setup files " Maintainer: Richard Russon <rich@flatcap.org> " Previous Maintainer: Guillaume Brogi <gui-gui@netcourrier.com> -" Last Change: 2020-06-21 +" Last Change: 2022-04-08 " Original version based on syntax/muttrc.vim -" This file covers NeoMutt 2020-06-19 +" This file covers NeoMutt 2022-04-08 " quit when a syntax file was already loaded if exists("b:current_syntax") @@ -115,6 +115,8 @@ syntax region muttrcIndexFormatStr contained skipwhite keepend start=+"+ sk syntax region muttrcIndexFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcIndexFormatEscapes,muttrcIndexFormatConditionals,muttrcFormatErrors,muttrcTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syntax region muttrcMixFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcMixFormatEscapes,muttrcMixFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syntax region muttrcMixFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcMixFormatEscapes,muttrcMixFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syntax region muttrcPatternFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcPatternFormatEscapes,muttrcPatternFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syntax region muttrcPatternFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcPatternFormatEscapes,muttrcPatternFormatConditionals,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syntax region muttrcPGPCmdFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcPGPCmdFormatEscapes,muttrcPGPCmdFormatConditionals,muttrcVariable,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syntax region muttrcPGPCmdFormatStr contained skipwhite keepend start=+'+ skip=+\\'+ end=+'+ contains=muttrcPGPCmdFormatEscapes,muttrcPGPCmdFormatConditionals,muttrcVariable,muttrcFormatErrors nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr syntax region muttrcPGPFormatStr contained skipwhite keepend start=+"+ skip=+\\"+ end=+"+ contains=muttrcPGPFormatEscapes,muttrcPGPFormatConditionals,muttrcFormatErrors,muttrcPGPTimeEscapes nextgroup=muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr @@ -144,35 +146,37 @@ function! s:escapesConditionals(baseName, sequence, padding, conditional) endif endfunction -" CHECKED 2020-06-21 -" Ref: alias_format_str() in alias/dlgalias.c +" CHECKED 2022-04-08 +" Ref: alias_format_str() in alias/dlg_alias.c call s:escapesConditionals('AliasFormat', '[acfnrt]', 1, 0) -" Ref: attach_format_str() in recvattach.c +" Ref: attach_format_str() in attach/dlg_attach.c call s:escapesConditionals('AttachFormat', '[CcDdeFfIMmnQsTtuX]', 1, 1) -" Ref: compose_format_str() in compose.c +" Ref: compose_format_str() in compose/cbar.c call s:escapesConditionals('ComposeFormat', '[ahlv]', 1, 1) -" Ref: folder_format_str() in browser.c +" Ref: folder_format_str() in browser/browser.c call s:escapesConditionals('FolderFormat', '[CDdFfgilmNnstu]', 1, 0) -" Ref: group_index_format_str() in browser.c +" Ref: group_index_format_str() in nntp/browse.c call s:escapesConditionals('GroupIndexFormat', '[CdfMNns]', 1, 1) " Ref: index_format_str() in hdrline.c call s:escapesConditionals('IndexFormat', '[AaBbCDdEefgHIiJKLlMmNnOPqRrSsTtuvWXxYyZ(<[{]\|@\i\+@\|G[a-zA-Z]\+\|Fp\=\|z[cst]\|cr\=', 1, 1) " Ref: mix_format_str() in remailer.c call s:escapesConditionals('MixFormat', '[acns]', 1, 0) +" Ref: pattern_format_str() in pattern/dlg_pattern.c +call s:escapesConditionals('PatternFormat', '[den]', 1, 0) " Ref: pgp_command_format_str() in ncrypt/pgpinvoke.c call s:escapesConditionals('PGPCmdFormat', '[afprs]', 0, 1) -" Ref: crypt_format_str() in ncrypt/crypt_gpgme.c -" Ref: pgp_entry_format_str() in ncrypt/pgpkey.c +" Ref: crypt_format_str() in ncrypt/dlg_gpgme.c +" Ref: pgp_entry_format_str() in ncrypt/dlg_pgp.c " Note: crypt_format_str() supports 'p', but pgp_entry_fmt() does not call s:escapesConditionals('PGPFormat', '[AaCcFfKkLlnptu[]', 0, 0) -" Ref: query_format_str() in alias/dlgquery.c +" Ref: query_format_str() in alias/dlg_query.c call s:escapesConditionals('QueryFormat', '[acent]', 1, 1) -" Ref: sidebar_format_str() in sidebar.c +" Ref: sidebar_format_str() in sidebar/window.c call s:escapesConditionals('SidebarFormat', '[!BDdFLNnorStZ]', 1, 1) " Ref: smime_command_format_str() in ncrypt/smime.c call s:escapesConditionals('SmimeFormat', '[aCcdfiks]', 0, 1) " Ref: status_format_str() in status.c -call s:escapesConditionals('StatusFormat', '[bDdFfhLlMmnoPpRrSstuVv]', 1, 1) +call s:escapesConditionals('StatusFormat', '[bDdFfhLlMmnoPpRrSsTtuVv]', 1, 1) syntax region muttrcPGPTimeEscapes contained start=+%\[+ end=+\]+ contains=muttrcStrftimeEscapes syntax region muttrcTimeEscapes contained start=+%(+ end=+)+ contains=muttrcStrftimeEscapes @@ -187,6 +191,7 @@ syntax match muttrcVarEqualsFolderFmt contained skipwhite "=" nextgroup=mutt syntax match muttrcVarEqualsGrpIdxFmt contained skipwhite "=" nextgroup=muttrcGroupIndexFormatStr syntax match muttrcVarEqualsIdxFmt contained skipwhite "=" nextgroup=muttrcIndexFormatStr syntax match muttrcVarEqualsMixFmt contained skipwhite "=" nextgroup=muttrcMixFormatStr +syntax match muttrcVarEqualsPatternFmt contained skipwhite "=" nextgroup=muttrcPatternFormatStr syntax match muttrcVarEqualsPGPCmdFmt contained skipwhite "=" nextgroup=muttrcPGPCmdFormatStr syntax match muttrcVarEqualsPGPFmt contained skipwhite "=" nextgroup=muttrcPGPFormatStr syntax match muttrcVarEqualsQueryFmt contained skipwhite "=" nextgroup=muttrcQueryFormatStr @@ -197,9 +202,9 @@ syntax match muttrcVarEqualsStrftimeFmt contained skipwhite "=" nextgroup=mutt syntax match muttrcVPrefix contained /[?&]/ nextgroup=muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -" CHECKED 2020-06-21 -" List of the different screens in mutt (see Menus in keymap.c) -syntax keyword muttrcMenu contained alias attach browser compose editor generic index key_select_pgp key_select_smime mix pager pgp postpone query smime +" CHECKED 2022-04-08 +" List of the different screens in NeoMutt (see MenuNames in menu/type.c) +syntax keyword muttrcMenu contained alias attach autocrypt browser compose editor generic index key_select_pgp key_select_smime mix pager pgp postpone query smime syntax match muttrcMenuList "\S\+" contained contains=muttrcMenu syntax match muttrcMenuCommas /,/ contained @@ -234,12 +239,12 @@ syntax match muttrcEscapedVariable contained "\\\$[a-zA-Z_-]\+" syntax match muttrcBadAction contained "[^<>]\+" contains=muttrcEmail syntax match muttrcAction contained "<[^>]\{-}>" contains=muttrcBadAction,muttrcFunction,muttrcKeyName -" CHECKED 2020-06-21 -" First, functions that take regular expressions: +" CHECKED 2022-04-08 +" First, hooks that take regular expressions: syntax match muttrcRXHookNot contained /!\s*/ skipwhite nextgroup=muttrcRXHookString,muttrcRXHookStringNL syntax match muttrcRXHooks /\<\%(account\|append\|close\|crypt\|folder\|mbox\|open\|pgp\)-hook\>/ skipwhite nextgroup=muttrcRXHookNot,muttrcRXHookString,muttrcRXHookStringNL -" Now, functions that take patterns +" Now, hooks that take patterns syntax match muttrcPatHookNot contained /!\s*/ skipwhite nextgroup=muttrcPattern syntax match muttrcPatHooks /\<\%(charset\|iconv\|index-format\)-hook\>/ skipwhite nextgroup=muttrcPatHookNot,muttrcPattern syntax match muttrcPatHooks /\<\%(message\|reply\|send\|send2\|save\|fcc\|fcc-save\)-hook\>/ skipwhite nextgroup=muttrcPatHookNot,muttrcOptPattern @@ -295,10 +300,10 @@ syntax match muttrcAliasNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrc syntax match muttrcUnAliasKey contained "\s*\w\+\s*" skipwhite nextgroup=muttrcUnAliasKey,muttrcUnAliasNL syntax match muttrcUnAliasNL contained /\s*\\$/ skipwhite skipnl nextgroup=muttrcUnAliasKey,muttrcUnAliasNL -" CHECKED 2020-06-21 -" List of letters in Flags in pattern.c +" CHECKED 2022-04-08 +" List of letters in Flags in pattern/flags.c " Parameter: none -syntax match muttrcSimplePat contained "!\?\^\?[~][ADEFGgklNOPpQRSTuUvV#$=]" +syntax match muttrcSimplePat contained "!\?\^\?[~][ADEFGgklNOPpQRSTUuVv#$=]" " Parameter: range syntax match muttrcSimplePat contained "!\?\^\?[~][mnXz]\s*\%([<>-][0-9]\+[kM]\?\|[0-9]\+[kM]\?[-]\%([0-9]\+[kM]\?\)\?\)" " Parameter: date @@ -306,7 +311,7 @@ syntax match muttrcSimplePat contained "!\?\^\?[~][dr]\s*\%(\%(-\?[0-9]\{1,2}\%( " Parameter: regex syntax match muttrcSimplePat contained "!\?\^\?[~][BbCcefHhIiLMstwxYy]\s*" nextgroup=muttrcSimplePatRXContainer " Parameter: pattern -syntax match muttrcSimplePat contained "!\?\^\?[%][bBcCefhHiLstxy]\s*" nextgroup=muttrcSimplePatString +syntax match muttrcSimplePat contained "!\?\^\?[%][BbCcefHhiLstxy]\s*" nextgroup=muttrcSimplePatString " Parameter: pattern syntax match muttrcSimplePat contained "!\?\^\?[=][bcCefhHiLstxy]\s*" nextgroup=muttrcSimplePatString syntax region muttrcSimplePat contained keepend start=+!\?\^\?[~](+ end=+)+ contains=muttrcSimplePat @@ -369,8 +374,8 @@ syntax keyword muttrcMonoAttrib contained bold none normal reverse standout unde syntax keyword muttrcMono contained mono skipwhite nextgroup=muttrcColorField,muttrcColorCompose syntax match muttrcMonoLine "^\s*mono\s\+\S\+" skipwhite nextgroup=muttrcMonoAttrib contains=muttrcMono -" CHECKED 2020-06-21 -" List of fields in Fields in color.c +" CHECKED 2022-04-08 +" List of fields in ColorFields in color/commmand.c syntax keyword muttrcColorField skipwhite contained \ attachment attach_headers body bold error hdrdefault header index index_author \ index_collapsed index_date index_flags index_label index_number index_size index_subject @@ -383,8 +388,8 @@ syntax match muttrcColorField contained "\<quoted\d\=\>" syntax match muttrcColorCompose skipwhite contained /\s*compose\s*/ nextgroup=muttrcColorComposeField -" CHECKED 2020-06-21 -" List of fields in ComposeFields in color.c +" CHECKED 2022-04-08 +" List of fields in ComposeColorFields in color/command.c syntax keyword muttrcColorComposeField skipwhite contained \ header security_both security_encrypt security_none security_sign \ nextgroup=muttrcColorFG,muttrcColorFGNL @@ -411,20 +416,21 @@ function! s:boolQuadGen(type, vars, deprecated) endfunction -" CHECKED 2020-06-21 +" CHECKED 2022-04-08 " List of DT_BOOL in MuttVars in mutt_config.c call s:boolQuadGen('Bool', [ - \ 'abort_backspace', 'allow_8bit', 'allow_ansi', 'arrow_cursor', 'ascii_chars', 'askbcc', - \ 'askcc', 'ask_follow_up', 'ask_x_comment_to', 'attach_save_without_prompting', - \ 'attach_split', 'autocrypt', 'autocrypt_reply', 'autoedit', 'auto_subscribe', 'auto_tag', + \ 'abort_backspace', 'allow_8bit', 'allow_ansi', 'arrow_cursor', 'ascii_chars', 'ask_bcc', + \ 'ask_cc', 'ask_follow_up', 'ask_x_comment_to', 'attach_save_without_prompting', + \ 'attach_split', 'autocrypt', 'autocrypt_reply', 'auto_edit', 'auto_subscribe', 'auto_tag', \ 'beep', 'beep_new', 'bounce_delivered', 'braille_friendly', \ 'browser_abbreviate_mailboxes', 'change_folder_next', 'check_mbox_size', 'check_new', - \ 'collapse_all', 'collapse_flagged', 'collapse_unread', 'confirmappend', 'confirmcreate', - \ 'crypt_autoencrypt', 'crypt_autopgp', 'crypt_autosign', 'crypt_autosmime', - \ 'crypt_confirmhook', 'crypt_opportunistic_encrypt', + \ 'collapse_all', 'collapse_flagged', 'collapse_unread', 'compose_show_user_headers', + \ 'confirm_append', 'confirm_create', 'copy_decode_weed', 'count_alternatives', + \ 'crypt_auto_encrypt', 'crypt_auto_pgp', 'crypt_auto_sign', 'crypt_auto_smime', + \ 'crypt_confirm_hook', 'crypt_opportunistic_encrypt', \ 'crypt_opportunistic_encrypt_strong_keys', 'crypt_protected_headers_read', - \ 'crypt_protected_headers_save', 'crypt_protected_headers_write', 'crypt_replyencrypt', - \ 'crypt_replysign', 'crypt_replysignencrypted', 'crypt_timestamp', 'crypt_use_gpgme', + \ 'crypt_protected_headers_save', 'crypt_protected_headers_write', 'crypt_reply_encrypt', + \ 'crypt_reply_sign', 'crypt_reply_sign_encrypted', 'crypt_timestamp', 'crypt_use_gpgme', \ 'crypt_use_pka', 'delete_untag', 'digest_collapse', 'duplicate_threads', 'edit_headers', \ 'encode_from', 'fast_reply', 'fcc_before_send', 'fcc_clear', 'flag_safe', 'followup_to', \ 'force_name', 'forward_decode', 'forward_decrypt', 'forward_quote', 'forward_references', @@ -433,45 +439,52 @@ call s:boolQuadGen('Bool', [ \ 'history_remove_dups', 'honor_disposition', 'idn_decode', 'idn_encode', \ 'ignore_list_reply_to', 'imap_check_subscribed', 'imap_condstore', 'imap_deflate', \ 'imap_idle', 'imap_list_subscribed', 'imap_passive', 'imap_peek', 'imap_qresync', - \ 'imap_rfc5161', 'imap_servernoise', 'implicit_autoview', 'include_encrypted', - \ 'include_onlyfirst', 'keep_flagged', 'mailcap_sanitize', 'maildir_check_cur', - \ 'maildir_header_cache_verify', 'maildir_trash', 'mail_check_recent', 'mail_check_stats', - \ 'markers', 'mark_old', 'menu_move_off', 'menu_scroll', 'message_cache_clean', 'meta_key', - \ 'metoo', 'mh_purge', 'mime_forward_decode', 'mime_subject', 'mime_type_query_first', - \ 'narrow_tree', 'nm_record', 'nntp_listgroup', 'nntp_load_description', 'pager_stop', - \ 'pgp_autoinline', 'pgp_auto_decode', 'pgp_check_exit', 'pgp_check_gpg_decrypt_status_fd', - \ 'pgp_ignore_subkeys', 'pgp_long_ids', 'pgp_replyinline', 'pgp_retainable_sigs', + \ 'imap_rfc5161', 'imap_server_noise', 'implicit_autoview', 'include_encrypted', + \ 'include_only_first', 'keep_flagged', 'local_date_header', 'mailcap_sanitize', + \ 'maildir_check_cur', 'maildir_header_cache_verify', 'maildir_trash', 'mail_check_recent', + \ 'mail_check_stats', 'markers', 'mark_old', 'menu_move_off', 'menu_scroll', + \ 'message_cache_clean', 'meta_key', 'me_too', 'mh_purge', 'mime_forward_decode', + \ 'mime_type_query_first', 'narrow_tree', 'nm_query_window_enable', 'nm_record', + \ 'nntp_listgroup', 'nntp_load_description', 'pager_stop', 'pgp_auto_decode', + \ 'pgp_auto_inline', 'pgp_check_exit', 'pgp_check_gpg_decrypt_status_fd', + \ 'pgp_ignore_subkeys', 'pgp_long_ids', 'pgp_reply_inline', 'pgp_retainable_sigs', \ 'pgp_self_encrypt', 'pgp_show_unusable', 'pgp_strict_enc', 'pgp_use_gpg_agent', - \ 'pipe_decode', 'pipe_split', 'pop_auth_try_all', 'pop_last', 'postpone_encrypt', - \ 'print_decode', 'print_split', 'prompt_after', 'read_only', 'reflow_space_quotes', - \ 'reflow_text', 'reply_self', 'reply_with_xorig', 'resolve', 'resume_draft_files', - \ 'resume_edited_draft_files', 'reverse_alias', 'reverse_name', 'reverse_realname', - \ 'rfc2047_parameters', 'save_address', 'save_empty', 'save_name', 'save_unsubscribed', - \ 'score', 'show_new_news', 'show_only_unread', 'sidebar_folder_indent', - \ 'sidebar_new_mail_only', 'sidebar_next_new_wrap', 'sidebar_non_empty_mailbox_only', - \ 'sidebar_on_right', 'sidebar_short_path', 'sidebar_visible', 'sig_dashes', 'sig_on_top', - \ 'size_show_bytes', 'size_show_fractions', 'size_show_mb', 'size_units_on_left', - \ 'smart_wrap', 'smime_ask_cert_label', 'smime_decrypt_use_default_key', 'smime_is_default', - \ 'smime_self_encrypt', 'sort_re', 'ssl_force_tls', 'ssl_usesystemcerts', 'ssl_use_sslv2', - \ 'ssl_use_sslv3', 'ssl_use_tlsv1', 'ssl_use_tlsv1_1', 'ssl_use_tlsv1_2', 'ssl_use_tlsv1_3', + \ 'pipe_decode', 'pipe_decode_weed', 'pipe_split', 'pop_auth_try_all', 'pop_last', + \ 'postpone_encrypt', 'print_decode', 'print_decode_weed', 'print_split', 'prompt_after', + \ 'read_only', 'reflow_space_quotes', 'reflow_text', 'reply_self', 'reply_with_xorig', + \ 'resolve', 'resume_draft_files', 'resume_edited_draft_files', 'reverse_alias', + \ 'reverse_name', 'reverse_real_name', 'rfc2047_parameters', 'save_address', 'save_empty', + \ 'save_name', 'save_unsubscribed', 'score', 'show_new_news', 'show_only_unread', + \ 'sidebar_folder_indent', 'sidebar_new_mail_only', 'sidebar_next_new_wrap', + \ 'sidebar_non_empty_mailbox_only', 'sidebar_on_right', 'sidebar_short_path', + \ 'sidebar_visible', 'sig_dashes', 'sig_on_top', 'size_show_bytes', 'size_show_fractions', + \ 'size_show_mb', 'size_units_on_left', 'smart_wrap', 'smime_ask_cert_label', + \ 'smime_decrypt_use_default_key', 'smime_is_default', 'smime_self_encrypt', 'sort_re', + \ 'ssl_force_tls', 'ssl_use_sslv2', 'ssl_use_sslv3', 'ssl_use_system_certs', + \ 'ssl_use_tlsv1', 'ssl_use_tlsv1_1', 'ssl_use_tlsv1_2', 'ssl_use_tlsv1_3', \ 'ssl_verify_dates', 'ssl_verify_host', 'ssl_verify_partial_chains', 'status_on_top', \ 'strict_threads', 'suspend', 'text_flowed', 'thorough_search', 'thread_received', 'tilde', - \ 'ts_enabled', 'uncollapse_jump', 'uncollapse_new', 'user_agent', 'use_8bitmime', - \ 'use_domain', 'use_envelope_from', 'use_from', 'use_ipv6', 'virtual_spoolfile', - \ 'wait_key', 'weed', 'wrap_search', 'write_bcc', 'x_comment_to' + \ 'ts_enabled', 'tunnel_is_secure', 'uncollapse_jump', 'uncollapse_new', 'user_agent', + \ 'use_8bit_mime', 'use_domain', 'use_envelope_from', 'use_from', 'use_ipv6', + \ 'virtual_spool_file', 'wait_key', 'weed', 'wrap_search', 'write_bcc', 'x_comment_to' \ ], 0) -" CHECKED 2020-06-21 +" CHECKED 2022-04-08 " Deprecated Bools " List of DT_SYNONYM or DT_DEPRECATED Bools in MuttVars in mutt_config.c call s:boolQuadGen('Bool', [ - \ 'edit_hdrs', 'envelope_from', 'forw_decode', 'forw_decrypt', 'forw_quote', - \ 'header_cache_compress', 'ignore_linear_white_space', 'pgp_autoencrypt', 'pgp_autosign', - \ 'pgp_auto_traditional', 'pgp_create_traditional', 'pgp_replyencrypt', 'pgp_replysign', - \ 'pgp_replysignencrypted', 'xterm_set_titles' + \ 'askbcc', 'askcc', 'autoedit', 'confirmappend', 'confirmcreate', 'crypt_autoencrypt', + \ 'crypt_autopgp', 'crypt_autosign', 'crypt_autosmime', 'crypt_confirmhook', + \ 'crypt_replyencrypt', 'crypt_replysign', 'crypt_replysignencrypted', 'edit_hdrs', + \ 'envelope_from', 'forw_decode', 'forw_decrypt', 'forw_quote', 'header_cache_compress', + \ 'ignore_linear_white_space', 'imap_servernoise', 'include_onlyfirst', 'metoo', + \ 'mime_subject', 'pgp_autoencrypt', 'pgp_autoinline', 'pgp_autosign', + \ 'pgp_auto_traditional', 'pgp_create_traditional', 'pgp_replyencrypt', 'pgp_replyinline', + \ 'pgp_replysign', 'pgp_replysignencrypted', 'reverse_realname', 'ssl_usesystemcerts', + \ 'use_8bitmime', 'virtual_spoolfile', 'xterm_set_titles' \ ], 1) -" CHECKED 2020-06-21 +" CHECKED 2022-04-08 " List of DT_QUAD in MuttVars in mutt_config.c call s:boolQuadGen('Quad', [ \ 'abort_noattach', 'abort_nosubject', 'abort_unmodified', 'bounce', 'catchup_newsgroup', @@ -481,31 +494,32 @@ call s:boolQuadGen('Quad', [ \ 'post_moderated', 'print', 'quit', 'recall', 'reply_to', 'ssl_starttls', \ ], 0) -" CHECKED 2020-06-21 +" CHECKED 2022-04-08 " Deprecated Quads " List of DT_SYNONYM or DT_DEPRECATED Quads in MuttVars in mutt_config.c call s:boolQuadGen('Quad', [ \ 'mime_fwd', 'pgp_encrypt_self', 'pgp_verify_sig', 'smime_encrypt_self' \ ], 1) -" CHECKED 2020-06-21 +" CHECKED 2022-04-08 " List of DT_NUMBER or DT_LONG in MuttVars in mutt_config.c syntax keyword muttrcVarNum skipwhite contained - \ connect_timeout debug_level header_cache_compress_level history - \ imap_fetch_chunk_size imap_keepalive imap_pipeline_depth imap_poll_timeout mail_check - \ mail_check_stats_interval menu_context net_inc nm_db_limit nm_open_timeout - \ nm_query_window_current_position nm_query_window_duration nntp_context nntp_poll - \ pager_context pager_index_lines pgp_timeout pop_checkinterval read_inc reflow_wrap - \ save_history score_threshold_delete score_threshold_flag score_threshold_read - \ search_context sendmail_wait sidebar_component_depth sidebar_width skip_quoted_offset - \ sleep_time smime_timeout ssl_min_dh_prime_bits timeout time_inc toggle_quoted_show_levels - \ wrap wrap_headers write_inc + \ connect_timeout debug_level header_cache_compress_level history imap_fetch_chunk_size + \ imap_keepalive imap_pipeline_depth imap_poll_timeout mail_check mail_check_stats_interval + \ menu_context net_inc nm_db_limit nm_open_timeout nm_query_window_current_position + \ nm_query_window_duration nntp_context nntp_poll pager_context pager_index_lines + \ pager_read_delay pager_skip_quoted_context pgp_timeout pop_check_interval read_inc + \ reflow_wrap save_history score_threshold_delete score_threshold_flag score_threshold_read + \ search_context sendmail_wait sidebar_component_depth sidebar_width sleep_time + \ smime_timeout ssl_min_dh_prime_bits timeout time_inc toggle_quoted_show_levels wrap + \ wrap_headers write_inc \ nextgroup=muttrcSetNumAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +" CHECKED 2022-04-08 +" Deprecated Numbers syntax keyword muttrcVarDeprecatedNum contained skipwhite - \ header_cache_pagesize wrapmargin - \ nextgroup=muttrcSetNumAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr + \ header_cache_pagesize pop_checkinterval skip_quoted_offset -" CHECKED 2020-06-21 +" CHECKED 2022-04-08 " List of DT_STRING in MuttVars in mutt_config.c " Special cases first, and all the rest at the end " Formats themselves must be updated in their respective groups @@ -517,19 +531,19 @@ syntax keyword muttrcVarStr contained skipwhite compose_format nextgroup=muttrcV syntax keyword muttrcVarStr contained skipwhite folder_format vfolder_format nextgroup=muttrcVarEqualsFolderFmt syntax keyword muttrcVarStr contained skipwhite attribution forward_format index_format message_format pager_format nextgroup=muttrcVarEqualsIdxFmt syntax keyword muttrcVarStr contained skipwhite mix_entry_format nextgroup=muttrcVarEqualsMixFmt +syntax keyword muttrcVarStr contained skipwhite pattern_format nextgroup=muttrcVarEqualsPatternFmt syntax keyword muttrcVarStr contained skipwhite - \ pgp_clearsign_command pgp_decode_command pgp_decrypt_command - \ pgp_encrypt_only_command pgp_encrypt_sign_command pgp_export_command pgp_getkeys_command - \ pgp_import_command pgp_list_pubring_command pgp_list_secring_command - \ pgp_sign_command pgp_verify_command pgp_verify_key_command + \ pgp_clear_sign_command pgp_decode_command pgp_decrypt_command pgp_encrypt_only_command + \ pgp_encrypt_sign_command pgp_export_command pgp_get_keys_command pgp_import_command + \ pgp_list_pubring_command pgp_list_secring_command pgp_sign_command pgp_verify_command + \ pgp_verify_key_command \ nextgroup=muttrcVarEqualsPGPCmdFmt syntax keyword muttrcVarStr contained skipwhite pgp_entry_format nextgroup=muttrcVarEqualsPGPFmt syntax keyword muttrcVarStr contained skipwhite query_format nextgroup=muttrcVarEqualsQueryFmt syntax keyword muttrcVarStr contained skipwhite \ smime_decrypt_command smime_encrypt_command smime_get_cert_command - \ smime_get_cert_email_command smime_get_signer_cert_command - \ smime_import_cert_command smime_pk7out_command smime_sign_command - \ smime_verify_command smime_verify_opaque_command + \ smime_get_cert_email_command smime_get_signer_cert_command smime_import_cert_command + \ smime_pk7out_command smime_sign_command smime_verify_command smime_verify_opaque_command \ nextgroup=muttrcVarEqualsSmimeFmt syntax keyword muttrcVarStr contained skipwhite status_format ts_icon_format ts_status_format nextgroup=muttrcVarEqualsStatusFmt syntax keyword muttrcVarStr contained skipwhite date_format nextgroup=muttrcVarEqualsStrftimeFmt @@ -538,64 +552,66 @@ syntax keyword muttrcVarStr contained skipwhite sidebar_format nextgroup=muttrcV syntax keyword muttrcVarStr contained skipwhite \ abort_key arrow_string assumed_charset attach_charset attach_sep attribution_locale \ autocrypt_acct_format charset config_charset content_type crypt_protected_headers_subject - \ default_hook dsn_notify dsn_return empty_subject escape forward_attribution_intro - \ forward_attribution_trailer header_cache_backend header_cache_compress_method hidden_tags - \ hostname imap_authenticators imap_delim_chars imap_headers imap_login imap_pass imap_user - \ indent_string mailcap_path mark_macro_prefix mh_seq_flagged mh_seq_replied mh_seq_unseen - \ newsgroups_charset news_server nm_default_url nm_exclude_tags nm_flagged_tag nm_query_type - \ nm_query_window_current_search nm_query_window_timebase nm_record_tags nm_replied_tag - \ nm_unread_tag nntp_authenticators nntp_pass nntp_user pgp_default_key pgp_sign_as pipe_sep - \ pop_authenticators pop_host pop_pass pop_user postpone_encrypt_as post_indent_string - \ preconnect preferred_languages realname send_charset show_multipart_alternative - \ sidebar_delim_chars sidebar_divider_char sidebar_indent_string simple_search - \ smime_default_key smime_encrypt_with smime_sign_as smime_sign_digest_alg - \ smtp_authenticators smtp_pass smtp_url smtp_user spam_separator ssl_ciphers + \ default_hook dsn_notify dsn_return empty_subject forward_attribution_intro + \ forward_attribution_trailer greeting header_cache_backend header_cache_compress_method + \ hidden_tags hostname imap_authenticators imap_delim_chars imap_headers imap_login + \ imap_pass imap_user indent_string mailcap_path mark_macro_prefix mh_seq_flagged + \ mh_seq_replied mh_seq_unseen newsgroups_charset news_server nm_default_url nm_exclude_tags + \ nm_flagged_tag nm_query_type nm_query_window_current_search nm_query_window_or_terms + \ nm_query_window_timebase nm_record_tags nm_replied_tag nm_unread_tag nntp_authenticators + \ nntp_pass nntp_user pgp_default_key pgp_sign_as pipe_sep pop_authenticators pop_host + \ pop_pass pop_user postpone_encrypt_as post_indent_string preconnect preferred_languages + \ real_name send_charset show_multipart_alternative sidebar_delim_chars sidebar_divider_char + \ sidebar_indent_string simple_search smime_default_key smime_encrypt_with smime_sign_as + \ smime_sign_digest_alg smtp_authenticators smtp_pass smtp_url smtp_user spam_separator + \ ssl_ciphers \ nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr " Deprecated strings syntax keyword muttrcVarDeprecatedStr - \ abort_noattach_regexp attach_keyword forw_format hdr_format indent_str msg_format - \ nm_default_uri pgp_self_encrypt_as post_indent_str print_cmd quote_regexp reply_regexp - \ smime_self_encrypt_as xterm_icon xterm_title + \ abort_noattach_regexp attach_keyword escape forw_format hdr_format indent_str msg_format + \ nm_default_uri pgp_clearsign_command pgp_getkeys_command pgp_self_encrypt_as + \ post_indent_str print_cmd quote_regexp realname reply_regexp smime_self_encrypt_as + \ spoolfile visual xterm_icon xterm_title -" CHECKED 2020-06-21 +" CHECKED 2022-04-08 " List of DT_ADDRESS syntax keyword muttrcVarStr contained skipwhite envelope_from_address from nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr " List of DT_ENUM -syntax keyword muttrcVarStr contained skipwhite mbox_type nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr +syntax keyword muttrcVarStr contained skipwhite mbox_type use_threads nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr " List of DT_MBTABLE syntax keyword muttrcVarStr contained skipwhite crypt_chars flag_chars from_chars status_chars to_chars nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -" CHECKED 2020-06-21 -" List of DT_PATH +" CHECKED 2022-04-08 +" List of DT_PATH or DT_MAILBOX syntax keyword muttrcVarStr contained skipwhite \ alias_file attach_save_dir autocrypt_dir certificate_file debug_file \ entropy_file folder header_cache history_file mbox message_cachedir newsrc \ news_cache_dir postponed record signature smime_ca_location - \ smime_certificates smime_keys spoolfile ssl_ca_certificates_file - \ ssl_client_cert tmpdir trash + \ smime_certificates smime_keys spool_file ssl_ca_certificates_file ssl_client_cert + \ tmpdir trash \ nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr " List of DT_COMMAND (excluding pgp_*_command and smime_*_command) syntax keyword muttrcVarStr contained skipwhite \ display_filter editor inews ispell mixmaster new_mail_command pager - \ print_command query_command sendmail shell visual external_search_command + \ print_command query_command sendmail shell external_search_command \ imap_oauth_refresh_command pop_oauth_refresh_command \ mime_type_query_command smtp_oauth_refresh_command tunnel \ nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -" CHECKED 2020-06-21 +" CHECKED 2022-04-08 " List of DT_REGEX syntax keyword muttrcVarStr contained skipwhite - \ abort_noattach_regex gecos_mask mask pgp_decryption_okay pgp_good_sign - \ quote_regex reply_regex smileys + \ abort_noattach_regex gecos_mask mask pgp_decryption_okay pgp_good_sign quote_regex + \ reply_regex smileys \ nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr " List of DT_SORT syntax keyword muttrcVarStr contained skipwhite \ pgp_sort_keys sidebar_sort_method sort sort_alias sort_aux sort_browser \ nextgroup=muttrcSetStrAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr -" CHECKED 2020-06-21 -" List of commands in Commands in mutt_config.c +" CHECKED 2022-04-08 +" List of commands in mutt_commands in mutt_commands.c " Remember to remove hooks, they have already been dealt with syntax keyword muttrcCommand skipwhite alias nextgroup=muttrcAliasGroupDef,muttrcAliasKey,muttrcAliasNL syntax keyword muttrcCommand skipwhite bind nextgroup=muttrcBindMenuList,muttrcBindMenuListNL @@ -607,14 +623,12 @@ syntax keyword muttrcCommand skipwhite spam nextgroup=muttrcSpamPattern syntax keyword muttrcCommand skipwhite unalias nextgroup=muttrcUnAliasKey,muttrcUnAliasNL syntax keyword muttrcCommand skipwhite unhook nextgroup=muttrcHooks syntax keyword muttrcCommand skipwhite - \ alternative_order attachments auto_view finish hdr_order ifdef ifndef - \ ignore lua lua-source mailboxes mailto_allow mime_lookup my_hdr push score - \ setenv sidebar_whitelist source subjectrx subscribe-to tag-formats - \ tag-transforms unalternative_order unattachments unauto_view uncolor - \ unhdr_order unignore unmailboxes unmailto_allow unmime_lookup unmono - \ unmy_hdr unscore unsetenv unsidebar_whitelist unsubjectrx unsubscribe-from - \ unvirtual-mailboxes virtual-mailboxes named-mailboxes - \ echo unbind unmacro + \ alternative_order attachments auto_view cd echo finish hdr_order ifdef ifndef ignore lua + \ lua-source mailboxes mailto_allow mime_lookup my_hdr named-mailboxes push score setenv + \ sidebar_whitelist source subjectrx subscribe-to tag-formats tag-transforms + \ unalternative_order unattachments unauto_view unbind uncolor unhdr_order unignore unmacro + \ unmailboxes unmailto_allow unmime_lookup unmono unmy_hdr unscore unsetenv + \ unsidebar_whitelist unsubjectrx unsubscribe-from unvirtual-mailboxes virtual-mailboxes function! s:genFunctions(functions) for f in a:functions @@ -622,66 +636,68 @@ function! s:genFunctions(functions) endfor endfunction -" CHECKED 2020-06-21 +" CHECKED 2022-04-08 " List of functions in functions.c " Note: 'noop' is included but is elsewhere in the source call s:genFunctions(['noop', - \ 'accept', 'append', 'attach-file', 'attach-key', 'attach-message', 'attach-news-message', - \ 'autocrypt-acct-menu', 'autocrypt-menu', 'backspace', 'backward-char', 'backward-word', - \ 'bol', 'bottom-page', 'bottom', 'bounce-message', 'break-thread', 'buffy-cycle', - \ 'buffy-list', 'capitalize-word', 'catchup', 'chain-next', 'chain-prev', 'change-dir', - \ 'change-folder-readonly', 'change-folder', 'change-newsgroup-readonly', - \ 'change-newsgroup', 'change-vfolder', 'check-new', 'check-stats', + \ 'accept', 'alias-dialog', 'append', 'attach-file', 'attach-key', 'attach-message', + \ 'attach-news-message', 'autocrypt-acct-menu', 'autocrypt-menu', 'backspace', + \ 'backward-char', 'backward-word', 'bol', 'bottom', 'bottom-page', 'bounce-message', + \ 'break-thread', 'buffy-cycle', 'buffy-list', 'capitalize-word', 'catchup', 'chain-next', + \ 'chain-prev', 'change-dir', 'change-folder', 'change-folder-readonly', 'change-newsgroup', + \ 'change-newsgroup-readonly', 'change-vfolder', 'check-new', 'check-stats', \ 'check-traditional-pgp', 'clear-flag', 'collapse-all', 'collapse-parts', - \ 'collapse-thread', 'complete-query', 'complete', 'compose-to-sender', 'copy-file', + \ 'collapse-thread', 'complete', 'complete-query', 'compose-to-sender', 'copy-file', \ 'copy-message', 'create-account', 'create-alias', 'create-mailbox', 'current-bottom', \ 'current-middle', 'current-top', 'decode-copy', 'decode-save', 'decrypt-copy', - \ 'decrypt-save', 'delete-account', 'delete-char', 'delete-entry', 'delete-mailbox', - \ 'delete-message', 'delete-pattern', 'delete-subthread', 'delete-thread', 'delete', + \ 'decrypt-save', 'delete', 'delete-account', 'delete-char', 'delete-entry', + \ 'delete-mailbox', 'delete-message', 'delete-pattern', 'delete-subthread', 'delete-thread', \ 'descend-directory', 'detach-file', 'display-address', 'display-filename', - \ 'display-message', 'display-toggle-weed', 'downcase-word', 'edit-bcc', 'edit-cc', - \ 'edit-description', 'edit-encoding', 'edit-fcc', 'edit-file', 'edit-followup-to', - \ 'edit-from', 'edit-headers', 'edit-label', 'edit-language', 'edit-message', 'edit-mime', - \ 'edit-newsgroups', 'edit-or-view-raw-message', 'edit-raw-message', 'edit-reply-to', - \ 'edit-subject', 'edit-to', 'edit-type', 'edit-x-comment-to', 'edit', 'end-cond', - \ 'enter-command', 'enter-mask', 'entire-thread', 'eol', 'exit', 'extract-keys', - \ 'fetch-mail', 'filter-entry', 'first-entry', 'flag-message', 'followup-message', - \ 'forget-passphrase', 'forward-char', 'forward-message', 'forward-to-group', - \ 'forward-word', 'get-attachment', 'get-children', 'get-message', 'get-parent', - \ 'goto-folder', 'goto-parent', 'group-alternatives', 'group-chat-reply', - \ 'group-multilingual', 'group-reply', 'half-down', 'half-up', 'help', 'history-down', - \ 'history-search', 'history-up', 'imap-fetch-mail', 'imap-logout-all', 'insert', 'ispell', - \ 'jump', 'kill-eol', 'kill-eow', 'kill-line', 'kill-word', 'last-entry', - \ 'limit-current-thread', 'limit', 'link-threads', 'list-reply', 'mail-key', - \ 'mailbox-cycle', 'mailbox-list', 'mail', 'mark-as-new', 'mark-message', 'middle-page', - \ 'mix', 'modify-labels-then-hide', 'modify-labels', 'modify-tags-then-hide', - \ 'modify-tags', 'move-down', 'move-up', 'new-mime', 'next-entry', 'next-line', - \ 'next-new-then-unread', 'next-new', 'next-page', 'next-subthread', 'next-thread', - \ 'next-undeleted', 'next-unread-mailbox', 'next-unread', 'parent-message', 'pgp-menu', - \ 'pipe-entry', 'pipe-message', 'post-message', 'postpone-message', 'previous-entry', - \ 'previous-line', 'previous-new-then-unread', 'previous-new', 'previous-page', - \ 'previous-subthread', 'previous-thread', 'previous-undeleted', 'previous-unread', - \ 'print-entry', 'print-message', 'purge-message', 'purge-thread', 'quasi-delete', - \ 'query-append', 'query', 'quit', 'quote-char', 'read-subthread', 'read-thread', - \ 'recall-message', 'reconstruct-thread', 'redraw-screen', 'refresh', 'reload-active', - \ 'rename-attachment', 'rename-file', 'rename-mailbox', 'reply', 'resend-message', - \ 'root-message', 'save-entry', 'save-message', 'search-next', 'search-opposite', - \ 'search-reverse', 'search-toggle', 'search', 'select-entry', 'select-new', + \ 'display-message', 'display-toggle-weed', 'downcase-word', 'edit', 'edit-bcc', 'edit-cc', + \ 'edit-content-id', 'edit-description', 'edit-encoding', 'edit-fcc', 'edit-file', + \ 'edit-followup-to', 'edit-from', 'edit-headers', 'edit-label', 'edit-language', + \ 'edit-message', 'edit-mime', 'edit-newsgroups', 'edit-or-view-raw-message', + \ 'edit-raw-message', 'edit-reply-to', 'edit-subject', 'edit-to', 'edit-type', + \ 'edit-x-comment-to', 'end-cond', 'enter-command', 'enter-mask', 'entire-thread', 'eol', + \ 'error-history', 'exit', 'extract-keys', 'fetch-mail', 'filter-entry', 'first-entry', + \ 'flag-message', 'followup-message', 'forget-passphrase', 'forward-char', + \ 'forward-message', 'forward-to-group', 'forward-word', 'get-attachment', 'get-children', + \ 'get-message', 'get-parent', 'goto-folder', 'goto-parent', 'group-alternatives', + \ 'group-chat-reply', 'group-multilingual', 'group-related', 'group-reply', 'half-down', + \ 'half-up', 'help', 'history-down', 'history-search', 'history-up', 'imap-fetch-mail', + \ 'imap-logout-all', 'insert', 'ispell', 'jump', 'kill-eol', 'kill-eow', 'kill-line', + \ 'kill-word', 'last-entry', 'limit', 'limit-current-thread', 'link-threads', 'list-reply', + \ 'list-subscribe', 'list-unsubscribe', 'mail', 'mail-key', 'mailbox-cycle', 'mailbox-list', + \ 'mark-as-new', 'mark-message', 'middle-page', 'mix', 'modify-labels', + \ 'modify-labels-then-hide', 'modify-tags', 'modify-tags-then-hide', 'move-down', 'move-up', + \ 'new-mime', 'next-entry', 'next-line', 'next-new', 'next-new-then-unread', 'next-page', + \ 'next-subthread', 'next-thread', 'next-undeleted', 'next-unread', 'next-unread-mailbox', + \ 'parent-message', 'pgp-menu', 'pipe-entry', 'pipe-message', 'post-message', + \ 'postpone-message', 'previous-entry', 'previous-line', 'previous-new', + \ 'previous-new-then-unread', 'previous-page', 'previous-subthread', 'previous-thread', + \ 'previous-undeleted', 'previous-unread', 'print-entry', 'print-message', 'purge-message', + \ 'purge-thread', 'quasi-delete', 'query', 'query-append', 'quit', 'quote-char', + \ 'read-subthread', 'read-thread', 'recall-message', 'reconstruct-thread', 'redraw-screen', + \ 'refresh', 'reload-active', 'rename-attachment', 'rename-file', 'rename-mailbox', 'reply', + \ 'resend-message', 'root-message', 'save-entry', 'save-message', 'search', 'search-next', + \ 'search-opposite', 'search-reverse', 'search-toggle', 'select-entry', 'select-new', \ 'send-message', 'set-flag', 'shell-escape', 'show-limit', 'show-log-messages', - \ 'show-version', 'sidebar-next-new', 'sidebar-first', 'sidebar-last', 'sidebar-next', - \ 'sidebar-open', 'sidebar-page-down', 'sidebar-page-up', 'sidebar-prev-new', - \ 'sidebar-prev', 'sidebar-toggle-virtual', 'sidebar-toggle-visible', 'skip-quoted', - \ 'smime-menu', 'sort-mailbox', 'sort-reverse', 'sort', 'subscribe-pattern', - \ 'sync-mailbox', 'tag-entry', 'tag-message', 'tag-pattern', 'tag-prefix-cond', - \ 'tag-prefix', 'tag-subthread', 'tag-thread', 'toggle-active', 'toggle-disposition', - \ 'toggle-mailboxes', 'toggle-new', 'toggle-prefer-encrypt', 'toggle-quoted', - \ 'toggle-read', 'toggle-recode', 'toggle-subscribed', 'toggle-unlink', 'toggle-write', - \ 'top-page', 'top', 'transpose-chars', 'uncatchup', 'undelete-entry', 'undelete-message', - \ 'undelete-pattern', 'undelete-subthread', 'undelete-thread', 'unsubscribe-pattern', - \ 'untag-pattern', 'upcase-word', 'update-encoding', 'verify-key', - \ 'vfolder-from-query-readonly', 'vfolder-from-query', 'vfolder-window-backward', - \ 'vfolder-window-forward', 'view-attachments', 'view-attach', 'view-file', 'view-mailcap', - \ 'view-name', 'view-raw-message', 'view-text', 'what-key', 'write-fcc' + \ 'show-version', 'sidebar-first', 'sidebar-last', 'sidebar-next', 'sidebar-next-new', + \ 'sidebar-open', 'sidebar-page-down', 'sidebar-page-up', 'sidebar-prev', + \ 'sidebar-prev-new', 'sidebar-toggle-virtual', 'sidebar-toggle-visible', 'skip-headers', + \ 'skip-quoted', 'smime-menu', 'sort', 'sort-alias', 'sort-alias-reverse', 'sort-mailbox', + \ 'sort-reverse', 'subscribe', 'subscribe-pattern', 'sync-mailbox', 'tag-entry', + \ 'tag-message', 'tag-pattern', 'tag-prefix', 'tag-prefix-cond', 'tag-subthread', + \ 'tag-thread', 'toggle-active', 'toggle-disposition', 'toggle-mailboxes', 'toggle-new', + \ 'toggle-prefer-encrypt', 'toggle-quoted', 'toggle-read', 'toggle-recode', + \ 'toggle-subscribed', 'toggle-unlink', 'toggle-write', 'top', 'top-page', + \ 'transpose-chars', 'uncatchup', 'undelete-entry', 'undelete-message', 'undelete-pattern', + \ 'undelete-subthread', 'undelete-thread', 'ungroup-attachment', 'unsubscribe', + \ 'unsubscribe-pattern', 'untag-pattern', 'upcase-word', 'update-encoding', 'verify-key', + \ 'vfolder-from-query', 'vfolder-from-query-readonly', 'vfolder-window-backward', + \ 'vfolder-window-forward', 'vfolder-window-reset', 'view-attach', 'view-attachments', + \ 'view-file', 'view-mailcap', 'view-name', 'view-pager', 'view-raw-message', 'view-text', + \ 'what-key', 'write-fcc' \ ]) " Define the default highlighting. @@ -758,6 +774,7 @@ highlight def link muttrcFolderFormatEscapes muttrcEscape highlight def link muttrcGroupIndexFormatEscapes muttrcEscape highlight def link muttrcIndexFormatEscapes muttrcEscape highlight def link muttrcMixFormatEscapes muttrcEscape +highlight def link muttrcPatternFormatEscapes muttrcEscape highlight def link muttrcPGPCmdFormatEscapes muttrcEscape highlight def link muttrcPGPFormatEscapes muttrcEscape highlight def link muttrcPGPTimeEscapes muttrcEscape @@ -774,6 +791,7 @@ highlight def link muttrcComposeFormatConditionals muttrcFormatConditionals2 highlight def link muttrcFolderFormatConditionals muttrcFormatConditionals2 highlight def link muttrcIndexFormatConditionals muttrcFormatConditionals2 highlight def link muttrcMixFormatConditionals muttrcFormatConditionals2 +highlight def link muttrcPatternFormatConditionals muttrcFormatConditionals2 highlight def link muttrcPGPCmdFormatConditionals muttrcFormatConditionals2 highlight def link muttrcPGPFormatConditionals muttrcFormatConditionals2 highlight def link muttrcSmimeFormatConditionals muttrcFormatConditionals2 @@ -789,6 +807,7 @@ highlight def link muttrcFolderFormatStr muttrcString highlight def link muttrcGroupIndexFormatStr muttrcString highlight def link muttrcIndexFormatStr muttrcString highlight def link muttrcMixFormatStr muttrcString +highlight def link muttrcPatternFormatStr muttrcString highlight def link muttrcPGPCmdFormatStr muttrcString highlight def link muttrcPGPFormatStr muttrcString highlight def link muttrcQueryFormatStr muttrcString diff --git a/runtime/syntax/openscad.vim b/runtime/syntax/openscad.vim new file mode 100644 index 0000000000..1e20c743c4 --- /dev/null +++ b/runtime/syntax/openscad.vim @@ -0,0 +1,129 @@ +" Vim syntax file +" Language: OpenSCAD +" Maintainer: Niklas Adam <adam@oddodd.org> +" Last change: 2022-04-15 +" +" +" From salkin-mada/openscad.nvim +" Building on the work of Sirtaj Singh Kang and others for vim-openscad +" + +" quit when a syntax file was already loaded +if exists("b:current_syntax") + finish +endif + +syntax case ignore + +setlocal iskeyword=a-z,A-Z,48-57,_ + +syn match openscadAoperator "{" +syn match openscadAoperator "}" +syn match openscadLi "\[" +syn match openscadLi "\]" +syn match openscadPar "(" +syn match openscadPar ")" + +syn match openscadSpecialVariable "\$[a-zA-Z_]\+\>" display +syn match openscadModifier "^\s*[\*\!\#\%]" display + +syn match openscadBinaryoperator "+" +syn match openscadBinaryoperator "-" +syn match openscadBinaryoperator "*" +syn match openscadBinaryoperator "/" +syn match openscadBinaryoperator "%" +syn match openscadBinaryoperator "\*\*" +syn match openscadBinaryoperator "<" +syn match openscadBinaryoperator "<=" +syn match openscadBinaryoperator ">" +syn match openscadBinaryoperator ">=" +syn match openscadBinaryoperator "=" +syn match openscadBinaryoperator "==" +syn match openscadBinaryoperator "===" +syn match openscadBinaryoperator "!=" +syn match openscadBinaryoperator "!==" +syn match openscadBinaryoperator "&" +syn match openscadBinaryoperator "|" +syn match openscadBinaryoperator "<!" +syn match openscadBinaryoperator "?" +syn match openscadBinaryoperator "??" +syn match openscadBinaryoperator "!?" +syn match openscadBinaryoperator "!" +syn match openscadBinaryoperator "#" +syn match openscadBinaryoperator "_" +syn match openscadBinaryoperator "\.\." +syn match openscadBinaryoperator "\.\.\." +syn match openscadBinaryoperator "`" +syn match openscadBinaryoperator ":" + +syn keyword openscadFunctionDef function nextgroup=openscadFunction skipwhite skipempty +syn match openscadFunction /\<\h\w*\>/ contained display + +syn keyword openscadModuleDef module nextgroup=openscadModule skipwhite skipempty +syn match openscadModule /\<\h\w*\>/ contained display + +syn keyword openscadStatement echo assign let assert +syn keyword openscadConditional if else +syn keyword openscadRepeat for intersection_for +syn keyword openscadInclude include use +syn keyword openscadCsgKeyword union difference intersection render intersection_for +syn keyword openscadTransform scale rotate translate resize mirror multmatrix color minkowski hull projection linear_extrude rotate_extrude offset +syn keyword openscadPrimitiveSolid cube sphere cylinder polyhedron surface +syn keyword openscadPrimitive2D square circle polygon import_dxf text +syn keyword openscadPrimitiveImport import child children + +syn match openscadNumbers "\<\d\|\.\d" contains=openscadNumber display transparent +syn match openscadNumber "\d\+" display contained +syn match openscadNumber "\.\d\+" display contained + +syn region openscadString start=/"/ skip=/\\"/ end=/"/ + +syn keyword openscadBoolean true false + +syn keyword openscadCommentTodo TODO FIXME XXX NOTE contained display +syn match openscadInlineComment ://.*$: contains=openscadCommentTodo +syn region openscadBlockComment start=:/\*: end=:\*/: fold contains=openscadCommentTodo + +syn region openscadBlock start="{" end="}" transparent fold +syn region openscadVector start="\[" end="\]" transparent fold + +syn keyword openscadBuiltin abs acos asin atan atan2 ceil cos exp floor ln log +syn keyword openscadBuiltin lookup max min pow rands round sign sin sqrt tan +syn keyword openscadBuiltin str len search version version_num concat chr ord cross norm +syn keyword openscadBuiltin parent_module +syn keyword openscadBuiltin dxf_cross dxf_dim +syn keyword openscadBuiltinSpecial PI undef + +""""""""""""""""""""""""""""""""""""""""" +" linkage +""""""""""""""""""""""""""""""""""""""""" +hi def link openscadFunctionDef Structure +hi def link openscadAoperator Function +hi def link openscadLi Function +" hi def link openscadPar Structure +hi def link openscadBuiltinSpecial Special +hi def link openscadBinaryoperator Special +hi def link openscadFunction Function +hi def link openscadModuleDef Structure +hi def link openscadModule Function +hi def link openscadBlockComment Comment +hi def link openscadBoolean Boolean +hi def link openscadBuiltin Function +hi def link openscadConditional Conditional +hi def link openscadCsgKeyword Structure +hi def link openscadInclude Include +hi def link openscadInlineComment Comment +hi def link openscadModifier Special +hi def link openscadStatement Statement +hi def link openscadNumbers Number +hi def link openscadNumber Number +hi def link openscadPrimitiveSolid Keyword +hi def link openscadPrimitive2D Keyword +hi def link openscadPrimitiveImport Keyword +hi def link openscadRepeat Repeat +hi def link openscadSpecialVariable Special +hi def link openscadString String +hi def link openscadTransform Statement +hi def link openscadCommentTodo Todo + +let b:current_syntax = 'openscad' diff --git a/runtime/syntax/perl.vim b/runtime/syntax/perl.vim index f4f9520de5..73f967a183 100644 --- a/runtime/syntax/perl.vim +++ b/runtime/syntax/perl.vim @@ -1,15 +1,17 @@ " Vim syntax file -" Language: Perl 5 +" Language: Perl " Maintainer: vim-perl <vim-perl@googlegroups.com> -" Homepage: https://github.com/vim-perl/vim-perl/tree/master +" Homepage: https://github.com/vim-perl/vim-perl " Bugs/requests: https://github.com/vim-perl/vim-perl/issues -" Last Change: 2020 Apr 15 +" License: Vim License (see :help license) +" Last Change: 2022 Jun 13 " Contributors: Andy Lester <andy@petdance.com> " Hinrik Örn Sigurðsson <hinrik.sig@gmail.com> " Lukas Mai <l.mai.web.de> " Nick Hibma <nick@van-laarhoven.org> " Sonia Heimann <niania@netsurf.org> " Rob Hoelz <rob@hoelz.ro> +" Doug Kearns <dougkearns@gmail.com> " and many others. " " Please download the most recent version first, before mailing @@ -41,11 +43,11 @@ set cpo&vim " POD starts with ^=<word> and ends with ^=cut -if !exists("perl_include_pod") || perl_include_pod == 1 +if get(g:, 'perl_include_pod', 1) " Include a while extra syntax file syn include @Pod syntax/pod.vim unlet b:current_syntax - if exists("perl_fold") + if get(g:, 'perl_fold', 1) syn region perlPOD start="^=[a-z]" end="^=cut" contains=@Pod,@Spell,perlTodo keepend fold extend syn region perlPOD start="^=cut" end="^=cut" contains=perlTodo keepend fold extend else @@ -54,7 +56,7 @@ if !exists("perl_include_pod") || perl_include_pod == 1 endif else " Use only the bare minimum of rules - if exists("perl_fold") + if get(g:, 'perl_fold', 1) syn region perlPOD start="^=[a-z]" end="^=cut" fold else syn region perlPOD start="^=[a-z]" end="^=cut" @@ -92,7 +94,7 @@ syn match perlStatementFiles "\<\%(ch\%(dir\|mod\|own\|root\)\|glob\|link\|mkdi syn match perlStatementFiles "-[rwxoRWXOezsfdlpSbctugkTBMAC]\>" syn match perlStatementFlow "\<\%(caller\|die\|dump\|eval\|exit\|wantarray\|evalbytes\)\>" syn match perlStatementInclude "\<\%(require\|import\|unimport\)\>" -syn match perlStatementInclude "\<\%(use\|no\)\s\+\%(\%(attributes\|attrs\|autodie\|autouse\|parent\|base\|big\%(int\|num\|rat\)\|blib\|bytes\|charnames\|constant\|diagnostics\|encoding\%(::warnings\)\=\|feature\|fields\|filetest\|if\|integer\|less\|lib\|locale\|mro\|open\|ops\|overload\|overloading\|re\|sigtrap\|sort\|strict\|subs\|threads\%(::shared\)\=\|utf8\|vars\|version\|vmsish\|warnings\%(::register\)\=\)\>\)\=" +syn match perlStatementInclude "\<\%(use\|no\)\s\+\%(\%(attributes\|attrs\|autodie\%(::\%(exception\%(::system\)\=\|hints\|skip\)\)\=\|autouse\|parent\|base\|big\%(int\|num\|rat\)\|blib\|bytes\|charnames\|constant\|deprecate\|diagnostics\|encoding\%(::warnings\)\=\|experimental\|feature\|fields\|filetest\|if\|integer\|less\|lib\|locale\|mro\|ok\|open\|ops\|overload\|overloading\|re\|sigtrap\|sort\|strict\|subs\|threads\%(::shared\)\=\|utf8\|vars\|version\|vmsish\|warnings\%(::register\)\=\)\>\)\=" syn match perlStatementProc "\<\%(alarm\|exec\|fork\|get\%(pgrp\|ppid\|priority\)\|kill\|pipe\|set\%(pgrp\|priority\)\|sleep\|system\|times\|wait\%(pid\)\=\)\>" syn match perlStatementSocket "\<\%(accept\|bind\|connect\|get\%(peername\|sock\%(name\|opt\)\)\|listen\|recv\|send\|setsockopt\|shutdown\|socket\%(pair\)\=\)\>" syn match perlStatementIPC "\<\%(msg\%(ctl\|get\|rcv\|snd\)\|sem\%(ctl\|get\|op\)\|shm\%(ctl\|get\|read\|write\)\)\>" @@ -138,38 +140,36 @@ syn match perlPackageRef "[$@#%*&]\%(\%(::\|'\)\=\I\i*\%(\%(::\|'\)\I\i*\)*\)\ " If you don't want complex things like @{${"foo"}} to be processed, " just set the variable "perl_no_extended_vars"... -if !exists("perl_no_scope_in_variables") - syn match perlVarPlain "\%([@$]\|\$#\)\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" contains=perlPackageRef nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref - syn match perlVarPlain2 "%\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" contains=perlPackageRef nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref - syn match perlFunctionName "&\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" contains=perlPackageRef nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref +if !get(g:, 'perl_no_scope_in_variables', 0) + syn match perlVarPlain "\%([@$]\|\$#\)\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" contains=perlPackageRef nextgroup=perlVarMember,perlVarSimpleMember,perlPostDeref + syn match perlVarPlain2 "%\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" contains=perlPackageRef nextgroup=perlVarMember,perlVarSimpleMember,perlPostDeref + syn match perlFunctionName "&\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" contains=perlPackageRef nextgroup=perlVarMember,perlVarSimpleMember,perlPostDeref else - syn match perlVarPlain "\%([@$]\|\$#\)\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref - syn match perlVarPlain2 "%\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref - syn match perlFunctionName "&\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref + syn match perlVarPlain "\%([@$]\|\$#\)\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" nextgroup=perlVarMember,perlVarSimpleMember,perlPostDeref + syn match perlVarPlain2 "%\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" nextgroup=perlVarMember,perlVarSimpleMember,perlPostDeref + syn match perlFunctionName "&\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" nextgroup=perlVarMember,perlVarSimpleMember,perlPostDeref endif syn match perlVarPlain2 "%[-+]" -if !exists("perl_no_extended_vars") - syn cluster perlExpr contains=perlStatementIndirObjWrap,perlStatementScalar,perlStatementRegexp,perlStatementNumeric,perlStatementList,perlStatementHash,perlStatementFiles,perlStatementTime,perlStatementMisc,perlVarPlain,perlVarPlain2,perlVarNotInMatches,perlVarSlash,perlVarBlock,perlVarBlock2,perlShellCommand,perlFloat,perlNumber,perlStringUnexpanded,perlString,perlQQ,perlArrow,perlBraces - syn region perlArrow matchgroup=perlArrow start="->\s*(" end=")" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref contained - syn region perlArrow matchgroup=perlArrow start="->\s*\[" end="\]" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref contained - syn region perlArrow matchgroup=perlArrow start="->\s*{" end="}" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref contained - syn match perlArrow "->\s*{\s*\I\i*\s*}" contains=perlVarSimpleMemberName nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref contained - syn region perlArrow matchgroup=perlArrow start="->\s*\$*\I\i*\s*(" end=")" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref contained - syn region perlVarBlock matchgroup=perlVarPlain start="\%($#\|[$@]\)\$*{" skip="\\}" end=+}\|\%(\%(<<\%('\|"\)\?\)\@=\)+ contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref extend - syn region perlVarBlock2 matchgroup=perlVarPlain start="[%&*]\$*{" skip="\\}" end=+}\|\%(\%(<<\%('\|"\)\?\)\@=\)+ contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref extend - syn match perlVarPlain2 "[%&*]\$*{\I\i*}" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref extend - syn match perlVarPlain "\%(\$#\|[@$]\)\$*{\I\i*}" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref extend - syn region perlVarMember matchgroup=perlVarPlain start="\%(->\)\={" skip="\\}" end="}" contained contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref extend - syn match perlVarSimpleMember "\%(->\)\={\s*\I\i*\s*}" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref contains=perlVarSimpleMemberName contained extend +if !get(g:, 'perl_no_extended_vars', 0) + syn cluster perlExpr contains=perlStatementIndirObjWrap,perlStatementScalar,perlStatementRegexp,perlStatementNumeric,perlStatementList,perlStatementHash,perlStatementFiles,perlStatementTime,perlStatementMisc,perlVarPlain,perlVarPlain2,perlVarNotInMatches,perlVarSlash,perlVarBlock,perlVarBlock2,perlShellCommand,perlFloat,perlNumber,perlStringUnexpanded,perlString,perlQ,perlQQ,perlQW,perlQR,perlArrow,perlBraces + syn region perlArrow matchgroup=perlArrow start="->\s*(" end=")" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlPostDeref contained + syn region perlArrow matchgroup=perlArrow start="->\s*\[" end="\]" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlPostDeref contained + syn region perlArrow matchgroup=perlArrow start="->\s*{" end="}" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlPostDeref contained + syn match perlArrow "->\s*{\s*\I\i*\s*}" contains=perlVarSimpleMemberName nextgroup=perlVarMember,perlVarSimpleMember,perlPostDeref contained + syn region perlVarBlock matchgroup=perlVarPlain start="\%($#\|[$@]\)\$*{" skip="\\}" end=+}\|\%(\%(<<\%('\|"\)\?\)\@=\)+ contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlPostDeref extend + syn region perlVarBlock2 matchgroup=perlVarPlain start="[%&*]\$*{" skip="\\}" end=+}\|\%(\%(<<\%('\|"\)\?\)\@=\)+ contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlPostDeref extend + syn match perlVarPlain2 "[%&*]\$*{\I\i*}" nextgroup=perlVarMember,perlVarSimpleMember,perlPostDeref extend + syn match perlVarPlain "\%(\$#\|[@$]\)\$*{\I\i*}" nextgroup=perlVarMember,perlVarSimpleMember,perlPostDeref extend + syn region perlVarMember matchgroup=perlVarPlain start="\%(->\)\={" skip="\\}" end="}" contained contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlPostDeref extend + syn match perlVarSimpleMember "\%(->\)\={\s*\I\i*\s*}" nextgroup=perlVarMember,perlVarSimpleMember,perlPostDeref contains=perlVarSimpleMemberName contained extend syn match perlVarSimpleMemberName "\I\i*" contained - syn region perlVarMember matchgroup=perlVarPlain start="\%(->\)\=\[" skip="\\]" end="]" contained contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref extend - syn match perlPackageConst "__PACKAGE__" nextgroup=perlMethod,perlPostDeref - syn match perlMethod "->\$*\I\i*" contained nextgroup=perlVarSimpleMember,perlVarMember,perlMethod,perlPostDeref - syn match perlPostDeref "->\%($#\|[$@%&*]\)\*" contained nextgroup=perlVarSimpleMember,perlVarMember,perlMethod,perlPostDeref - syn region perlPostDeref start="->\%($#\|[$@%&*]\)\[" skip="\\]" end="]" contained contains=@perlExpr nextgroup=perlVarSimpleMember,perlVarMember,perlMethod,perlPostDeref - syn region perlPostDeref matchgroup=perlPostDeref start="->\%($#\|[$@%&*]\){" skip="\\}" end="}" contained contains=@perlExpr nextgroup=perlVarSimpleMember,perlVarMember,perlMethod,perlPostDeref + syn region perlVarMember matchgroup=perlVarPlain start="\%(->\)\=\[" skip="\\]" end="]" contained contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlPostDeref extend + syn match perlPackageConst "__PACKAGE__" nextgroup=perlPostDeref + syn match perlPostDeref "->\%($#\|[$@%&*]\)\*" contained nextgroup=perlVarSimpleMember,perlVarMember,perlPostDeref + syn region perlPostDeref start="->\%($#\|[$@%&*]\)\[" skip="\\]" end="]" contained contains=@perlExpr nextgroup=perlVarSimpleMember,perlVarMember,perlPostDeref + syn region perlPostDeref matchgroup=perlPostDeref start="->\%($#\|[$@%&*]\){" skip="\\}" end="}" keepend extend contained contains=@perlExpr nextgroup=perlVarSimpleMember,perlVarMember,perlPostDeref endif " File Descriptors @@ -221,10 +221,16 @@ syn region perlShellCommand matchgroup=perlMatchStartEnd start="`" end="`" cont " Constants " " Numbers -syn match perlNumber "\<\%(0\%(x\x[[:xdigit:]_]*\|b[01][01_]*\|\o[0-7_]*\|\)\|[1-9][[:digit:]_]*\)\>" -syn match perlFloat "\<\d[[:digit:]_]*[eE][\-+]\=\d\+" -syn match perlFloat "\<\d[[:digit:]_]*\.[[:digit:]_]*\%([eE][\-+]\=\d\+\)\=" -syn match perlFloat "\.[[:digit:]][[:digit:]_]*\%([eE][\-+]\=\d\+\)\=" +syn case ignore +syn match perlNumber "\<\%(0\|[1-9]\%(_\=\d\)*\)\>" +syn match perlNumber "\<0\%(x\x\%(_\=\x\)*\|b[01]\%(_\=[01]\)*\|o\=\%(_\=\o\)*\)\>" +syn match perlFloat "\<\d\%(_\=\d\)*e[-+]\=\d\%(_\=\d\)*" +syn match perlFloat "\<\d\%(_\=\d\)*\.\%(\d\%(_\=\d\)*\)\=\%(e[-+]\=\d\%(_\=\d\)*\)\=" +syn match perlFloat "\.\d\%(_\=\d\)*\%(e[-+]\=\d\%(_\=\d\)*\)\=" +syn match perlFloat "\<0x\x\%(_\=\x\)*p[-+]\=\d\%(_\=\d\)*" +syn match perlFloat "\<0x\x\%(_\=\x\)*\.\%(\x\%(_\=\x\)*\)\=\%(p[-+]\=\d\%(_\=\d\)*\)\=" +syn match perlFloat "\<0x\.\x\%(_\=\x\)*\%(p[-+]\=\d\%(_\=\d\)*\)\=" +syn case match syn match perlString "\<\%(v\d\+\%(\.\d\+\)*\|\d\+\%(\.\d\+\)\{2,}\)\>" contains=perlVStringV syn match perlVStringV "\<v" contained @@ -242,22 +248,24 @@ syn region perlAnglesDQ start=+<+ end=+>+ extend contained contains=perlAnglesD " Simple version of searches and matches -syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\>\s*\z([^[:space:]'([{<#]\)+ end=+\z1[msixpodualgcn]*+ contains=@perlInterpMatch keepend extend -syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m#+ end=+#[msixpodualgcn]*+ contains=@perlInterpMatch keepend extend -syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*'+ end=+'[msixpodualgcn]*+ contains=@perlInterpSQ keepend extend -syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*/+ end=+/[msixpodualgcn]*+ contains=@perlInterpSlash keepend extend -syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*(+ end=+)[msixpodualgcn]*+ contains=@perlInterpMatch,perlParensDQ keepend extend -syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*{+ end=+}[msixpodualgcn]*+ contains=@perlInterpMatch,perlBracesDQ extend -syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*<+ end=+>[msixpodualgcn]*+ contains=@perlInterpMatch,perlAnglesDQ keepend extend -syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*\[+ end=+\][msixpodualgcn]*+ contains=@perlInterpMatch,perlBracketsDQ keepend extend +syn match perlMatchModifiers "[msixpadluncgo]\+" contained +syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\>\s*\z([^[:space:]'([{<#]\)+ end=+\z1+ contains=@perlInterpMatch keepend extend nextgroup=perlMatchModifiers +syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m#+ end=+#+ contains=@perlInterpMatch keepend extend nextgroup=perlMatchModifiers +syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*'+ end=+'+ contains=@perlInterpSQ keepend extend nextgroup=perlMatchModifiers +syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*/+ end=+/+ contains=@perlInterpSlash keepend extend nextgroup=perlMatchModifiers +syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*(+ end=+)+ contains=@perlInterpMatch,perlParensDQ keepend extend nextgroup=perlMatchModifiers +syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*{+ end=+}+ contains=@perlInterpMatch,perlBracesDQ extend nextgroup=perlMatchModifiers +syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*<+ end=+>+ contains=@perlInterpMatch,perlAnglesDQ keepend extend nextgroup=perlMatchModifiers +syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*\[+ end=+\]+ contains=@perlInterpMatch,perlBracketsDQ keepend extend nextgroup=perlMatchModifiers " Below some hacks to recognise the // variant. This is virtually impossible to catch in all " cases as the / is used in so many other ways, but these should be the most obvious ones. -syn region perlMatch matchgroup=perlMatchStartEnd start="\%([$@%&*]\@<!\%(\<split\|\<while\|\<if\|\<unless\|\.\.\|[-+*!~(\[{=]\)\s*\)\@<=/\%(/=\)\@!" start=+^/\%(/=\)\@!+ start=+\s\@<=/\%(/=\)\@![^[:space:][:digit:]$@%=]\@=\%(/\_s*\%([([{$@%&*[:digit:]"'`]\|\_s\w\|[[:upper:]_abd-fhjklnqrt-wyz]\)\)\@!+ skip=+\\/+ end=+/[msixpodualgcn]*+ contains=@perlInterpSlash extend +syn region perlMatch matchgroup=perlMatchStartEnd start="\%([$@%&*]\@<!\%(\<split\|\<while\|\<if\|\<unless\|\.\.\|[-+*!~(\[{=]\)\s*\)\@<=/\%(/=\)\@!" start=+^/\%(/=\)\@!+ start=+\s\@<=/\%(/=\)\@![^[:space:][:digit:]$@%=]\@=\%(/\_s*\%([([{$@%&*[:digit:]"'`]\|\_s\w\|[[:upper:]_abd-fhjklnqrt-wyz]\)\)\@!+ skip=+\\/+ end=+/+ contains=@perlInterpSlash extend nextgroup=perlMatchModifiers " Substitutions " perlMatch is the first part, perlSubstitution* is the substitution part +syn match perlSubstitutionModifiers "[msixpadluncgero]\+" contained syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s\>\s*\z([^[:space:]'([{<#]\)+ end=+\z1+me=e-1 contains=@perlInterpMatch nextgroup=perlSubstitutionGQQ keepend extend syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s\s*'+ end=+'+me=e-1 contains=@perlInterpSQ nextgroup=perlSubstitutionSQ keepend extend syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s\s*/+ end=+/+me=e-1 contains=@perlInterpSlash nextgroup=perlSubstitutionGQQ keepend extend @@ -266,38 +274,39 @@ syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s\s syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s\s*<+ end=+>+ contains=@perlInterpMatch,perlAnglesDQ nextgroup=perlSubstitutionGQQ skipwhite skipempty skipnl keepend extend syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s\s*\[+ end=+\]+ contains=@perlInterpMatch,perlBracketsDQ nextgroup=perlSubstitutionGQQ skipwhite skipempty skipnl keepend extend syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!s\s*{+ end=+}+ contains=@perlInterpMatch,perlBracesDQ nextgroup=perlSubstitutionGQQ skipwhite skipempty skipnl keepend extend -syn region perlSubstitutionGQQ matchgroup=perlMatchStartEnd start=+\z([^[:space:]'([{<]\)+ end=+\z1[msixpodualgcern]*+ keepend contained contains=@perlInterpDQ extend -syn region perlSubstitutionGQQ matchgroup=perlMatchStartEnd start=+(+ end=+)[msixpodualgcern]*+ contained contains=@perlInterpDQ,perlParensDQ keepend extend -syn region perlSubstitutionGQQ matchgroup=perlMatchStartEnd start=+\[+ end=+\][msixpodualgcern]*+ contained contains=@perlInterpDQ,perlBracketsDQ keepend extend -syn region perlSubstitutionGQQ matchgroup=perlMatchStartEnd start=+{+ end=+}[msixpodualgcern]*+ contained contains=@perlInterpDQ,perlBracesDQ keepend extend extend -syn region perlSubstitutionGQQ matchgroup=perlMatchStartEnd start=+<+ end=+>[msixpodualgcern]*+ contained contains=@perlInterpDQ,perlAnglesDQ keepend extend -syn region perlSubstitutionSQ matchgroup=perlMatchStartEnd start=+'+ end=+'[msixpodualgcern]*+ contained contains=@perlInterpSQ keepend extend +syn region perlSubstitutionGQQ matchgroup=perlMatchStartEnd start=+\z([^[:space:]'([{<]\)+ end=+\z1+ keepend contained contains=@perlInterpDQ extend nextgroup=perlSubstitutionModifiers +syn region perlSubstitutionGQQ matchgroup=perlMatchStartEnd start=+(+ end=+)+ contained contains=@perlInterpDQ,perlParensDQ keepend extend nextgroup=perlSubstitutionModifiers +syn region perlSubstitutionGQQ matchgroup=perlMatchStartEnd start=+\[+ end=+\]+ contained contains=@perlInterpDQ,perlBracketsDQ keepend extend nextgroup=perlSubstitutionModifiers +syn region perlSubstitutionGQQ matchgroup=perlMatchStartEnd start=+{+ end=+}+ contained contains=@perlInterpDQ,perlBracesDQ keepend extend extend nextgroup=perlSubstitutionModifiers +syn region perlSubstitutionGQQ matchgroup=perlMatchStartEnd start=+<+ end=+>+ contained contains=@perlInterpDQ,perlAnglesDQ keepend extend nextgroup=perlSubstitutionModifiers +syn region perlSubstitutionSQ matchgroup=perlMatchStartEnd start=+'+ end=+'+ contained contains=@perlInterpSQ keepend extend nextgroup=perlSubstitutionModifiers " Translations " perlMatch is the first part, perlTranslation* is the second, translator part. +syn match perlTranslationModifiers "[cdsr]\+" contained syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!\%(tr\|y\)\>\s*\z([^[:space:]([{<#]\)+ end=+\z1+me=e-1 contains=@perlInterpSQ nextgroup=perlTranslationGQ syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!\%(tr\|y\)#+ end=+#+me=e-1 contains=@perlInterpSQ nextgroup=perlTranslationGQ syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!\%(tr\|y\)\s*\[+ end=+\]+ contains=@perlInterpSQ,perlBracketsSQ nextgroup=perlTranslationGQ skipwhite skipempty skipnl syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!\%(tr\|y\)\s*(+ end=+)+ contains=@perlInterpSQ,perlParensSQ nextgroup=perlTranslationGQ skipwhite skipempty skipnl syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!\%(tr\|y\)\s*<+ end=+>+ contains=@perlInterpSQ,perlAnglesSQ nextgroup=perlTranslationGQ skipwhite skipempty skipnl syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!\%(tr\|y\)\s*{+ end=+}+ contains=@perlInterpSQ,perlBracesSQ nextgroup=perlTranslationGQ skipwhite skipempty skipnl -syn region perlTranslationGQ matchgroup=perlMatchStartEnd start=+\z([^[:space:]([{<]\)+ end=+\z1[cdsr]*+ contained -syn region perlTranslationGQ matchgroup=perlMatchStartEnd start=+(+ end=+)[cdsr]*+ contains=perlParensSQ contained -syn region perlTranslationGQ matchgroup=perlMatchStartEnd start=+\[+ end=+\][cdsr]*+ contains=perlBracketsSQ contained -syn region perlTranslationGQ matchgroup=perlMatchStartEnd start=+{+ end=+}[cdsr]*+ contains=perlBracesSQ contained -syn region perlTranslationGQ matchgroup=perlMatchStartEnd start=+<+ end=+>[cdsr]*+ contains=perlAnglesSQ contained +syn region perlTranslationGQ matchgroup=perlMatchStartEnd start=+\z([^[:space:]([{<]\)+ end=+\z1+ contained nextgroup=perlTranslationModifiers +syn region perlTranslationGQ matchgroup=perlMatchStartEnd start=+(+ end=+)+ contains=perlParensSQ contained nextgroup=perlTranslationModifiers +syn region perlTranslationGQ matchgroup=perlMatchStartEnd start=+\[+ end=+\]+ contains=perlBracketsSQ contained nextgroup=perlTranslationModifiers +syn region perlTranslationGQ matchgroup=perlMatchStartEnd start=+{+ end=+}+ contains=perlBracesSQ contained nextgroup=perlTranslationModifiers +syn region perlTranslationGQ matchgroup=perlMatchStartEnd start=+<+ end=+>+ contains=perlAnglesSQ contained nextgroup=perlTranslationModifiers " Strings and q, qq, qw and qr expressions syn region perlStringUnexpanded matchgroup=perlStringStartEnd start="'" end="'" contains=@perlInterpSQ keepend extend syn region perlString matchgroup=perlStringStartEnd start=+"+ end=+"+ contains=@perlInterpDQ keepend extend -syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q\>\s*\z([^[:space:]#([{<]\)+ end=+\z1+ contains=@perlInterpSQ keepend extend -syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q#+ end=+#+ contains=@perlInterpSQ keepend extend -syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q\s*(+ end=+)+ contains=@perlInterpSQ,perlParensSQ keepend extend -syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q\s*\[+ end=+\]+ contains=@perlInterpSQ,perlBracketsSQ keepend extend -syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q\s*{+ end=+}+ contains=@perlInterpSQ,perlBracesSQ keepend extend -syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q\s*<+ end=+>+ contains=@perlInterpSQ,perlAnglesSQ keepend extend +syn region perlQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q\>\s*\z([^[:space:]#([{<]\)+ end=+\z1+ contains=@perlInterpSQ keepend extend +syn region perlQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q#+ end=+#+ contains=@perlInterpSQ keepend extend +syn region perlQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q\s*(+ end=+)+ contains=@perlInterpSQ,perlParensSQ keepend extend +syn region perlQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q\s*\[+ end=+\]+ contains=@perlInterpSQ,perlBracketsSQ keepend extend +syn region perlQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q\s*{+ end=+}+ contains=@perlInterpSQ,perlBracesSQ keepend extend +syn region perlQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q\s*<+ end=+>+ contains=@perlInterpSQ,perlAnglesSQ keepend extend syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q[qx]\>\s*\z([^[:space:]#([{<]\)+ end=+\z1+ contains=@perlInterpDQ keepend extend syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q[qx]#+ end=+#+ contains=@perlInterpDQ keepend extend @@ -306,48 +315,83 @@ syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q[qx syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q[qx]\s*{+ end=+}+ contains=@perlInterpDQ,perlBracesDQ keepend extend syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!q[qx]\s*<+ end=+>+ contains=@perlInterpDQ,perlAnglesDQ keepend extend -syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qw\s*\z([^[:space:]#([{<]\)+ end=+\z1+ contains=@perlInterpSQ keepend extend -syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qw#+ end=+#+ contains=@perlInterpSQ keepend extend -syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qw\s*(+ end=+)+ contains=@perlInterpSQ,perlParensSQ keepend extend -syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qw\s*\[+ end=+\]+ contains=@perlInterpSQ,perlBracketsSQ keepend extend -syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qw\s*{+ end=+}+ contains=@perlInterpSQ,perlBracesSQ keepend extend -syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qw\s*<+ end=+>+ contains=@perlInterpSQ,perlAnglesSQ keepend extend +syn region perlQW matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qw\s*\z([^[:space:]#([{<]\)+ end=+\z1+ contains=@perlInterpSQ keepend extend +syn region perlQW matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qw#+ end=+#+ contains=@perlInterpSQ keepend extend +syn region perlQW matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qw\s*(+ end=+)+ contains=@perlInterpSQ,perlParensSQ keepend extend +syn region perlQW matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qw\s*\[+ end=+\]+ contains=@perlInterpSQ,perlBracketsSQ keepend extend +syn region perlQW matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qw\s*{+ end=+}+ contains=@perlInterpSQ,perlBracesSQ keepend extend +syn region perlQW matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qw\s*<+ end=+>+ contains=@perlInterpSQ,perlAnglesSQ keepend extend -syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr\>\s*\z([^[:space:]#([{<'/]\)+ end=+\z1[imosxdual]*+ contains=@perlInterpMatch keepend extend -syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr\s*/+ end=+/[imosxdual]*+ contains=@perlInterpSlash keepend extend -syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr#+ end=+#[imosxdual]*+ contains=@perlInterpMatch keepend extend -syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr\s*'+ end=+'[imosxdual]*+ contains=@perlInterpSQ keepend extend -syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr\s*(+ end=+)[imosxdual]*+ contains=@perlInterpMatch,perlParensDQ keepend extend +syn match perlQRModifiers "[msixpadluno]\+" contained +syn region perlQR matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr\>\s*\z([^[:space:]#([{<'/]\)+ end=+\z1+ contains=@perlInterpMatch keepend extend nextgroup=perlQRModifiers +syn region perlQR matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr\s*/+ end=+/+ contains=@perlInterpSlash keepend extend nextgroup=perlQRModifiers +syn region perlQR matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr#+ end=+#+ contains=@perlInterpMatch keepend extend nextgroup=perlQRModifiers +syn region perlQR matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr\s*'+ end=+'+ contains=@perlInterpSQ keepend extend nextgroup=perlQRModifiers +syn region perlQR matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr\s*(+ end=+)+ contains=@perlInterpMatch,perlParensDQ keepend extend nextgroup=perlQRModifiers " A special case for qr{}, qr<> and qr[] which allows for comments and extra whitespace in the pattern -syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr\s*{+ end=+}[imosxdual]*+ contains=@perlInterpMatch,perlBracesDQ,perlComment keepend extend -syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr\s*<+ end=+>[imosxdual]*+ contains=@perlInterpMatch,perlAnglesDQ,perlComment keepend extend -syn region perlQQ matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr\s*\[+ end=+\][imosxdual]*+ contains=@perlInterpMatch,perlBracketsDQ,perlComment keepend extend +syn region perlQR matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr\s*{+ end=+}+ contains=@perlInterpMatch,perlBracesDQ,perlComment keepend extend nextgroup=perlQRModifiers +syn region perlQR matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr\s*<+ end=+>+ contains=@perlInterpMatch,perlAnglesDQ,perlComment keepend extend nextgroup=perlQRModifiers +syn region perlQR matchgroup=perlStringStartEnd start=+\<\%(::\|'\|->\)\@<!qr\s*\[+ end=+\]+ contains=@perlInterpMatch,perlBracketsDQ,perlComment keepend extend nextgroup=perlQRModifiers " Constructs such as print <<EOF [...] EOF, 'here' documents " " XXX Any statements after the identifier are in perlString colour (i.e. " 'if $a' in 'print <<EOF if $a'). This is almost impossible to get right it " seems due to the 'auto-extending nature' of regions. -syn region perlHereDocStart matchgroup=perlStringStartEnd start=+<<\z(\I\i*\)+ end=+$+ contains=@perlTop oneline -syn region perlHereDocStart matchgroup=perlStringStartEnd start=+<<\s*"\z([^\\"]*\%(\\.[^\\"]*\)*\)"+ end=+$+ contains=@perlTop oneline -syn region perlHereDocStart matchgroup=perlStringStartEnd start=+<<\s*'\z([^\\']*\%(\\.[^\\']*\)*\)'+ end=+$+ contains=@perlTop oneline -syn region perlHereDocStart matchgroup=perlStringStartEnd start=+<<\s*""+ end=+$+ contains=@perlTop oneline -syn region perlHereDocStart matchgroup=perlStringStartEnd start=+<<\s*''+ end=+$+ contains=@perlTop oneline -if exists("perl_fold") - syn region perlHereDoc start=+<<\z(\I\i*\)+ matchgroup=perlStringStartEnd end=+^\z1$+ contains=perlHereDocStart,@perlInterpDQ fold extend +" XXX Indented heredocs are not perfect - they sometimes seem to take a moment +" to update if switched from double to single quotes and vice versa. +" +" Note: bare delimiters such as << to mean <<"" are not supported. These are a +" fatal error since 5.28 and, apparently, a rarely used feature. + +syn region perlHereDocStart matchgroup=perlStringStartEnd start=+<<\~\=\I\i*+ end=+$+ contains=@perlTop oneline +syn region perlHereDocStart matchgroup=perlStringStartEnd start=+<<\~\=\\\I\i*+ end=+$+ contains=@perlTop oneline +syn region perlHereDocStart matchgroup=perlStringStartEnd start=+<<\~\=\s*"[^\\"]*\%(\\.[^\\"]*\)*"+ end=+$+ contains=@perlTop oneline +syn region perlHereDocStart matchgroup=perlStringStartEnd start=+<<\~\=\s*'[^\\']*\%(\\.[^\\']*\)*'+ end=+$+ contains=@perlTop oneline +syn region perlHereDocStart matchgroup=perlStringStartEnd start=+<<\~\=\s*`[^\\`]*\%(\\.[^\\`]*\)*`+ end=+$+ contains=@perlTop oneline +syn region perlHereDocStart matchgroup=perlStringStartEnd start=+<<\~\=\s*""+ end=+$+ contains=@perlTop oneline +syn region perlHereDocStart matchgroup=perlStringStartEnd start=+<<\~\=\s*''+ end=+$+ contains=@perlTop oneline +syn region perlHereDocStart matchgroup=perlStringStartEnd start=+<<\~\=\s*``+ end=+$+ contains=@perlTop oneline + +if get(g:, 'perl_fold', 0) + syn region perlHereDoc start=+<<\z(\I\i*\)+ matchgroup=perlStringStartEnd end=+^\z1$+ contains=perlHereDocStart,@perlInterpDQ fold extend + syn region perlHereDoc start=+<<\\\z(\I\i*\)+ matchgroup=perlStringStartEnd end=+^\z1$+ contains=perlHereDocStart,@perlInterpSQ fold extend syn region perlHereDoc start=+<<\s*"\z([^\\"]*\%(\\.[^\\"]*\)*\)"+ matchgroup=perlStringStartEnd end=+^\z1$+ contains=perlHereDocStart,@perlInterpDQ fold extend syn region perlHereDoc start=+<<\s*'\z([^\\']*\%(\\.[^\\']*\)*\)'+ matchgroup=perlStringStartEnd end=+^\z1$+ contains=perlHereDocStart,@perlInterpSQ fold extend - syn region perlHereDoc start=+<<\s*""+ matchgroup=perlStringStartEnd end=+^$+ contains=perlHereDocStart,@perlInterpDQ,perlNotEmptyLine fold extend - syn region perlHereDoc start=+<<\s*''+ matchgroup=perlStringStartEnd end=+^$+ contains=perlHereDocStart,@perlInterpSQ,perlNotEmptyLine fold extend - syn region perlAutoload matchgroup=perlStringStartEnd start=+<<\s*\(['"]\=\)\z(END_\%(SUB\|OF_FUNC\|OF_AUTOLOAD\)\)\1+ end=+^\z1$+ contains=ALL fold extend + syn region perlHereDoc start=+<<\s*`\z([^\\`]*\%(\\.[^\\`]*\)*\)`+ matchgroup=perlStringStartEnd end=+^\z1$+ contains=perlHereDocStart,@perlInterpDQ fold extend + syn region perlHereDoc start=+<<\s*""+ matchgroup=perlStringStartEnd end=+^$+ contains=perlHereDocStart,@perlInterpDQ,perlNotEmptyLine fold extend + syn region perlHereDoc start=+<<\s*''+ matchgroup=perlStringStartEnd end=+^$+ contains=perlHereDocStart,@perlInterpSQ,perlNotEmptyLine fold extend + syn region perlHereDoc start=+<<\s*``+ matchgroup=perlStringStartEnd end=+^$+ contains=perlHereDocStart,@perlInterpDQ,perlNotEmptyLine fold extend else - syn region perlHereDoc start=+<<\z(\I\i*\)+ matchgroup=perlStringStartEnd end=+^\z1$+ contains=perlHereDocStart,@perlInterpDQ + syn region perlHereDoc start=+<<\z(\I\i*\)+ matchgroup=perlStringStartEnd end=+^\z1$+ contains=perlHereDocStart,@perlInterpDQ + syn region perlHereDoc start=+<<\\\z(\I\i*\)+ matchgroup=perlStringStartEnd end=+^\z1$+ contains=perlHereDocStart,@perlInterpSQ syn region perlHereDoc start=+<<\s*"\z([^\\"]*\%(\\.[^\\"]*\)*\)"+ matchgroup=perlStringStartEnd end=+^\z1$+ contains=perlHereDocStart,@perlInterpDQ syn region perlHereDoc start=+<<\s*'\z([^\\']*\%(\\.[^\\']*\)*\)'+ matchgroup=perlStringStartEnd end=+^\z1$+ contains=perlHereDocStart,@perlInterpSQ - syn region perlHereDoc start=+<<\s*""+ matchgroup=perlStringStartEnd end=+^$+ contains=perlHereDocStart,@perlInterpDQ,perlNotEmptyLine - syn region perlHereDoc start=+<<\s*''+ matchgroup=perlStringStartEnd end=+^$+ contains=perlHereDocStart,@perlInterpSQ,perlNotEmptyLine - syn region perlAutoload matchgroup=perlStringStartEnd start=+<<\s*\(['"]\=\)\z(END_\%(SUB\|OF_FUNC\|OF_AUTOLOAD\)\)\1+ end=+^\z1$+ contains=ALL + syn region perlHereDoc start=+<<\s*`\z([^\\`]*\%(\\.[^\\`]*\)*\)`+ matchgroup=perlStringStartEnd end=+^\z1$+ contains=perlHereDocStart,@perlInterpDQ + syn region perlHereDoc start=+<<\s*""+ matchgroup=perlStringStartEnd end=+^$+ contains=perlHereDocStart,@perlInterpDQ,perlNotEmptyLine + syn region perlHereDoc start=+<<\s*''+ matchgroup=perlStringStartEnd end=+^$+ contains=perlHereDocStart,@perlInterpSQ,perlNotEmptyLine + syn region perlHereDoc start=+<<\s*``+ matchgroup=perlStringStartEnd end=+^$+ contains=perlHereDocStart,@perlInterpDQ,perlNotEmptyLine +endif + +if get(g:, 'perl_fold', 0) + syn region perlIndentedHereDoc start=+<<\~\z(\I\i*\)+ matchgroup=perlStringStartEnd end=+^\s*\z1$+ contains=perlIndentedHereDocStart,@perlInterpDQ fold extend + syn region perlIndentedHereDoc start=+<<\~\\\z(\I\i*\)+ matchgroup=perlStringStartEnd end=+^\s*\z1$+ contains=perlIndentedHereDocStart,@perlInterpSQ fold extend + syn region perlIndentedHereDoc start=+<<\~\s*"\z([^\\"]*\%(\\.[^\\"]*\)*\)"+ matchgroup=perlStringStartEnd end=+^\s*\z1$+ contains=perlIndentedHereDocStart,@perlInterpDQ fold extend + syn region perlIndentedHereDoc start=+<<\~\s*'\z([^\\']*\%(\\.[^\\']*\)*\)'+ matchgroup=perlStringStartEnd end=+^\s*\z1$+ contains=perlIndentedHereDocStart,@perlInterpSQ fold extend + syn region perlIndentedHereDoc start=+<<\~\s*`\z([^\\`]*\%(\\.[^\\`]*\)*\)`+ matchgroup=perlStringStartEnd end=+^\s*\z1$+ contains=perlIndentedHereDocStart,@perlInterpDQ fold extend + syn region perlIndentedHereDoc start=+<<\~\s*""+ matchgroup=perlStringStartEnd end=+^$+ contains=perlIndentedHereDocStart,@perlInterpDQ,perlNotEmptyLine fold extend + syn region perlIndentedHereDoc start=+<<\~\s*''+ matchgroup=perlStringStartEnd end=+^$+ contains=perlIndentedHereDocStart,@perlInterpSQ,perlNotEmptyLine fold extend + syn region perlIndentedHereDoc start=+<<\~\s*``+ matchgroup=perlStringStartEnd end=+^$+ contains=perlIndentedHereDocStart,@perlInterpDQ,perlNotEmptyLine fold extend +else + syn region perlIndentedHereDoc start=+<<\~\z(\I\i*\)+ matchgroup=perlStringStartEnd end=+^\s*\z1$+ contains=perlHereDocStart,@perlInterpDQ + syn region perlIndentedHereDoc start=+<<\~\\\z(\I\i*\)+ matchgroup=perlStringStartEnd end=+^\s*\z1$+ contains=perlHereDocStart,@perlInterpSQ + syn region perlIndentedHereDoc start=+<<\~\s*"\z([^\\"]*\%(\\.[^\\"]*\)*\)"+ matchgroup=perlStringStartEnd end=+^\s*\z1$+ contains=perlHereDocStart,@perlInterpDQ + syn region perlIndentedHereDoc start=+<<\~\s*'\z([^\\']*\%(\\.[^\\']*\)*\)'+ matchgroup=perlStringStartEnd end=+^\s*\z1$+ contains=perlHereDocStart,@perlInterpSQ + syn region perlIndentedHereDoc start=+<<\~\s*`\z([^\\`]*\%(\\.[^\\`]*\)*\)`+ matchgroup=perlStringStartEnd end=+^\s*\z1$+ contains=perlHereDocStart,@perlInterpDQ + syn region perlIndentedHereDoc start=+<<\~\s*""+ matchgroup=perlStringStartEnd end=+^$+ contains=perlHereDocStart,@perlInterpDQ,perlNotEmptyLine + syn region perlIndentedHereDoc start=+<<\~\s*''+ matchgroup=perlStringStartEnd end=+^$+ contains=perlHereDocStart,@perlInterpSQ,perlNotEmptyLine + syn region perlIndentedHereDoc start=+<<\~\s*``+ matchgroup=perlStringStartEnd end=+^$+ contains=perlHereDocStart,@perlInterpDQ,perlNotEmptyLine endif @@ -357,24 +401,15 @@ syn match perlPackageDecl "\<package\s\+\%(\h\|::\)\%(\w\|::\)*" contains=per syn keyword perlStatementPackage package contained " Functions -" sub [name] [(prototype)] { -" -syn match perlSubError "[^[:space:];{#]" contained -syn match perlSubAttributesCont "\h\w*\_s*\%(:\_s*\)\=" nextgroup=@perlSubAttrMaybe contained -syn region perlSubAttributesCont matchgroup=perlSubAttributesCont start="\h\w*(" end=")\_s*\%(:\_s*\)\=" nextgroup=@perlSubAttrMaybe contained contains=@perlInterpSQ,perlParensSQ -syn cluster perlSubAttrMaybe contains=perlSubAttributesCont,perlSubError,perlFakeGroup -syn match perlSubAttributes "" contained nextgroup=perlSubError -syn match perlSubAttributes ":\_s*" contained nextgroup=@perlSubAttrMaybe if get(g:, "perl_sub_signatures", 0) - syn match perlSignature +(\_[^)]*)\_s*+ nextgroup=perlSubAttributes,perlComment contained + syn match perlSubSignature "\s*([^)]*)" contained extend else - syn match perlSubPrototypeError "(\%(\_s*\%(\%(\\\%([$@%&*]\|\[[$@%&*]\+\]\)\|[$&*]\|[@%]\%(\_s*)\)\@=\|;\%(\_s*[)$@%&*\\]\)\@=\|_\%(\_s*[);]\)\@=\)\_s*\)*\)\@>\zs\_[^)]\+" contained - syn match perlSubPrototype +(\_[^)]*)\_s*+ nextgroup=perlSubAttributes,perlComment contained contains=perlSubPrototypeError + syn match perlSubPrototype "\s*([\\$@%&*\[\];]*)" contained extend endif - -syn match perlSubName +\%(\h\|::\|'\w\)\%(\w\|::\|'\w\)*\_s*\|+ contained nextgroup=perlSubPrototype,perlSignature,perlSubAttributes,perlComment - -syn match perlFunction +\<sub\>\_s*+ nextgroup=perlSubName +syn match perlSubAttribute "\s*:\s*\h\w*\%(([^)]*)\|\)" contained extend +syn match perlSubName "\%(\h\|::\|'\w\)\%(\w\|::\|'\w\)*\s*" contained extend +syn region perlSubDeclaration start="" end="[;{]" contains=perlSubName,perlSubPrototype,perlSubAttribute,perlSubSignature,perlComment contained transparent +syn match perlFunction "\<sub\>\_s*" nextgroup=perlSubDeclaration " The => operator forces a bareword to the left of it to be interpreted as " a string @@ -394,39 +429,75 @@ syn match perlFormatField "@[^A-Za-z_|<>~#*]"me=e-1 contained syn match perlFormatField "@$" contained " __END__ and __DATA__ clauses -if exists("perl_fold") - syntax region perlDATA start="^__DATA__$" skip="." end="." contains=@perlDATA fold - syntax region perlDATA start="^__END__$" skip="." end="." contains=perlPOD,@perlDATA fold + +" Vim excludes empty syn-region end lines from the fold region. This is +" probably a bug and means a DATA section ending with an empty line does not +" have that final line included in the fold. +" +" As a workaround we exploit an unterminated syntax region here with an end +" pattern that will (probably) never match. This forces all lines to be +" included in the fold region. Of course, if it does match then there's +" nothing to work around as it is a non-empty line. +" +" This problem also exists with empty string delimited heredocs but there's no +" known workaround for that case. +if get(g:, 'perl_fold', 0) + syntax region perlDATA matchgroup=perlDATAStart start="^__DATA__$" end="VIM_PERL_EOF\%$" contains=@perlDATA fold + syntax region perlEND matchgroup=perlENDStart start="^__END__$" end="VIM_PERL_EOF\%$" contains=@perlDATA fold else - syntax region perlDATA start="^__DATA__$" skip="." end="." contains=@perlDATA - syntax region perlDATA start="^__END__$" skip="." end="." contains=perlPOD,@perlDATA + syntax region perlDATA matchgroup=perlDATAStart start="^__DATA__$" end="\%$" contains=@perlDATA + syntax region perlEND matchgroup=perlENDStart start="^__END__$" end="\%$" contains=@perlDATA +endif + +" TODO: generalise this to allow other filetypes +if get(g:, 'perl_highlight_data', 0) + syn cluster perlDATA add=perlPOD +else + syn cluster perlDATA remove=perlPOD endif " " Folding - -if exists("perl_fold") +if get(g:, 'perl_fold', 0) " Note: this bit must come before the actual highlighting of the "package" " keyword, otherwise this will screw up Pod lines that match /^package/ - if !exists("perl_nofold_packages") + if !get(g:, 'perl_nofold_packages', 0) syn region perlPackageFold start="^package \S\+;\s*\%(#.*\)\=$" end="^1;\=\s*\%(#.*\)\=$" end="\n\+package"me=s-1 transparent fold keepend + syn region perlPackageFold start="^\z(\s*\)package\s*\S\+\s*{" end="^\z1}" transparent fold keepend endif - if !exists("perl_nofold_subs") + if !get(g:, 'perl_nofold_subs', 0) if get(g:, "perl_fold_anonymous_subs", 0) - syn region perlSubFold start="\<sub\>[^{]*{" end="}" transparent fold keepend extend - syn region perlSubFold start="\<\%(BEGIN\|END\|CHECK\|INIT\)\>\s*{" end="}" transparent fold keepend + " EXPLANATION: + " \<sub\> - "sub" keyword + " \_[^;{]* - any characters, including new line, but not ";" or "{", zero or more times + " \%(([\\$@%&*\[\];]*)\)\= - prototype definition, \$@%&*[]; characters between (), zero or 1 times + " \_[^;]* - any characters, including new line, but not ";" or "{", zero or more times + " { - start subroutine block + syn region perlSubFold start="\<sub\>\_[^;{]*\%(([\\$@%&*\[\];]*)\)\=\_[^;{]*{" end="}" transparent fold keepend extend else - syn region perlSubFold start="^\z(\s*\)\<sub\>.*[^};]$" end="^\z1}\s*\%(#.*\)\=$" transparent fold keepend - syn region perlSubFold start="^\z(\s*\)\<\%(BEGIN\|END\|CHECK\|INIT\|UNITCHECK\)\>.*[^};]$" end="^\z1}\s*$" transparent fold keepend + " EXPLANATION: + " same, as above, but first non-space character after "sub" keyword must + " be [A-Za-z_] + syn region perlSubFold start="\<sub\>\s*\h\_[^;{]*\%(([\\$@%&*\[\];]*)\)\=\_[^;]*{" end="}" transparent fold keepend extend endif + + syn region perlSubFold start="\<\%(BEGIN\|END\|CHECK\|INIT\|UNITCHECK\)\>\_s*{" end="}" transparent fold keepend endif - if exists("perl_fold_blocks") + if get(g:, 'perl_fold_blocks', 0) syn region perlBlockFold start="^\z(\s*\)\%(if\|elsif\|unless\|for\|while\|until\|given\)\s*(.*)\%(\s*{\)\=\s*\%(#.*\)\=$" start="^\z(\s*\)for\%(each\)\=\s*\%(\%(my\|our\)\=\s*\S\+\s*\)\=(.*)\%(\s*{\)\=\s*\%(#.*\)\=$" end="^\z1}\s*;\=\%(#.*\)\=$" transparent fold keepend + + " TODO this is works incorrectly syn region perlBlockFold start="^\z(\s*\)\%(do\|else\)\%(\s*{\)\=\s*\%(#.*\)\=$" end="^\z1}\s*while" end="^\z1}\s*;\=\%(#.*\)\=$" transparent fold keepend + else + if get(g:, 'perl_fold_do_blocks', 0) + syn region perlDoBlockDeclaration start="" end="{" contains=perlComment contained transparent + syn match perlOperator "\<do\>\_s*" nextgroup=perlDoBlockDeclaration + + syn region perlDoBlockFold start="\<do\>\_[^{]*{" end="}" transparent fold keepend extend + endif endif - setlocal foldmethod=syntax syn sync fromstart else " fromstart above seems to set minlines even if perl_fold is not set. @@ -438,29 +509,28 @@ endif " The default highlighting. hi def link perlSharpBang PreProc -hi def link perlControl PreProc -hi def link perlInclude Include -hi def link perlSpecial Special -hi def link perlString String +hi def link perlControl PreProc +hi def link perlInclude Include +hi def link perlSpecial Special +hi def link perlString String hi def link perlCharacter Character -hi def link perlNumber Number -hi def link perlFloat Float +hi def link perlNumber Number +hi def link perlFloat Float hi def link perlType Type hi def link perlIdentifier Identifier -hi def link perlLabel Label +hi def link perlLabel Label hi def link perlStatement Statement hi def link perlConditional Conditional -hi def link perlRepeat Repeat +hi def link perlRepeat Repeat hi def link perlOperator Operator hi def link perlFunction Keyword -hi def link perlSubName Function +hi def link perlSubName Function hi def link perlSubPrototype Type -hi def link perlSignature Type -hi def link perlSubAttributes PreProc -hi def link perlSubAttributesCont perlSubAttributes -hi def link perlComment Comment +hi def link perlSubSignature Type +hi def link perlSubAttribute PreProc +hi def link perlComment Comment hi def link perlTodo Todo -if exists("perl_string_as_statement") +if get(g:, 'perl_string_as_statement', 0) hi def link perlStringStartEnd perlStatement else hi def link perlStringStartEnd perlString @@ -470,21 +540,29 @@ hi def link perlList perlStatement hi def link perlMisc perlStatement hi def link perlVarPlain perlIdentifier hi def link perlVarPlain2 perlIdentifier -hi def link perlArrow perlIdentifier +hi def link perlArrow perlIdentifier hi def link perlFiledescRead perlIdentifier hi def link perlFiledescStatement perlIdentifier -hi def link perlVarSimpleMember perlIdentifier -hi def link perlVarSimpleMemberName perlString -hi def link perlVarNotInMatches perlIdentifier +hi def link perlVarSimpleMember perlIdentifier +hi def link perlVarSimpleMemberName perlString +hi def link perlVarNotInMatches perlIdentifier hi def link perlVarSlash perlIdentifier +hi def link perlQ perlString hi def link perlQQ perlString -hi def link perlHereDoc perlString +hi def link perlQW perlString +hi def link perlQR perlString +hi def link perlMatchModifiers perlMatchStartEnd +hi def link perlSubstitutionModifiers perlMatchStartEnd +hi def link perlTranslationModifiers perlMatchStartEnd +hi def link perlQRModifiers perlStringStartEnd +hi def link perlHereDoc perlString +hi def link perlIndentedHereDoc perlString hi def link perlStringUnexpanded perlString -hi def link perlSubstitutionSQ perlString -hi def link perlSubstitutionGQQ perlString -hi def link perlTranslationGQ perlString -hi def link perlMatch perlString -hi def link perlMatchStartEnd perlStatement +hi def link perlSubstitutionSQ perlString +hi def link perlSubstitutionGQQ perlString +hi def link perlTranslationGQ perlString +hi def link perlMatch perlString +hi def link perlMatchStartEnd perlStatement hi def link perlFormatName perlIdentifier hi def link perlFormatField perlString hi def link perlPackageDecl perlType @@ -493,44 +571,48 @@ hi def link perlPackageRef perlType hi def link perlStatementPackage perlStatement hi def link perlStatementStorage perlStatement hi def link perlStatementControl perlStatement -hi def link perlStatementScalar perlStatement -hi def link perlStatementRegexp perlStatement +hi def link perlStatementScalar perlStatement +hi def link perlStatementRegexp perlStatement hi def link perlStatementNumeric perlStatement -hi def link perlStatementList perlStatement -hi def link perlStatementHash perlStatement -hi def link perlStatementIOfunc perlStatement +hi def link perlStatementList perlStatement +hi def link perlStatementHash perlStatement +hi def link perlStatementIOfunc perlStatement hi def link perlStatementFiledesc perlStatement -hi def link perlStatementVector perlStatement -hi def link perlStatementFiles perlStatement -hi def link perlStatementFlow perlStatement +hi def link perlStatementVector perlStatement +hi def link perlStatementFiles perlStatement +hi def link perlStatementFlow perlStatement hi def link perlStatementInclude perlStatement -hi def link perlStatementProc perlStatement -hi def link perlStatementSocket perlStatement +hi def link perlStatementProc perlStatement +hi def link perlStatementSocket perlStatement hi def link perlStatementIPC perlStatement hi def link perlStatementNetwork perlStatement -hi def link perlStatementPword perlStatement -hi def link perlStatementTime perlStatement -hi def link perlStatementMisc perlStatement +hi def link perlStatementPword perlStatement +hi def link perlStatementTime perlStatement +hi def link perlStatementMisc perlStatement hi def link perlStatementIndirObj perlStatement hi def link perlFunctionName perlIdentifier -hi def link perlMethod perlIdentifier +hi def link perlMethod perlIdentifier hi def link perlPostDeref perlIdentifier hi def link perlFunctionPRef perlType + if !get(g:, 'perl_include_pod', 1) hi def link perlPOD perlComment endif hi def link perlShellCommand perlString hi def link perlSpecialAscii perlSpecial -hi def link perlSpecialDollar perlSpecial -hi def link perlSpecialString perlSpecial -hi def link perlSpecialStringU perlSpecial +hi def link perlSpecialDollar perlSpecial +hi def link perlSpecialString perlSpecial +hi def link perlSpecialStringU perlSpecial hi def link perlSpecialMatch perlSpecial +hi def link perlEND perlComment +hi def link perlENDStart perlEND hi def link perlDATA perlComment +hi def link perlDATAStart perlDATA " NOTE: Due to a bug in Vim (or more likely, a misunderstanding on my part), -" I had to remove the transparent property from the following regions -" in order to get them to highlight correctly. Feel free to remove -" these and reinstate the transparent property if you know how. +" I had to remove the transparent property from the following regions +" in order to get them to highlight correctly. Feel free to remove +" these and reinstate the transparent property if you know how. hi def link perlParensSQ perlString hi def link perlBracketsSQ perlString hi def link perlBracesSQ perlString @@ -546,23 +628,21 @@ hi def link perlSpecialStringU2 perlString " Possible errors hi def link perlNotEmptyLine Error hi def link perlElseIfError Error -hi def link perlSubPrototypeError Error -hi def link perlSubError Error " Syncing to speed up processing " -if !exists("perl_no_sync_on_sub") +if !get(g:, 'perl_no_sync_on_sub', 0) syn sync match perlSync grouphere NONE "^\s*\<package\s" syn sync match perlSync grouphere NONE "^\s*\<sub\>" syn sync match perlSync grouphere NONE "^}" endif -if !exists("perl_no_sync_on_global_var") +if !get(g:, 'perl_no_sync_on_global_var', 0) syn sync match perlSync grouphere NONE "^$\I[[:alnum:]_:]+\s*=\s*{" syn sync match perlSync grouphere NONE "^[@%]\I[[:alnum:]_:]+\s*=\s*(" endif -if exists("perl_sync_dist") +if get(g:, 'perl_sync_dist', 0) execute "syn sync maxlines=" . perl_sync_dist else syn sync maxlines=100 diff --git a/runtime/syntax/plsql.vim b/runtime/syntax/plsql.vim index 1868c9cb16..7b36c0a180 100644 --- a/runtime/syntax/plsql.vim +++ b/runtime/syntax/plsql.vim @@ -1,19 +1,43 @@ " Vim syntax file -" Language: Oracle Procedureal SQL (PL/SQL) -" Maintainer: Jeff Lanzarotta (jefflanzarotta at yahoo dot com) -" Original Maintainer: C. Laurence Gonsalves (clgonsal@kami.com) -" URL: http://lanzarotta.tripod.com/vim/syntax/plsql.vim.zip -" Last Change: September 18, 2002 -" History: Geoff Evans & Bill Pribyl (bill at plnet dot org) -" Added 9i keywords. -" Austin Ziegler (austin at halostatue dot ca) -" Added 8i+ features. +" Language: Oracle Procedural SQL (PL/SQL) +" Maintainer: Lee Lindley (lee dot lindley at gmail dot com) +" Previous Maintainer: Jeff Lanzarotta (jefflanzarotta at yahoo dot com) +" Previous Maintainer: C. Laurence Gonsalves (clgonsal@kami.com) +" URL: https://github.com/lee-lindley/vim_plsql_syntax +" Last Change: April 28, 2022 +" History Lee Lindley (lee dot lindley at gmail dot com) +" updated to 19c keywords. refined quoting. +" separated reserved, non-reserved keywords and functions +" revised folding, giving up on procedure folding due to issue +" with multiple ways to enter <begin>. +" Eugene Lysyonok (lysyonok at inbox ru) +" Added folding. +" Geoff Evans & Bill Pribyl (bill at plnet dot org) +" Added 9i keywords. +" Austin Ziegler (austin at halostatue dot ca) +" Added 8i+ features. " -" quit when a syntax file was already loaded +" To put SQL keywords as Function group in legacy style +" let plsql_legacy_sql_keywords = 1 +" +" To enable folding (It does setlocal foldmethod=syntax) +" let plsql_fold = 1 +" +" From my vimrc file -- turn syntax and syntax folding on, +" associate file suffixes as plsql, open all the folds on file open +" let plsql_fold = 1 +" au BufNewFile,BufRead *.sql,*.pls,*.tps,*.tpb,*.pks,*.pkb,*.pkg,*.trg set filetype=plsql +" au BufNewFile,BufRead *.sql,*.pls,*.tps,*.tpb,*.pks,*.pkb,*.pkg,*.trg syntax on +" au Syntax plsql normal zR + if exists("b:current_syntax") finish endif +" this file uses line continuations +let s:cpo_sav = &cpo +set cpo&vim + " Todo. syn keyword plsqlTodo TODO FIXME XXX DEBUG NOTE syn cluster plsqlCommentGroup contains=plsqlTodo @@ -25,110 +49,512 @@ syn match plsqlIdentifier "[a-z][a-z0-9$_#]*" syn match plsqlHostIdentifier ":[a-z][a-z0-9$_#]*" " When wanted, highlight the trailing whitespace. -if exists("c_space_errors") - if !exists("c_no_trail_space_error") +if exists("plsql_space_errors") + if !exists("plsql_no_trail_space_error") syn match plsqlSpaceError "\s\+$" endif - if !exists("c_no_tab_space_error") + if !exists("plsql_no_tab_space_error") syn match plsqlSpaceError " \+\t"me=e-1 endif endif " Symbols. -syn match plsqlSymbol "\(;\|,\|\.\)" - -" Operators. -syn match plsqlOperator "\(+\|-\|\*\|/\|=\|<\|>\|@\|\*\*\|!=\|\~=\)" -syn match plsqlOperator "\(^=\|<=\|>=\|:=\|=>\|\.\.\|||\|<<\|>>\|\"\)" - -" Some of Oracle's SQL keywords. -syn keyword plsqlSQLKeyword ABORT ACCESS ACCESSED ADD AFTER ALL ALTER AND ANY -syn keyword plsqlSQLKeyword AS ASC ATTRIBUTE AUDIT AUTHORIZATION AVG BASE_TABLE -syn keyword plsqlSQLKeyword BEFORE BETWEEN BY CASCADE CAST CHECK CLUSTER -syn keyword plsqlSQLKeyword CLUSTERS COLAUTH COLUMN COMMENT COMPRESS CONNECT -syn keyword plsqlSQLKeyword CONSTRAINT CRASH CREATE CURRENT DATA DATABASE -syn keyword plsqlSQLKeyword DATA_BASE DBA DEFAULT DELAY DELETE DESC DISTINCT -syn keyword plsqlSQLKeyword DROP DUAL ELSE EXCLUSIVE EXISTS EXTENDS EXTRACT -syn keyword plsqlSQLKeyword FILE FORCE FOREIGN FROM GRANT GROUP HAVING HEAP -syn keyword plsqlSQLKeyword IDENTIFIED IDENTIFIER IMMEDIATE IN INCLUDING -syn keyword plsqlSQLKeyword INCREMENT INDEX INDEXES INITIAL INSERT INSTEAD -syn keyword plsqlSQLKeyword INTERSECT INTO INVALIDATE IS ISOLATION KEY LIBRARY -syn keyword plsqlSQLKeyword LIKE LOCK MAXEXTENTS MINUS MODE MODIFY MULTISET -syn keyword plsqlSQLKeyword NESTED NOAUDIT NOCOMPRESS NOT NOWAIT OF OFF OFFLINE -syn keyword plsqlSQLKeyword ON ONLINE OPERATOR OPTION OR ORDER ORGANIZATION -syn keyword plsqlSQLKeyword PCTFREE PRIMARY PRIOR PRIVATE PRIVILEGES PUBLIC -syn keyword plsqlSQLKeyword QUOTA RELEASE RENAME REPLACE RESOURCE REVOKE ROLLBACK -syn keyword plsqlSQLKeyword ROW ROWLABEL ROWS SCHEMA SELECT SEPARATE SESSION SET -syn keyword plsqlSQLKeyword SHARE SIZE SPACE START STORE SUCCESSFUL SYNONYM -syn keyword plsqlSQLKeyword SYSDATE TABLE TABLES TABLESPACE TEMPORARY TO TREAT -syn keyword plsqlSQLKeyword TRIGGER TRUNCATE UID UNION UNIQUE UNLIMITED UPDATE -syn keyword plsqlSQLKeyword USE USER VALIDATE VALUES VIEW WHENEVER WHERE WITH - -" PL/SQL's own keywords. -syn keyword plsqlKeyword AGENT AND ANY ARRAY ASSIGN AS AT AUTHID BEGIN BODY BY -syn keyword plsqlKeyword BULK C CASE CHAR_BASE CHARSETFORM CHARSETID CLOSE -syn keyword plsqlKeyword COLLECT CONSTANT CONSTRUCTOR CONTEXT CURRVAL DECLARE -syn keyword plsqlKeyword DVOID EXCEPTION EXCEPTION_INIT EXECUTE EXIT FETCH -syn keyword plsqlKeyword FINAL FUNCTION GOTO HASH IMMEDIATE IN INDICATOR -syn keyword plsqlKeyword INSTANTIABLE IS JAVA LANGUAGE LIBRARY MAP MAXLEN -syn keyword plsqlKeyword MEMBER NAME NEW NOCOPY NUMBER_BASE OBJECT OCICOLL -syn keyword plsqlKeyword OCIDATE OCIDATETIME OCILOBLOCATOR OCINUMBER OCIRAW -syn keyword plsqlKeyword OCISTRING OF OPAQUE OPEN OR ORDER OTHERS OUT -syn keyword plsqlKeyword OVERRIDING PACKAGE PARALLEL_ENABLE PARAMETERS -syn keyword plsqlKeyword PARTITION PIPELINED PRAGMA PROCEDURE RAISE RANGE REF -syn keyword plsqlKeyword RESULT RETURN REVERSE ROWTYPE SB1 SELF SHORT SIZE_T -syn keyword plsqlKeyword SQL SQLCODE SQLERRM STATIC STRUCT SUBTYPE TDO THEN -syn keyword plsqlKeyword TABLE TIMEZONE_ABBR TIMEZONE_HOUR TIMEZONE_MINUTE -syn keyword plsqlKeyword TIMEZONE_REGION TYPE UNDER UNSIGNED USING VARIANCE -syn keyword plsqlKeyword VARRAY VARYING WHEN WRITE -syn match plsqlKeyword "\<END\>" -syn match plsqlKeyword "\.COUNT\>"hs=s+1 -syn match plsqlKeyword "\.EXISTS\>"hs=s+1 -syn match plsqlKeyword "\.FIRST\>"hs=s+1 -syn match plsqlKeyword "\.LAST\>"hs=s+1 -syn match plsqlKeyword "\.DELETE\>"hs=s+1 -syn match plsqlKeyword "\.PREV\>"hs=s+1 -syn match plsqlKeyword "\.NEXT\>"hs=s+1 - -" PL/SQL functions. -syn keyword plsqlFunction ABS ACOS ADD_MONTHS ASCII ASCIISTR ASIN ATAN ATAN2 -syn keyword plsqlFunction BFILENAME BITAND CEIL CHARTOROWID CHR COALESCE -syn keyword plsqlFunction COMMIT COMMIT_CM COMPOSE CONCAT CONVERT COS COSH -syn keyword plsqlFunction COUNT CUBE CURRENT_DATE CURRENT_TIME CURRENT_TIMESTAMP -syn keyword plsqlFunction DBTIMEZONE DECODE DECOMPOSE DEREF DUMP EMPTY_BLOB -syn keyword plsqlFunction EMPTY_CLOB EXISTS EXP FLOOR FROM_TZ GETBND GLB -syn keyword plsqlFunction GREATEST GREATEST_LB GROUPING HEXTORAW INITCAP -syn keyword plsqlFunction INSTR INSTR2 INSTR4 INSTRB INSTRC ISNCHAR LAST_DAY -syn keyword plsqlFunction LEAST LEAST_UB LENGTH LENGTH2 LENGTH4 LENGTHB LENGTHC -syn keyword plsqlFunction LN LOCALTIME LOCALTIMESTAMP LOG LOWER LPAD -syn keyword plsqlFunction LTRIM LUB MAKE_REF MAX MIN MOD MONTHS_BETWEEN -syn keyword plsqlFunction NCHARTOROWID NCHR NEW_TIME NEXT_DAY NHEXTORAW -syn keyword plsqlFunction NLS_CHARSET_DECL_LEN NLS_CHARSET_ID NLS_CHARSET_NAME -syn keyword plsqlFunction NLS_INITCAP NLS_LOWER NLSSORT NLS_UPPER NULLFN NULLIF -syn keyword plsqlFunction NUMTODSINTERVAL NUMTOYMINTERVAL NVL POWER -syn keyword plsqlFunction RAISE_APPLICATION_ERROR RAWTOHEX RAWTONHEX REF -syn keyword plsqlFunction REFTOHEX REPLACE ROLLBACK_NR ROLLBACK_SV ROLLUP ROUND -syn keyword plsqlFunction ROWIDTOCHAR ROWIDTONCHAR ROWLABEL RPAD RTRIM -syn keyword plsqlFunction SAVEPOINT SESSIONTIMEZONE SETBND SET_TRANSACTION_USE -syn keyword plsqlFunction SIGN SIN SINH SOUNDEX SQLCODE SQLERRM SQRT STDDEV -syn keyword plsqlFunction SUBSTR SUBSTR2 SUBSTR4 SUBSTRB SUBSTRC SUM -syn keyword plsqlFunction SYS_AT_TIME_ZONE SYS_CONTEXT SYSDATE SYS_EXTRACT_UTC -syn keyword plsqlFunction SYS_GUID SYS_LITERALTODATE SYS_LITERALTODSINTERVAL -syn keyword plsqlFunction SYS_LITERALTOTIME SYS_LITERALTOTIMESTAMP -syn keyword plsqlFunction SYS_LITERALTOTZTIME SYS_LITERALTOTZTIMESTAMP -syn keyword plsqlFunction SYS_LITERALTOYMINTERVAL SYS_OVER__DD SYS_OVER__DI -syn keyword plsqlFunction SYS_OVER__ID SYS_OVER_IID SYS_OVER_IIT -syn keyword plsqlFunction SYS_OVER__IT SYS_OVER__TI SYS_OVER__TT -syn keyword plsqlFunction SYSTIMESTAMP TAN TANH TO_ANYLOB TO_BLOB TO_CHAR -syn keyword plsqlFunction TO_CLOB TO_DATE TO_DSINTERVAL TO_LABEL TO_MULTI_BYTE -syn keyword plsqlFunction TO_NCHAR TO_NCLOB TO_NUMBER TO_RAW TO_SINGLE_BYTE -syn keyword plsqlFunction TO_TIME TO_TIMESTAMP TO_TIMESTAMP_TZ TO_TIME_TZ -syn keyword plsqlFunction TO_YMINTERVAL TRANSLATE TREAT TRIM TRUNC TZ_OFFSET UID -syn keyword plsqlFunction UNISTR UPPER UROWID USER USERENV VALUE VARIANCE -syn keyword plsqlFunction VSIZE WORK XOR +syn match plsqlSymbol "[;,.()]" + +" Operators. and words that would be something else if not in operator mode +syn match plsqlOperator "[-+*/=<>@"]" +syn match plsqlOperator "\(\^=\|<=\|>=\|:=\|=>\|\.\.\|||\|<<\|>>\|\*\*\|!=\|\~=\)" +syn match plsqlOperator "\<\(NOT\|AND\|OR\|LIKE\|BETWEEN\|IN\)\>" +syn match plsqlBooleanLiteral "\<NULL\>" +syn match plsqlOperator "\<IS\\_s\+\(NOT\_s\+\)\?NULL\>" +" +" conditional compilation Preprocessor directives and sqlplus define sigil +syn match plsqlPseudo "$[$a-z][a-z0-9$_#]*" +syn match plsqlPseudo "&" + +syn match plsqlReserved "\<\(CREATE\|THEN\|UPDATE\|INSERT\|SET\)\>" +syn match plsqlKeyword "\<\(REPLACE\|PACKAGE\|FUNCTION\|PROCEDURE\|TYPE|BODY\|WHEN\|MATCHED\)\>" +syn region plsqlUpdate + \ matchgroup=plsqlReserved + \ start="\<UPDATE\>" + \ end="\<SET\>" + \ contains=@plsqlIdentifiers +syn match plsqlReserved "\<WHEN\_s\+\(NOT\_s\+\)\?MATCHED\_s\+THEN\_s\+\(UPDATE\|INSERT\)\(\_s\+SET\)\?" + +" +" Oracle's non-reserved keywords +syn keyword plsqlKeyword ABORT ABS ABSENT ACCESS ACCESSED ACCOUNT ACL ACOS ACROSS ACTION ACTIONS +syn keyword plsqlKeyword ACTIVATE ACTIVE ACTIVE_COMPONENT ACTIVE_DATA ACTIVE_FUNCTION ACTIVE_TAG ACTIVITY +syn keyword plsqlKeyword ADAPTIVE_PLAN ADD ADD_COLUMN ADD_GROUP ADD_MONTHS ADG_REDIRECT_DML ADG_REDIRECT_PLSQL +syn keyword plsqlKeyword ADJ_DATE ADMIN ADMINISTER ADMINISTRATOR ADVANCED ADVISE ADVISOR AFD_DISKSTRING +syn keyword plsqlKeyword AFFINITY AFTER AGGREGATE AGGREGATES ALGORITHM ALIAS ALLOCATE ALLOW ALL_ROWS +syn keyword plsqlKeyword ALTERNATE ALWAYS ANALYTIC ANALYTIC_VIEW_SQL ANALYZE ANCESTOR ANCILLARY AND_EQUAL +syn keyword plsqlKeyword ANOMALY ANSI_REARCH ANSWER_QUERY_USING_STATS ANTIJOIN ANYSCHEMA ANY_VALUE +syn keyword plsqlKeyword APPEND APPENDCHILDXML APPEND_VALUES APPLICATION APPLY APPROX_COUNT APPROX_COUNT_DISTINCT +syn keyword plsqlKeyword APPROX_COUNT_DISTINCT_AGG APPROX_COUNT_DISTINCT_DETAIL APPROX_MEDIAN APPROX_PERCENTILE +syn keyword plsqlKeyword APPROX_PERCENTILE_AGG APPROX_PERCENTILE_DETAIL APPROX_RANK APPROX_SUM ARCHIVAL +syn keyword plsqlKeyword ARCHIVE ARCHIVED ARCHIVELOG ARRAY ARRAYS ASCII ASCIISTR ASIN ASIS ASSEMBLY +syn keyword plsqlKeyword ASSIGN ASSOCIATE ASYNC ASYNCHRONOUS AS_JSON AT ATAN ATAN2 ATTRIBUTE ATTRIBUTES +syn keyword plsqlKeyword AUDIT AUTHENTICATED AUTHENTICATION AUTHID AUTHORIZATION AUTO AUTOALLOCATE +syn keyword plsqlKeyword AUTOEXTEND AUTOMATIC AUTO_LOGIN AUTO_REOPTIMIZE AVAILABILITY AVCACHE_OP AVERAGE_RANK +syn keyword plsqlKeyword AVG AVMDX_OP AVRO AV_AGGREGATE AV_CACHE AW BACKGROUND BACKINGFILE BACKUP BAND_JOIN +syn keyword plsqlKeyword BASIC BASICFILE BATCH BATCHSIZE BATCH_TABLE_ACCESS_BY_ROWID BECOME BEFORE +syn keyword plsqlKeyword BEGINNING BEGIN_OUTLINE_DATA BEHALF BEQUEATH BFILENAME BIGFILE BINARY +syn keyword plsqlKeyword BINARY_DOUBLE_INFINITY BINARY_DOUBLE_NAN BINARY_FLOAT_INFINITY BINARY_FLOAT_NAN +syn keyword plsqlKeyword BINDING BIND_AWARE BIN_TO_NUM BITAND BITMAP BITMAPS BITMAP_AND BITMAP_BIT_POSITION +syn keyword plsqlKeyword BITMAP_BUCKET_NUMBER BITMAP_CONSTRUCT_AGG BITMAP_COUNT BITMAP_OR_AGG BITMAP_TREE +syn keyword plsqlKeyword BITOR BITS BITXOR BIT_AND_AGG BIT_OR_AGG BIT_XOR_AGG BLOCK BLOCKCHAIN BLOCKING +syn keyword plsqlKeyword BLOCKS BLOCKSIZE BLOCK_RANGE BOOL BOOTSTRAP BOTH BOUND BRANCH BREADTH +syn keyword plsqlKeyword BROADCAST BSON BUFFER BUFFER_CACHE BUFFER_POOL BUILD BULK BUSHY_JOIN BYPASS_RECURSIVE_CHECK +syn keyword plsqlKeyword BYPASS_UJVC CACHE CACHE_CB CACHE_INSTANCES CACHE_TEMP_TABLE CACHING CALCULATED +syn keyword plsqlKeyword CALL CALLBACK CANCEL CAPACITY CAPTION CAPTURE CARDINALITY CASCADE CAST +syn keyword plsqlKeyword CATALOG_DBLINK CATEGORY CDB$DEFAULT CDB_HTTP_HANDLER CEIL CELLMEMORY CELL_FLASH_CACHE +syn keyword plsqlKeyword CERTIFICATE CFILE CHAINED CHANGE CHANGE_DUPKEY_ERROR_INDEX CHARTOROWID CHAR_CS +syn keyword plsqlKeyword CHECKPOINT CHECKSUM CHECK_ACL_REWRITE CHILD CHOOSE CHR CHUNK CLASS CLASSIFICATION +syn keyword plsqlKeyword CLASSIFIER CLAUSE CLEAN CLEANUP CLEAR CLIENT CLONE CLOSE CLOSEST CLOSE_CACHED_OPEN_CURSORS +syn keyword plsqlKeyword CLOUD_IDENTITY CLUSTERING CLUSTERING_FACTOR CLUSTERS CLUSTER_BY_ROWID CLUSTER_DETAILS +syn keyword plsqlKeyword CLUSTER_DISTANCE CLUSTER_ID CLUSTER_PROBABILITY CLUSTER_SET COALESCE COALESCE_SQ +syn keyword plsqlKeyword COARSE COLAUTH COLD COLLATE COLLATION COLLECT COLUMN COLUMNAR COLUMNS COLUMN_AUTHORIZATION_INDICATOR +syn keyword plsqlKeyword COLUMN_AUTH_INDICATOR COLUMN_STATS COLUMN_VALUE COMMENT COMMIT COMMITTED COMMON +syn keyword plsqlKeyword COMMON_DATA_MAP COMPACT COMPATIBILITY COMPILE COMPLETE COMPLIANCE COMPONENT +syn keyword plsqlKeyword COMPONENTS COMPOSE COMPOSITE COMPOSITE_LIMIT COMPOUND COMPUTATION COMPUTE +syn keyword plsqlKeyword CONCAT CONDITION CONDITIONAL CONFIRM CONFORMING CONNECT_BY_CB_WHR_ONLY CONNECT_BY_COMBINE_SW +syn keyword plsqlKeyword CONNECT_BY_COST_BASED CONNECT_BY_ELIM_DUPS CONNECT_BY_FILTERING CONNECT_BY_ISCYCLE +syn keyword plsqlKeyword CONNECT_BY_ISLEAF CONNECT_BY_ROOT CONNECT_TIME CONSENSUS CONSIDER CONSISTENT +syn keyword plsqlKeyword CONST CONSTANT CONSTRAINT CONSTRAINTS CONTAINER CONTAINERS CONTAINERS_DEFAULT +syn keyword plsqlKeyword CONTAINER_DATA CONTAINER_DATA_ADMIT_NULL CONTAINER_MAP CONTAINER_MAP_OBJECT +syn keyword plsqlKeyword CONTENT CONTENTS CONTEXT CONTINUE CONTROLFILE CONVERSION CONVERT CON_DBID_TO_ID +syn keyword plsqlKeyword CON_GUID_TO_ID CON_ID CON_ID_FILTER CON_ID_TO_CON_NAME CON_ID_TO_DBID CON_ID_TO_GUID +syn keyword plsqlKeyword CON_ID_TO_UID CON_NAME_TO_ID CON_UID_TO_ID COOKIE COPY CORR CORRUPTION CORRUPT_XID +syn keyword plsqlKeyword CORRUPT_XID_ALL CORR_K CORR_S COS COSH COST COST_XML_QUERY_REWRITE COVAR_POP +syn match plsqlKeyword "\<COUNT\>" +syn keyword plsqlKeyword COVAR_SAMP CO_AUTH_IND CPU_COSTING CPU_COUNT CPU_PER_CALL CPU_PER_SESSION +syn keyword plsqlKeyword CPU_TIME CRASH CREATE_FILE_DEST CREATE_STORED_OUTLINES CREATION CREDENTIAL +syn keyword plsqlKeyword CREDENTIALS CRITICAL CROSS CROSSEDITION CSCONVERT CUBE CUBE_AJ CUBE_GB CUBE_SJ +syn keyword plsqlKeyword CUME_DIST CUME_DISTM CURRENT CURRENTV CURRENT_DATE CURRENT_INSTANCE CURRENT_PARTSET_KEY +syn keyword plsqlKeyword CURRENT_SCHEMA CURRENT_SHARD_KEY CURRENT_TIME CURRENT_TIMESTAMP CURRENT_USER +syn keyword plsqlKeyword CURSOR CURSOR_SHARING_EXACT CURSOR_SPECIFIC_SEGMENT CV CYCLE DAGG_OPTIM_GSETS +syn keyword plsqlKeyword DANGLING DATA DATABASE DATABASES DATAFILE DATAFILES DATAMOVEMENT DATAOBJNO +syn keyword plsqlKeyword DATAOBJ_TO_MAT_PARTITION DATAOBJ_TO_PARTITION DATAPUMP DATASTORE DATA_LINK_DML +syn keyword plsqlKeyword DATA_SECURITY_REWRITE_LIMIT DATA_VALIDATE DATE_MODE DAYS DBA DBA_RECYCLEBIN +syn keyword plsqlKeyword DBMS_STATS DBSTR2UTF8 DBTIMEZONE DB_ROLE_CHANGE DB_UNIQUE_NAME DB_VERSION +syn keyword plsqlKeyword DDL DEALLOCATE DEBUG DEBUGGER DECLARE DECODE DECOMPOSE DECOMPRESS DECORRELATE +syn keyword plsqlKeyword DECR DECREMENT DECRYPT DEDUPLICATE DEFAULTS DEFAULT_COLLATION DEFAULT_PDB_HINT +syn keyword plsqlKeyword DEFERRABLE DEFERRED DEFINE DEFINED DEFINER DEFINITION DEGREE DELAY DELEGATE +syn keyword plsqlKeyword DELETEXML DELETE_ALL DEMAND DENORM_AV DENSE_RANK DENSE_RANKM DEPENDENT DEPTH +syn keyword plsqlKeyword DEQUEUE DEREF DEREF_NO_REWRITE DESCENDANT DESCRIPTION DESTROY DETACHED DETERMINED +syn keyword plsqlKeyword DETERMINES DETERMINISTIC DG_GATHER_STATS DIAGNOSTICS DICTIONARY DIGEST DIMENSION +syn keyword plsqlKeyword DIMENSIONS DIRECT DIRECTORY DIRECT_LOAD DIRECT_PATH DISABLE DISABLE_ALL DISABLE_CONTAINERS_DEFAULT +syn keyword plsqlKeyword DISABLE_CONTAINER_MAP DISABLE_PARALLEL_DML DISABLE_PRESET DISABLE_RPKE DISALLOW +syn keyword plsqlKeyword DISASSOCIATE DISCARD DISCONNECT DISK DISKGROUP DISKS DISMOUNT DISTINGUISHED +syn keyword plsqlKeyword DISTRIBUTE DISTRIBUTED DIST_AGG_PROLLUP_PUSHDOWN DML DML_UPDATE DOCFIDELITY +syn keyword plsqlKeyword DOCUMENT DOMAIN_INDEX_FILTER DOMAIN_INDEX_NO_SORT DOMAIN_INDEX_SORT DOWNGRADE +syn keyword plsqlKeyword DRAIN_TIMEOUT DRIVING_SITE DROP_COLUMN DROP_GROUP DST_UPGRADE_INSERT_CONV +syn keyword plsqlKeyword DUMP DUPLICATE DUPLICATED DV DYNAMIC DYNAMIC_SAMPLING DYNAMIC_SAMPLING_EST_CDN +syn keyword plsqlKeyword EACH EDITION EDITIONABLE EDITIONING EDITIONS ELAPSED_TIME ELEMENT ELIMINATE_JOIN +syn keyword plsqlKeyword ELIMINATE_OBY ELIMINATE_OUTER_JOIN ELIMINATE_SQ ELIM_GROUPBY EM EMPTY EMPTY_BLOB +syn keyword plsqlKeyword EMPTY_CLOB ENABLE ENABLE_ALL ENABLE_PARALLEL_DML ENABLE_PRESET ENCODE ENCODING +syn keyword plsqlKeyword ENCRYPT ENCRYPTION +syn keyword plsqlKeyword END_OUTLINE_DATA ENFORCE ENFORCED ENQUEUE ENTERPRISE +syn keyword plsqlKeyword ENTITYESCAPING ENTRY EQUIPART EQUIVALENT ERROR ERRORS ERROR_ARGUMENT ERROR_ON_OVERLAP_TIME +syn keyword plsqlKeyword ESCAPE ESTIMATE EVAL EVALNAME EVALUATE EVALUATION EVEN EVENTS EVERY EXCEPTION +syn keyword plsqlKeyword EXCEPTIONS EXCHANGE EXCLUDE EXCLUDING EXECUTE EXEMPT EXISTING EXISTSNODE EXP +syn keyword plsqlKeyword EXPAND EXPAND_GSET_TO_UNION EXPAND_TABLE EXPIRE EXPLAIN EXPLOSION EXPORT EXPRESS +syn keyword plsqlKeyword EXPR_CORR_CHECK EXTEND EXTENDED EXTENDS EXTENT EXTENTS EXTERNAL EXTERNALLY +syn keyword plsqlKeyword EXTRA EXTRACT EXTRACTCLOBXML EXTRACTVALUE FACILITY FACT FACTOR FACTORIZE_JOIN +syn keyword plsqlKeyword FAILED FAILED_LOGIN_ATTEMPTS FAILGROUP FAILOVER FAILURE FAMILY FAR FAST +syn keyword plsqlKeyword FBTSCAN FEATURE FEATURE_COMPARE FEATURE_DETAILS FEATURE_ID FEATURE_SET FEATURE_VALUE +syn keyword plsqlKeyword FEDERATION FETCH FILE FILEGROUP FILESTORE FILESYSTEM_LIKE_LOGGING FILE_NAME_CONVERT +syn keyword plsqlKeyword FILTER FINAL FINE FINISH FIRSTM FIRST_ROWS FIRST_VALUE FIXED_VIEW_DATA +syn match plsqlKeyword "\<FIRST\>" +syn keyword plsqlKeyword FLAGGER FLASHBACK FLASH_CACHE FLEX FLOB FLOOR FLUSH FOLDER FOLLOWING FOLLOWS +syn keyword plsqlKeyword FORCE FORCE_JSON_TABLE_TRANSFORM FORCE_SPATIAL FORCE_XML_QUERY_REWRITE FOREIGN +syn keyword plsqlKeyword FOREVER FORMAT FORWARD FRAGMENT_NUMBER FREE FREELIST FREELISTS FREEPOOLS FRESH +syn keyword plsqlKeyword FRESH_MV FROM_TZ FTP FULL FULL_OUTER_JOIN_TO_OUTER FUNCTIONS GATHER_OPTIMIZER_STATISTICS +syn keyword plsqlKeyword GATHER_PLAN_STATISTICS GBY_CONC_ROLLUP GBY_PUSHDOWN GENERATED GET GLOBAL GLOBALLY +syn keyword plsqlKeyword GLOBAL_NAME GLOBAL_TOPIC_ENABLED GOLDENGATE GOTO GRANTED GRANULAR GREATEST +syn keyword plsqlKeyword GROUPING GROUPING_ID GROUPS GROUP_BY GROUP_ID GUARANTEE GUARANTEED GUARD H +syn keyword plsqlKeyword HALF_YEARS HASH HASHING HASHKEYS HASHSET_BUILD HASH_AJ HASH_SJ HEADER HEAP +syn keyword plsqlKeyword HELP HEXTORAW HEXTOREF HIDDEN HIDE HIERARCHICAL HIERARCHIES HIERARCHY HIER_ANCESTOR +syn keyword plsqlKeyword HIER_CAPTION HIER_CHILDREN HIER_CHILD_COUNT HIER_COLUMN HIER_CONDITION HIER_DEPTH +syn keyword plsqlKeyword HIER_DESCRIPTION HIER_HAS_CHILDREN HIER_LAG HIER_LEAD HIER_LEVEL HIER_MEMBER_NAME +syn keyword plsqlKeyword HIER_MEMBER_UNIQUE_NAME HIER_ORDER HIER_PARENT HIER_WINDOW HIGH HINTSET_BEGIN +syn keyword plsqlKeyword HINTSET_END HOST HOT HOUR HOURS HTTP HWM_BROKERED HYBRID ID IDENTIFIER IDENTITY +syn keyword plsqlKeyword IDGENERATORS IDLE IDLE_TIME IGNORE IGNORE_OPTIM_EMBEDDED_HINTS IGNORE_ROW_ON_DUPKEY_INDEX +syn keyword plsqlKeyword IGNORE_WHERE_CLAUSE ILM IMMEDIATE IMMUTABLE IMPACT IMPORT INACTIVE INACTIVE_ACCOUNT_TIME +syn keyword plsqlKeyword INCLUDE INCLUDES INCLUDE_VERSION INCLUDING INCOMING INCR INCREMENT INCREMENTAL +syn keyword plsqlKeyword INDENT INDEXED INDEXES INDEXING INDEXTYPE INDEXTYPES INDEX_ASC INDEX_COMBINE +syn keyword plsqlKeyword INDEX_DESC INDEX_FFS INDEX_FILTER INDEX_JOIN INDEX_ROWS INDEX_RRS INDEX_RS +syn keyword plsqlKeyword INDEX_RS_ASC INDEX_RS_DESC INDEX_SCAN INDEX_SKIP_SCAN INDEX_SS INDEX_SS_ASC +syn keyword plsqlKeyword INDEX_SS_DESC INDEX_STATS INDICATOR INFINITE INFORMATIONAL INHERIT INITCAP +syn keyword plsqlKeyword INITIAL INITIALIZED INITIALLY INITRANS INLINE INLINE_XMLTYPE_NT INLINE_XT +syn keyword plsqlKeyword INMEMORY INMEMORY_PRUNING INNER INPLACE INSENSITIVE INSERTCHILDXML INSERTCHILDXMLAFTER +syn keyword plsqlKeyword INSERTCHILDXMLBEFORE INSERTXMLAFTER INSERTXMLBEFORE INSTALL INSTANCE INSTANCES +syn keyword plsqlKeyword INSTANTIABLE INSTANTLY INSTEAD INSTR INSTR2 INSTR4 INSTRB INSTRC INTERLEAVED +syn keyword plsqlKeyword INTERMEDIATE INTERNAL_CONVERT INTERNAL_USE INTERPRETED INTRA_CDB INVALIDATE +syn keyword plsqlKeyword INVALIDATION INVISIBLE IN_MEMORY_METADATA IN_XQUERY IOSEEKTIM IOTFRSPEED IO_LOGICAL +syn keyword plsqlKeyword IO_MEGABYTES IO_REQUESTS ISOLATE ISOLATION ISOLATION_LEVEL ITERATE ITERATION_NUMBER +syn keyword plsqlKeyword JAVA JOB JOIN JSON JSONGET JSONPARSE JSONTOXML JSON_ARRAY JSON_ARRAYAGG JSON_EQUAL +syn keyword plsqlKeyword JSON_EQUAL2 JSON_EXISTS JSON_EXISTS2 JSON_HASH JSON_LENGTH JSON_MERGEPATCH +syn keyword plsqlKeyword JSON_MKMVI JSON_OBJECT JSON_OBJECTAGG JSON_PATCH JSON_QUERY JSON_SCALAR JSON_SERIALIZE +syn keyword plsqlKeyword JSON_TABLE JSON_TEXTCONTAINS JSON_TEXTCONTAINS2 JSON_TRANSFORM JSON_VALUE +syn keyword plsqlKeyword KEEP KEEP_DUPLICATES KERBEROS KEY KEYS KEYSIZE KEYSTORE KEY_LENGTH KILL +syn keyword plsqlKeyword KURTOSIS_POP KURTOSIS_SAMP LABEL LAG LAG_DIFF LAG_DIFF_PERCENT LANGUAGE +syn match plsqlKeyword "\<LAST\>" +syn keyword plsqlKeyword LAST_DAY LAST_VALUE LATERAL LAX LAYER LDAP_REGISTRATION LDAP_REGISTRATION_ENABLED +syn keyword plsqlKeyword LDAP_REG_SYNC_INTERVAL LEAD LEADING LEAD_CDB LEAD_CDB_URI LEAD_DIFF LEAD_DIFF_PERCENT +syn keyword plsqlKeyword LEAF LEAST LEAVES LEDGER LEFT LENGTH LENGTH2 LENGTH4 LENGTHB LENGTHC LESS +syn keyword plsqlKeyword LEVEL LEVELS LIBRARY LIFE LIFECYCLE LIFETIME LIKE2 LIKE4 LIKEC LIMIT LINEAR +syn keyword plsqlKeyword LINK LIST LISTAGG LN LNNVL LOAD LOB LOBNVL LOBS LOB_VALUE LOCALTIME LOCALTIMESTAMP +syn keyword plsqlKeyword LOCAL_INDEXES LOCATION LOCATOR LOCKDOWN LOCKED LOCKING LOG LOGFILE LOGFILES +syn keyword plsqlKeyword LOGGING LOGICAL LOGICAL_READS_PER_CALL LOGICAL_READS_PER_SESSION LOGMINING +syn keyword plsqlKeyword LOGOFF LOGON LOG_READ_ONLY_VIOLATIONS LOST LOW LOWER LPAD LTRIM MAIN MAKE_REF +syn keyword plsqlKeyword MANAGE MANAGED MANAGEMENT MANAGER MANDATORY MANUAL MAP MAPPER MAPPING MASTER +syn keyword plsqlKeyword MATCH MATCHES MATCH_NUMBER MATCH_RECOGNIZE MATERIALIZE MATERIALIZED +syn keyword plsqlKeyword MATRIX MAX MAXARCHLOGS MAXDATAFILES MAXEXTENTS MAXIMIZE MAXINSTANCES MAXLOGFILES +syn keyword plsqlKeyword MAXLOGHISTORY MAXLOGMEMBERS MAXSIZE MAXTRANS MAXVALUE MAX_AUDIT_SIZE MAX_DIAG_SIZE +syn keyword plsqlKeyword MAX_PDB_SNAPSHOTS MAX_SHARED_TEMP_SIZE MBRC MEASURE MEASURES MEDIAN MEDIUM +syn keyword plsqlKeyword MEMBER MEMCOMPRESS MEMOPTIMIZE MEMOPTIMIZE_WRITE MEMORY MERGE MERGE$ACTIONS +syn keyword plsqlKeyword MERGE_AJ MERGE_CONST_ON MERGE_SJ METADATA METADATA_SOURCE_PDB METHOD MIGRATE +syn keyword plsqlKeyword MIGRATE_CROSS_CON MIGRATION MIN MINEXTENTS MINIMIZE MINIMUM MINING MINUS_NULL +syn keyword plsqlKeyword MINUTE MINUTES MINVALUE MIRROR MIRRORCOLD MIRRORHOT MISMATCH MISSING MLE MLSLABEL +syn keyword plsqlKeyword MOD MODEL MODEL_COMPILE_SUBQUERY MODEL_DONTVERIFY_UNIQUENESS MODEL_DYNAMIC_SUBQUERY +syn keyword plsqlKeyword MODEL_MIN_ANALYSIS MODEL_NB MODEL_NO_ANALYSIS MODEL_PBY MODEL_PUSH_REF MODEL_SV +syn keyword plsqlKeyword MODIFICATION MODIFY MODIFY_COLUMN_TYPE MODULE MONITOR MONITORING MONTHS MONTHS_BETWEEN +syn keyword plsqlKeyword MOUNT MOUNTPATH MOUNTPOINT MOVE MOVEMENT MULTIDIMENSIONAL MULTISET MULTIVALUE +syn keyword plsqlKeyword MV_MERGE NAME NAMED NAMES NAMESPACE NAN NANVL NATIVE NATIVE_FULL_OUTER_JOIN +syn keyword plsqlKeyword NATURAL NAV NCHAR_CS NCHR NEEDED NEG NESTED NESTED_ROLLUP_TOP NESTED_TABLE_FAST_INSERT +syn keyword plsqlKeyword NESTED_TABLE_GET_REFS NESTED_TABLE_ID NESTED_TABLE_SET_REFS NESTED_TABLE_SET_SETID +syn keyword plsqlKeyword NETWORK NEVER NEW NEW_TIME NEXT_DAY NLJ_BATCHING NLJ_INDEX_FILTER NLJ_INDEX_SCAN +syn match plsqlKeyword "\<NEXT\>" +syn keyword plsqlKeyword NLJ_PREFETCH NLSSORT NLS_CALENDAR NLS_CHARACTERSET NLS_CHARSET_DECL_LEN NLS_CHARSET_ID +syn keyword plsqlKeyword NLS_CHARSET_NAME NLS_COLLATION_ID NLS_COLLATION_NAME NLS_COMP NLS_CURRENCY +syn keyword plsqlKeyword NLS_DATE_FORMAT NLS_DATE_LANGUAGE NLS_INITCAP NLS_ISO_CURRENCY NLS_LANG NLS_LANGUAGE +syn keyword plsqlKeyword NLS_LENGTH_SEMANTICS NLS_LOWER NLS_NCHAR_CONV_EXCP NLS_NUMERIC_CHARACTERS +syn keyword plsqlKeyword NLS_SORT NLS_SPECIAL_CHARS NLS_TERRITORY NLS_UPPER NL_AJ NL_SJ NO NOAPPEND +syn keyword plsqlKeyword NOARCHIVELOG NOAUDIT NOCACHE NOCOPY NOCPU_COSTING NOCYCLE NODELAY NOENTITYESCAPING +syn keyword plsqlKeyword NOEXTEND NOFORCE NOGUARANTEE NOKEEP NOLOCAL NOLOGGING NOMAPPING NOMAXVALUE +syn keyword plsqlKeyword NOMINIMIZE NOMINVALUE NOMONITORING NONBLOCKING NONE NONEDITIONABLE NONPARTITIONED +syn keyword plsqlKeyword NONSCHEMA NOORDER NOOVERRIDE NOPARALLEL NOPARALLEL_INDEX NORELOCATE NORELY +syn keyword plsqlKeyword NOREPAIR NOREPLAY NORESETLOGS NOREVERSE NOREWRITE NORMAL NOROWDEPENDENCIES +syn keyword plsqlKeyword NOSCALE NOSCHEMACHECK NOSEGMENT NOSHARD NOSORT NOSTRICT NOSWITCH NOTHING NOTIFICATION +syn keyword plsqlKeyword NOVALIDATE NOW NO_ACCESS NO_ADAPTIVE_PLAN NO_ANSI_REARCH NO_ANSWER_QUERY_USING_STATS +syn keyword plsqlKeyword NO_AUTO_REOPTIMIZE NO_BAND_JOIN NO_BASETABLE_MULTIMV_REWRITE NO_BATCH_TABLE_ACCESS_BY_ROWID +syn keyword plsqlKeyword NO_BIND_AWARE NO_BUFFER NO_BUSHY_JOIN NO_CARTESIAN NO_CHECK_ACL_REWRITE NO_CLUSTERING +syn keyword plsqlKeyword NO_CLUSTER_BY_ROWID NO_COALESCE_SQ NO_COMMON_DATA NO_CONNECT_BY_CB_WHR_ONLY +syn keyword plsqlKeyword NO_CONNECT_BY_COMBINE_SW NO_CONNECT_BY_COST_BASED NO_CONNECT_BY_ELIM_DUPS +syn keyword plsqlKeyword NO_CONNECT_BY_FILTERING NO_CONTAINERS NO_COST_XML_QUERY_REWRITE NO_CPU_COSTING +syn keyword plsqlKeyword NO_CROSS_CONTAINER NO_DAGG_OPTIM_GSETS NO_DATA_SECURITY_REWRITE NO_DECORRELATE +syn keyword plsqlKeyword NO_DIST_AGG_PROLLUP_PUSHDOWN NO_DOMAIN_INDEX_FILTER NO_DST_UPGRADE_INSERT_CONV +syn keyword plsqlKeyword NO_ELIMINATE_JOIN NO_ELIMINATE_OBY NO_ELIMINATE_OUTER_JOIN NO_ELIMINATE_SQ +syn keyword plsqlKeyword NO_ELIM_GROUPBY NO_EXPAND NO_EXPAND_GSET_TO_UNION NO_EXPAND_TABLE NO_FACT +syn keyword plsqlKeyword NO_FACTORIZE_JOIN NO_FILTERING NO_FULL_OUTER_JOIN_TO_OUTER NO_GATHER_OPTIMIZER_STATISTICS +syn keyword plsqlKeyword NO_GBY_PUSHDOWN NO_INDEX NO_INDEX_FFS NO_INDEX_SS NO_INMEMORY NO_INMEMORY_PRUNING +syn keyword plsqlKeyword NO_JSON_TABLE_TRANSFORM NO_LOAD NO_MERGE NO_MODEL_PUSH_REF NO_MONITOR NO_MONITORING +syn keyword plsqlKeyword NO_MULTIMV_REWRITE NO_NATIVE_FULL_OUTER_JOIN NO_NLJ_BATCHING NO_NLJ_PREFETCH +syn keyword plsqlKeyword NO_OBJECT_LINK NO_OBY_GBYPD_SEPARATE NO_ORDER_ROLLUPS NO_OR_EXPAND NO_OUTER_JOIN_TO_ANTI +syn keyword plsqlKeyword NO_OUTER_JOIN_TO_INNER NO_PARALLEL NO_PARALLEL_INDEX NO_PARTIAL_COMMIT NO_PARTIAL_JOIN +syn keyword plsqlKeyword NO_PARTIAL_OSON_UPDATE NO_PARTIAL_ROLLUP_PUSHDOWN NO_PLACE_DISTINCT NO_PLACE_GROUP_BY +syn keyword plsqlKeyword NO_PQ_CONCURRENT_UNION NO_PQ_EXPAND_TABLE NO_PQ_MAP NO_PQ_NONLEAF_SKEW NO_PQ_REPLICATE +syn keyword plsqlKeyword NO_PQ_SKEW NO_PRUNE_GSETS NO_PULL_PRED NO_PUSH_HAVING_TO_GBY NO_PUSH_PRED +syn keyword plsqlKeyword NO_PUSH_SUBQ NO_PX_FAULT_TOLERANCE NO_PX_JOIN_FILTER NO_QKN_BUFF NO_QUERY_TRANSFORMATION +syn keyword plsqlKeyword NO_REF_CASCADE NO_REORDER_WIF NO_RESULT_CACHE NO_REWRITE NO_ROOT_SW_FOR_LOCAL +syn keyword plsqlKeyword NO_SEMIJOIN NO_SEMI_TO_INNER NO_SET_GBY_PUSHDOWN NO_SET_TO_JOIN NO_SQL_TRANSLATION +syn keyword plsqlKeyword NO_SQL_TUNE NO_STAR_TRANSFORMATION NO_STATEMENT_QUEUING NO_STATS_GSETS NO_SUBQUERY_PRUNING +syn keyword plsqlKeyword NO_SUBSTRB_PAD NO_SWAP_JOIN_INPUTS NO_TABLE_LOOKUP_BY_NL NO_TEMP_TABLE NO_TRANSFORM_DISTINCT_AGG +syn keyword plsqlKeyword NO_UNNEST NO_USE_CUBE NO_USE_DAGG_UNION_ALL_GSETS NO_USE_HASH NO_USE_HASH_AGGREGATION +syn keyword plsqlKeyword NO_USE_HASH_GBY_FOR_DAGGPSHD NO_USE_HASH_GBY_FOR_PUSHDOWN NO_USE_INVISIBLE_INDEXES +syn keyword plsqlKeyword NO_USE_MERGE NO_USE_NL NO_USE_PARTITION_WISE_DISTINCT NO_USE_PARTITION_WISE_GBY +syn keyword plsqlKeyword NO_USE_PARTITION_WISE_WIF NO_USE_SCALABLE_GBY_INVDIST NO_USE_VECTOR_AGGREGATION +syn keyword plsqlKeyword NO_VECTOR_TRANSFORM NO_VECTOR_TRANSFORM_DIMS NO_VECTOR_TRANSFORM_FACT NO_XDB_FASTPATH_INSERT +syn keyword plsqlKeyword NO_XMLINDEX_REWRITE NO_XMLINDEX_REWRITE_IN_SELECT NO_XML_DML_REWRITE NO_XML_QUERY_REWRITE +syn keyword plsqlKeyword NO_ZONEMAP NTH_VALUE NTILE NULLIF NULLS NUMTODSINTERVAL NUMTOYMINTERVAL NUM_INDEX_KEYS +syn keyword plsqlKeyword NVL NVL2 OBJECT OBJECT2XML OBJNO OBJNO_REUSE OBJ_ID OBY_GBYPD_SEPARATE OCCURENCES +syn keyword plsqlKeyword OCCURRENCES ODD OFF OFFLINE OFFSET OID OIDINDEX OLAP OLD OLD_PUSH_PRED OLS +syn keyword plsqlKeyword OLTP OMIT ONE ONLINE ONLY OPAQUE OPAQUE_TRANSFORM OPAQUE_XCANONICAL OPCODE +syn keyword plsqlKeyword OPEN OPERATIONS OPERATOR OPTIMAL OPTIMIZE OPTIMIZER_FEATURES_ENABLE OPTIMIZER_GOAL +syn keyword plsqlKeyword OPT_ESTIMATE OPT_PARAM ORADEBUG ORA_BRANCH ORA_CHECK_ACL ORA_CHECK_PRIVILEGE +syn keyword plsqlKeyword ORA_CHECK_SYS_PRIVILEGE ORA_CLUSTERING ORA_CONCAT_RWKEY ORA_DM_PARTITION_NAME +syn keyword plsqlKeyword ORA_DST_AFFECTED ORA_DST_CONVERT ORA_DST_ERROR ORA_GET_ACLIDS ORA_GET_PRIVILEGES +syn keyword plsqlKeyword ORA_HASH ORA_INVOKING_USER ORA_INVOKING_USERID ORA_INVOKING_XS_USER ORA_INVOKING_XS_USER_GUID +syn keyword plsqlKeyword ORA_NORMALIZE ORA_PARTITION_VALIDATION ORA_RAWCOMPARE ORA_RAWCONCAT ORA_ROWSCN +syn keyword plsqlKeyword ORA_ROWSCN_RAW ORA_ROWVERSION ORA_SEARCH_RWKEY ORA_SHARDSPACE_NAME ORA_SHARD_ID +syn keyword plsqlKeyword ORA_TABVERSION ORA_WRITE_TIME ORDERED ORDERED_PREDICATES ORDER_KEY_VECTOR_USE +syn keyword plsqlKeyword ORDER_SUBQ ORDINALITY ORGANIZATION OR_EXPAND OR_PREDICATES OSON OSON_DIAG +syn keyword plsqlKeyword OSON_GET_CONTENT OTHER OTHERS OUTER OUTER_JOIN_TO_ANTI OUTER_JOIN_TO_INNER +syn keyword plsqlKeyword OUTLINE OUTLINE_LEAF OUT_OF_LINE OVER OVERFLOW OVERFLOW_NOMOVE OVERLAPS OWN +syn keyword plsqlKeyword OWNER OWNERSHIP PACKAGES PARALLEL PARALLEL_INDEX PARAM PARAMETERS +syn keyword plsqlKeyword PARENT PARITY PART$NUM$INST PARTIAL PARTIALLY PARTIAL_JOIN PARTIAL_ROLLUP_PUSHDOWN +syn keyword plsqlKeyword PARTITION PARTITIONING PARTITIONS PARTITIONSET PARTITION_CONTAINED PARTITION_HASH +syn keyword plsqlKeyword PARTITION_LIST PARTITION_RANGE PASSING PASSIVE PASSWORD PASSWORDFILE_METADATA_CACHE +syn keyword plsqlKeyword PASSWORD_GRACE_TIME PASSWORD_LIFE_TIME PASSWORD_LOCK_TIME PASSWORD_REUSE_MAX +syn keyword plsqlKeyword PASSWORD_REUSE_TIME PASSWORD_ROLLOVER_TIME PASSWORD_VERIFY_FUNCTION PAST PATCH +syn keyword plsqlKeyword PATH PATHS PATH_PREFIX PATTERN PBL_HS_BEGIN PBL_HS_END PCTINCREASE PCTTHRESHOLD +syn keyword plsqlKeyword PCTUSED PCTVERSION PDB_LOCAL_ONLY PEER PEERS PENDING PER PERCENT PERCENTAGE +syn keyword plsqlKeyword PERCENTILE_CONT PERCENTILE_DISC PERCENT_RANK PERCENT_RANKM PERFORMANCE PERIOD +syn keyword plsqlKeyword PERMANENT PERMISSION PERMUTE PERSISTABLE PFILE PHV PHYSICAL PIKEY PIVOT PIV_GB +syn keyword plsqlKeyword PIV_SSF PLACE_DISTINCT PLACE_GROUP_BY PLAN PLSCOPE_SETTINGS PLSQL_CCFLAGS +syn keyword plsqlKeyword PLSQL_CODE_TYPE PLSQL_DEBUG PLSQL_OPTIMIZE_LEVEL PLSQL_WARNINGS PLUGGABLE +syn keyword plsqlKeyword PMEM POINT POLICY POOL_16K POOL_2K POOL_32K POOL_4K POOL_8K PORT POSITION +syn keyword plsqlKeyword POST_TRANSACTION POWER POWERMULTISET POWERMULTISET_BY_CARDINALITY PQ_CONCURRENT_UNION +syn keyword plsqlKeyword PQ_DISTRIBUTE PQ_DISTRIBUTE_WINDOW PQ_EXPAND_TABLE PQ_FILTER PQ_MAP PQ_NOMAP +syn keyword plsqlKeyword PQ_NONLEAF_SKEW PQ_REPLICATE PQ_SKEW PREBUILT PRECEDES PRECEDING PRECOMPUTE_SUBQUERY +syn keyword plsqlKeyword PREDICATE_REORDERS PREDICTION PREDICTION_BOUNDS PREDICTION_COST PREDICTION_DETAILS +syn keyword plsqlKeyword PREDICTION_PROBABILITY PREDICTION_SET PRELOAD PREPARE PRESENT PRESENTNNV PRESENTV +syn keyword plsqlKeyword PRESERVE PRESERVE_OID PRETTY PREVIOUS PRIMARY PRINTBLOBTOCLOB PRIORITY +syn match plsqlKeyword "\<PREV\>" +syn keyword plsqlKeyword PRIVATE PRIVATE_SGA PRIVILEGE PRIVILEGED PRIVILEGES PROCEDURAL PROCESS +syn keyword plsqlKeyword PROFILE PROGRAM PROJECT PROPAGATE PROPAGATION PROPERTY PROTECTED PROTECTION +syn keyword plsqlKeyword PROTOCOL PROXY PRUNING PULL_PRED PURGE PUSH_HAVING_TO_GBY PUSH_PRED PUSH_SUBQ +syn keyword plsqlKeyword PX_FAULT_TOLERANCE PX_GRANULE PX_JOIN_FILTER QB_NAME QUALIFY QUARANTINE QUARTERS +syn keyword plsqlKeyword QUERY QUERY_BLOCK QUEUE QUEUE_CURR QUEUE_ROWP QUIESCE QUORUM QUOTA QUOTAGROUP +syn keyword plsqlKeyword QUOTES RANDOM RANDOM_LOCAL RANGE RANK RANKM RAPIDLY RATIO_TO_REPORT RAWTOHEX +syn keyword plsqlKeyword RAWTONHEX RAWTOREF RBA RBO_OUTLINE RDBA READ READS READ_OR_WRITE REALM REBALANCE +syn keyword plsqlKeyword REBUILD RECONNECT RECORDS_PER_BLOCK RECOVER RECOVERABLE RECOVERY RECYCLE RECYCLEBIN +syn keyword plsqlKeyword REDACTION REDEFINE REDO REDUCED REDUNDANCY REFERENCE REFERENCED REFERENCES +syn keyword plsqlKeyword REFERENCING REFRESH REFTOHEX REFTORAW REF_CASCADE_CURSOR REGEXP_COUNT REGEXP_INSTR +syn keyword plsqlKeyword REGEXP_LIKE REGEXP_REPLACE REGEXP_SUBSTR REGISTER REGR_AVGX REGR_AVGY REGR_COUNT +syn keyword plsqlKeyword REGR_INTERCEPT REGR_R2 REGR_SLOPE REGR_SXX REGR_SXY REGR_SYY REGULAR REJECT +syn keyword plsqlKeyword REKEY RELATIONAL RELOCATE RELY REMAINDER REMOTE REMOTE_MAPPED REMOVE REORDER_WIF +syn keyword plsqlKeyword REPAIR REPEAT REPLICATION REQUIRED RESERVOIR_SAMPLING RESET RESETLOGS +syn keyword plsqlKeyword RESIZE RESOLVE RESOLVER RESPECT RESTART RESTORE RESTORE_AS_INTERVALS RESTRICT +syn keyword plsqlKeyword RESTRICTED RESTRICT_ALL_REF_CONS RESULT_CACHE RESUMABLE RESUME RETENTION RETRY_ON_ROW_CHANGE +syn keyword plsqlKeyword RETURN RETURNING REUSE REVERSE REWRITE REWRITE_OR_ERROR RIGHT RLS_FORCE ROLE +syn keyword plsqlKeyword ROLES ROLESET ROLLBACK ROLLING ROLLOVER ROLLUP ROOT ROUND ROUND_TIES_TO_EVEN +syn keyword plsqlKeyword ROW ROWDEPENDENCIES ROWIDTOCHAR ROWIDTONCHAR ROWID_MAPPING_TABLE ROWNUM ROWS +syn keyword plsqlKeyword ROW_LENGTH ROW_NUMBER RPAD RTRIM RULE RULES RUNNING SALT SAMPLE SAVE SAVEPOINT +syn keyword plsqlKeyword SAVE_AS_INTERVALS SB4 SCALAR SCALARS SCALE SCALE_ROWS SCAN SCAN_INSTANCES +syn keyword plsqlKeyword SCHEDULER SCHEMA SCHEMACHECK SCN SCN_ASCENDING SCOPE SCRUB SDO_GEOM_KEY SDO_GEOM_MAX_X +syn keyword plsqlKeyword SDO_GEOM_MAX_Y SDO_GEOM_MAX_Z SDO_GEOM_MBB SDO_GEOM_MBR SDO_GEOM_MIN_X SDO_GEOM_MIN_Y +syn keyword plsqlKeyword SDO_GEOM_MIN_Z SDO_TOLERANCE SD_ALL SD_INHIBIT SD_SHOW SEARCH SECONDS SECRET +syn keyword plsqlKeyword SECUREFILE SECUREFILE_DBA SECURITY SEED SEGMENT SEG_BLOCK SEG_FILE SELECTIVITY +syn keyword plsqlKeyword SELF SEMIJOIN SEMIJOIN_DRIVER SEMI_TO_INNER SENSITIVE SEQUENCE SEQUENCED SEQUENTIAL +syn keyword plsqlKeyword SERIAL SERIALIZABLE SERVERERROR SERVICE SERVICES SERVICE_NAME_CONVERT SESSION +syn keyword plsqlKeyword SESSIONS_PER_USER SESSIONTIMEZONE SESSIONTZNAME SESSION_CACHED_CURSORS SETS +syn keyword plsqlKeyword SETTINGS SET_GBY_PUSHDOWN SET_TO_JOIN SEVERE SHARD SHARDED SHARDS SHARDSPACE +syn keyword plsqlKeyword SHARD_CHUNK_ID SHARED SHARED_POOL SHARE_OF SHARING SHD$COL$MAP SHELFLIFE SHOW +syn keyword plsqlKeyword SHRINK SHUTDOWN SIBLING SIBLINGS SID SIGN SIGNAL_COMPONENT SIGNAL_FUNCTION +syn keyword plsqlKeyword SIGNATURE SIMPLE SIN SINGLE SINGLETASK SINH SITE SKEWNESS_POP SKEWNESS_SAMP +syn keyword plsqlKeyword SKIP SKIP_EXT_OPTIMIZER SKIP_PROXY SKIP_UNQ_UNUSABLE_IDX SKIP_UNUSABLE_INDEXES +syn keyword plsqlKeyword SMALLFILE SNAPSHOT SOME SORT SOUNDEX SOURCE SOURCE_FILE_DIRECTORY SOURCE_FILE_NAME_CONVERT +syn keyword plsqlKeyword SPACE SPATIAL SPECIFICATION SPFILE SPLIT SPREADSHEET SQL SQLLDR SQL_SCOPE +syn keyword plsqlKeyword SQL_TRACE SQL_TRANSLATION_PROFILE SQRT STALE STANDALONE STANDARD_HASH STANDBY +syn keyword plsqlKeyword STANDBYS STANDBY_MAX_DATA_DELAY STAR STARTUP STAR_TRANSFORMATION STATE STATEMENT +syn keyword plsqlKeyword STATEMENTS STATEMENT_ID STATEMENT_QUEUING STATIC STATISTICS STATS_BINOMIAL_TEST +syn keyword plsqlKeyword STATS_CROSSTAB STATS_F_TEST STATS_KS_TEST STATS_MODE STATS_MW_TEST STATS_ONE_WAY_ANOVA +syn keyword plsqlKeyword STATS_T_TEST_INDEP STATS_T_TEST_INDEPU STATS_T_TEST_ONE STATS_T_TEST_PAIRED +syn keyword plsqlKeyword STATS_WSR_TEST STDDEV STDDEV_POP STDDEV_SAMP STOP STORAGE STORAGE_INDEX STORE +syn keyword plsqlKeyword STREAM STREAMS STRICT STRING STRINGS STRIP STRIPE_COLUMNS STRIPE_WIDTH STRUCTURE +syn keyword plsqlKeyword SUBMULTISET SUBPARTITION SUBPARTITIONING SUBPARTITIONS SUBPARTITION_REL SUBQUERIES +syn keyword plsqlKeyword SUBQUERY_PRUNING SUBSCRIBE SUBSET SUBSTITUTABLE SUBSTR SUBSTR2 SUBSTR4 SUBSTRB +syn keyword plsqlKeyword SUBSTRC SUBTYPE SUCCESS SUCCESSFUL SUM SUMMARY SUPPLEMENTAL SUPPRESS_LOAD +syn keyword plsqlKeyword SUSPEND SWAP_JOIN_INPUTS SWITCH SWITCHOVER SYNC SYNCHRONOUS SYSASM SYSAUX +syn keyword plsqlKeyword SYSBACKUP SYSDATE SYSDBA SYSDG SYSGUID SYSKM SYSOBJ SYSOPER SYSRAC SYSTEM +syn keyword plsqlKeyword SYSTEM_DEFINED SYSTEM_STATS SYSTIMESTAMP SYS_AUDIT SYS_CHECKACL SYS_CHECK_PRIVILEGE +syn keyword plsqlKeyword SYS_CONNECT_BY_PATH SYS_CONS_ANY_SCALAR SYS_CONTEXT SYS_CTXINFOPK SYS_CTX_CONTAINS2 +syn keyword plsqlKeyword SYS_CTX_MKIVIDX SYS_DBURIGEN SYS_DL_CURSOR SYS_DM_RXFORM_CHR SYS_DM_RXFORM_LAB +syn keyword plsqlKeyword SYS_DM_RXFORM_NUM SYS_DOM_COMPARE SYS_DST_PRIM2SEC SYS_DST_SEC2PRIM SYS_ET_BFILE_TO_RAW +syn keyword plsqlKeyword SYS_ET_BLOB_TO_IMAGE SYS_ET_IMAGE_TO_BLOB SYS_ET_RAW_TO_BFILE SYS_EXTPDTXT +syn keyword plsqlKeyword SYS_EXTRACT_UTC SYS_FBT_INSDEL SYS_FILTER_ACLS SYS_FNMATCHES SYS_FNREPLACE +syn keyword plsqlKeyword SYS_GETTOKENID SYS_GETXTIVAL SYS_GET_ACLIDS SYS_GET_ANY_SCALAR SYS_GET_COL_ACLIDS +syn keyword plsqlKeyword SYS_GET_PRIVILEGES SYS_GUID SYS_MAKEXML SYS_MAKE_XMLNODEID SYS_MKXMLATTR SYS_MKXTI +syn keyword plsqlKeyword SYS_OPTLOBPRBSC SYS_OPTXICMP SYS_OPTXQCASTASNQ SYS_OP_ADT2BIN SYS_OP_ADTCONS +syn keyword plsqlKeyword SYS_OP_ALSCRVAL SYS_OP_ATG SYS_OP_BIN2ADT SYS_OP_BITVEC SYS_OP_BL2R SYS_OP_BLOOM_FILTER +syn keyword plsqlKeyword SYS_OP_BLOOM_FILTER_LIST SYS_OP_C2C SYS_OP_CAST SYS_OP_CEG SYS_OP_CL2C SYS_OP_COMBINED_HASH +syn keyword plsqlKeyword SYS_OP_COMP SYS_OP_CONVERT SYS_OP_COUNTCHG SYS_OP_CSCONV SYS_OP_CSCONVTEST +syn keyword plsqlKeyword SYS_OP_CSR SYS_OP_CSX_PATCH SYS_OP_CYCLED_SEQ SYS_OP_DECOMP SYS_OP_DESCEND +syn keyword plsqlKeyword SYS_OP_DISTINCT SYS_OP_DRA SYS_OP_DSB_DESERIALIZE SYS_OP_DSB_SERIALIZE SYS_OP_DUMP +syn keyword plsqlKeyword SYS_OP_DV_CHECK SYS_OP_ENFORCE_NOT_NULL$ SYS_OP_EXTRACT SYS_OP_GROUPING SYS_OP_GUID +syn keyword plsqlKeyword SYS_OP_HASH SYS_OP_HCS_TABLE SYS_OP_IIX SYS_OP_INTERVAL_HIGH_BOUND SYS_OP_ITR +syn keyword plsqlKeyword SYS_OP_KEY_VECTOR_CREATE SYS_OP_KEY_VECTOR_FILTER SYS_OP_KEY_VECTOR_FILTER_LIST +syn keyword plsqlKeyword SYS_OP_KEY_VECTOR_PAYLOAD SYS_OP_KEY_VECTOR_SUCCEEDED SYS_OP_KEY_VECTOR_USE +syn keyword plsqlKeyword SYS_OP_LBID SYS_OP_LOBLOC2BLOB SYS_OP_LOBLOC2CLOB SYS_OP_LOBLOC2ID SYS_OP_LOBLOC2NCLOB +syn keyword plsqlKeyword SYS_OP_LOBLOC2TYP SYS_OP_LSVI SYS_OP_LVL SYS_OP_MAKEOID SYS_OP_MAP_NONNULL +syn keyword plsqlKeyword SYS_OP_MSR SYS_OP_NICOMBINE SYS_OP_NIEXTRACT SYS_OP_NII SYS_OP_NIX SYS_OP_NOEXPAND +syn keyword plsqlKeyword SYS_OP_NTCIMG$ SYS_OP_NUMTORAW SYS_OP_OBJ_UPD_IN_TXN SYS_OP_OIDVALUE SYS_OP_OPNSIZE +syn keyword plsqlKeyword SYS_OP_PAR SYS_OP_PARGID SYS_OP_PARGID_1 SYS_OP_PART_ID SYS_OP_PAR_1 SYS_OP_PIVOT +syn keyword plsqlKeyword SYS_OP_R2O SYS_OP_RAWTONUM SYS_OP_RDTM SYS_OP_REF SYS_OP_RMTD SYS_OP_ROWIDTOOBJ +syn keyword plsqlKeyword SYS_OP_RPB SYS_OP_TOSETID SYS_OP_TPR SYS_OP_TRTB SYS_OP_UNDESCEND SYS_OP_VECAND +syn keyword plsqlKeyword SYS_OP_VECBIT SYS_OP_VECOR SYS_OP_VECTOR_GROUP_BY SYS_OP_VECXOR SYS_OP_VERSION +syn keyword plsqlKeyword SYS_OP_VREF SYS_OP_VVD SYS_OP_XMLCONS_FOR_CSX SYS_OP_XPTHATG SYS_OP_XPTHIDX +syn keyword plsqlKeyword SYS_OP_XPTHOP SYS_OP_XTNN SYS_OP_XTXT2SQLT SYS_OP_ZONE_ID SYS_ORDERKEY_DEPTH +syn keyword plsqlKeyword SYS_ORDERKEY_MAXCHILD SYS_ORDERKEY_PARENT SYS_PARALLEL_TXN SYS_PATHID_IS_ATTR +syn keyword plsqlKeyword SYS_PATHID_IS_NMSPC SYS_PATHID_LASTNAME SYS_PATHID_LASTNMSPC SYS_PATH_REVERSE +syn keyword plsqlKeyword SYS_PLSQL_COUNT SYS_PLSQL_CPU SYS_PLSQL_IO SYS_PXQEXTRACT SYS_RAW_TO_XSID +syn keyword plsqlKeyword SYS_REMAP_XMLTYPE SYS_RID_ORDER SYS_ROW_DELTA SYS_SC_2_XMLT SYS_SYNRCIREDO +syn keyword plsqlKeyword SYS_TYPEID SYS_UMAKEXML SYS_XMLANALYZE SYS_XMLCONTAINS SYS_XMLCONV SYS_XMLEXNSURI +syn keyword plsqlKeyword SYS_XMLGEN SYS_XMLINSTR SYS_XMLI_LOC_ISNODE SYS_XMLI_LOC_ISTEXT SYS_XMLLOCATOR_GETSVAL +syn keyword plsqlKeyword SYS_XMLNODEID SYS_XMLNODEID_GETCID SYS_XMLNODEID_GETLOCATOR SYS_XMLNODEID_GETOKEY +syn keyword plsqlKeyword SYS_XMLNODEID_GETPATHID SYS_XMLNODEID_GETPTRID SYS_XMLNODEID_GETRID SYS_XMLNODEID_GETSVAL +syn keyword plsqlKeyword SYS_XMLNODEID_GETTID SYS_XMLTRANSLATE SYS_XMLTYPE2SQL SYS_XMLT_2_SC SYS_XQBASEURI +syn keyword plsqlKeyword SYS_XQCASTABLEERRH SYS_XQCODEP2STR SYS_XQCODEPEQ SYS_XQCON2SEQ SYS_XQCONCAT +syn keyword plsqlKeyword SYS_XQDELETE SYS_XQDFLTCOLATION SYS_XQDOC SYS_XQDOCURI SYS_XQDURDIV SYS_XQED4URI +syn keyword plsqlKeyword SYS_XQENDSWITH SYS_XQERR SYS_XQERRH SYS_XQESHTMLURI SYS_XQEXLOBVAL SYS_XQEXSTWRP +syn keyword plsqlKeyword SYS_XQEXTRACT SYS_XQEXTRREF SYS_XQEXVAL SYS_XQFB2STR SYS_XQFNBOOL SYS_XQFNCMP +syn keyword plsqlKeyword SYS_XQFNDATIM SYS_XQFNLNAME SYS_XQFNNM SYS_XQFNNSURI SYS_XQFNPREDTRUTH SYS_XQFNQNM +syn keyword plsqlKeyword SYS_XQFNROOT SYS_XQFORMATNUM SYS_XQFTCONTAIN SYS_XQFUNCR SYS_XQGETCONTENT +syn keyword plsqlKeyword SYS_XQINDXOF SYS_XQINSERT SYS_XQINSPFX SYS_XQIRI2URI SYS_XQLANG SYS_XQLLNMFRMQNM +syn keyword plsqlKeyword SYS_XQMKNODEREF SYS_XQNILLED SYS_XQNODENAME SYS_XQNORMSPACE SYS_XQNORMUCODE +syn keyword plsqlKeyword SYS_XQNSP4PFX SYS_XQNSPFRMQNM SYS_XQPFXFRMQNM SYS_XQPOLYABS SYS_XQPOLYADD +syn keyword plsqlKeyword SYS_XQPOLYCEL SYS_XQPOLYCST SYS_XQPOLYCSTBL SYS_XQPOLYDIV SYS_XQPOLYFLR SYS_XQPOLYMOD +syn keyword plsqlKeyword SYS_XQPOLYMUL SYS_XQPOLYRND SYS_XQPOLYSQRT SYS_XQPOLYSUB SYS_XQPOLYUMUS SYS_XQPOLYUPLS +syn keyword plsqlKeyword SYS_XQPOLYVEQ SYS_XQPOLYVGE SYS_XQPOLYVGT SYS_XQPOLYVLE SYS_XQPOLYVLT SYS_XQPOLYVNE +syn keyword plsqlKeyword SYS_XQREF2VAL SYS_XQRENAME SYS_XQREPLACE SYS_XQRESVURI SYS_XQRNDHALF2EVN SYS_XQRSLVQNM +syn keyword plsqlKeyword SYS_XQRYENVPGET SYS_XQRYVARGET SYS_XQRYWRP SYS_XQSEQ2CON SYS_XQSEQ2CON4XC +syn keyword plsqlKeyword SYS_XQSEQDEEPEQ SYS_XQSEQINSB SYS_XQSEQRM SYS_XQSEQRVS SYS_XQSEQSUB SYS_XQSEQTYPMATCH +syn keyword plsqlKeyword SYS_XQSTARTSWITH SYS_XQSTATBURI SYS_XQSTR2CODEP SYS_XQSTRJOIN SYS_XQSUBSTRAFT +syn keyword plsqlKeyword SYS_XQSUBSTRBEF SYS_XQTOKENIZE SYS_XQTREATAS SYS_XQXFORM SYS_XQ_ASQLCNV SYS_XQ_ATOMCNVCHK +syn keyword plsqlKeyword SYS_XQ_NRNG SYS_XQ_PKSQL2XML SYS_XQ_UPKXML2SQL SYS_XSID_TO_RAW SYS_ZMAP_FILTER +syn keyword plsqlKeyword SYS_ZMAP_REFRESH TABAUTH TABLES TABLESPACE TABLESPACE_NO TABLE_LOOKUP_BY_NL +syn keyword plsqlKeyword TABLE_STATS TABNO TAG TAN TANH TARGET TBL$OR$IDX$PART$NUM TEMP TEMPFILE TEMPLATE +syn keyword plsqlKeyword TEMPORARY TEMP_TABLE TENANT_ID TEST TEXT THAN THE THREAD THROUGH TIER TIES +syn keyword plsqlKeyword TIMEOUT TIMES TIMESTAMP_TO_NUMBER TIMEZONE_ABBR TIMEZONE_HOUR TIMEZONE_MINUTE +syn keyword plsqlKeyword TIMEZONE_OFFSET TIMEZONE_REGION TIME_ZONE TIV_GB TIV_SSF TOKEN TOPLEVEL TO_ACLID +syn keyword plsqlKeyword TO_APPROX_COUNT_DISTINCT TO_APPROX_PERCENTILE TO_BINARY_DOUBLE TO_BINARY_FLOAT +syn keyword plsqlKeyword TO_BLOB TO_CHAR TO_CLOB TO_DATE TO_DSINTERVAL TO_ISO_STRING TO_LOB TO_MULTI_BYTE +syn keyword plsqlKeyword TO_NCHAR TO_NCLOB TO_NUMBER TO_SINGLE_BYTE TO_TIME TO_TIMESTAMP TO_TIMESTAMP_TZ +syn keyword plsqlKeyword TO_TIME_TZ TO_UTC_TIMESTAMP_TZ TO_YMINTERVAL TRACE TRACING TRACKING TRAILING +syn keyword plsqlKeyword TRANSACTION TRANSFORM TRANSFORM_DISTINCT_AGG TRANSITION TRANSITIONAL TRANSLATE +syn keyword plsqlKeyword TRANSLATION TRANSPORTABLE TREAT TRIGGERS TRIM TRUNC TRUNCATE TRUST TRUSTED +syn keyword plsqlKeyword TUNING TX TYPENAME TYPES TZ_OFFSET UB2 UBA UCS2 UID UNARCHIVED UNBOUND +syn keyword plsqlKeyword UNBOUNDED UNCONDITIONAL UNDER UNDO UNDROP UNIFORM UNINSTALL UNION_ALL UNISTR +syn keyword plsqlKeyword UNITE UNIXTIME UNLIMITED UNLOAD UNLOCK UNMATCHED UNNEST UNNEST_INNERJ_DISTINCT_VIEW +syn keyword plsqlKeyword UNNEST_NOSEMIJ_NODISTINCTVIEW UNNEST_SEMIJ_VIEW UNPACKED UNPIVOT UNPLUG UNPROTECTED +syn keyword plsqlKeyword UNQUIESCE UNRECOVERABLE UNRESTRICTED UNSUBSCRIBE UNTIL UNUSABLE UNUSED UPDATABLE +syn keyword plsqlKeyword UPDATED UPDATEXML UPD_INDEXES UPD_JOININDEX UPGRADE UPPER UPSERT USABLE USAGE +syn keyword plsqlKeyword USE USER USERENV USERGROUP USERS USER_DATA USER_DEFINED USER_RECYCLEBIN USER_TABLESPACES +syn keyword plsqlKeyword USE_ANTI USE_CONCAT USE_CUBE USE_DAGG_UNION_ALL_GSETS USE_HASH USE_HASH_AGGREGATION +syn keyword plsqlKeyword USE_HASH_GBY_FOR_DAGGPSHD USE_HASH_GBY_FOR_PUSHDOWN USE_HIDDEN_PARTITIONS +syn keyword plsqlKeyword USE_INVISIBLE_INDEXES USE_MERGE USE_MERGE_CARTESIAN USE_NL USE_NL_WITH_INDEX +syn keyword plsqlKeyword USE_PARTITION_WISE_DISTINCT USE_PARTITION_WISE_GBY USE_PARTITION_WISE_WIF +syn keyword plsqlKeyword USE_PRIVATE_OUTLINES USE_SCALABLE_GBY_INVDIST USE_SEMI USE_STORED_OUTLINES +syn keyword plsqlKeyword USE_TTT_FOR_GSETS USE_VECTOR_AGGREGATION USE_WEAK_NAME_RESL USING USING_NO_EXPAND +syn keyword plsqlKeyword UTF16BE UTF16LE UTF32 UTF8 V1 V2 VALIDATE VALIDATE_CONVERSION VALIDATION VALID_TIME_END +syn keyword plsqlKeyword VALUE VARIANCE VARRAY VARRAYS VAR_POP VAR_SAMP VECTOR VECTOR_ENCODE VECTOR_READ +syn keyword plsqlKeyword VECTOR_READ_TRACE VECTOR_TRANSFORM VECTOR_TRANSFORM_DIMS VECTOR_TRANSFORM_FACT +syn keyword plsqlKeyword VERIFIER VERIFY VERSION VERSIONING VERSIONS VERSIONS_ENDSCN VERSIONS_ENDTIME +syn keyword plsqlKeyword VERSIONS_OPERATION VERSIONS_STARTSCN VERSIONS_STARTTIME VERSIONS_XID VIEWS +syn keyword plsqlKeyword VIOLATION VIRTUAL VISIBILITY VISIBLE VOLUME VSIZE WAIT WALLET WEEK WEEKS WELLFORMED +syn keyword plsqlKeyword WHENEVER WHITESPACE WIDTH_BUCKET WINDOW WITHIN WITHOUT WITH_EXPRESSION +syn keyword plsqlKeyword WITH_PLSQL WORK WRAPPED WRAPPER WRITE XDB_FASTPATH_INSERT XID XML XML2OBJECT +syn keyword plsqlKeyword XMLATTRIBUTES XMLCAST XMLCDATA XMLCOLATTVAL XMLCOMMENT XMLCONCAT XMLDIFF XMLELEMENT +syn keyword plsqlKeyword XMLEXISTS XMLEXISTS2 XMLFOREST XMLINDEX_REWRITE XMLINDEX_REWRITE_IN_SELECT +syn keyword plsqlKeyword XMLINDEX_SEL_IDX_TBL XMLISNODE XMLISVALID XMLNAMESPACES XMLPARSE XMLPATCH +syn keyword plsqlKeyword XMLPI XMLQUERY XMLQUERYVAL XMLROOT XMLSCHEMA XMLSERIALIZE XMLTABLE XMLTOJSON +syn keyword plsqlKeyword XMLTOKENSET XMLTRANSFORM XMLTRANSFORMBLOB XMLTSET_DML_ENABLE XML_DIAG XML_DML_RWT_STMT +syn keyword plsqlKeyword XPATHTABLE XS XS_SYS_CONTEXT X_DYN_PRUNE YEARS YES ZONEMAP + +" Some of Oracle's Reserved keywords. +syn keyword plsqlReserved ACCESSIBLE AGENT ALL ALTER ANY ASC BFILE_BASE BLOB_BASE BY +"syn match plsqlReserved "\<AS\>" +syn keyword plsqlReserved C CALLING CHARSET CHARSETFORM CHARSETID CHAR_BASE CHECK CLOB_BASE CLUSTER +syn keyword plsqlReserved COLLATE COMPILED COMPRESS CONNECT CONNECT_BY_ROOT CONSTRUCTOR CUSTOMDATUM +syn keyword plsqlReserved DATE_BASE DEFAULT DESC DISTINCT DROP DURATION EXCEPT EXCLUSIVE +syn match plsqlReserved "\<DELETE\>" +syn keyword plsqlReserved EXIT FIXED FROM GENERAL GRANT GROUP HAVING IDENTIFIED INDEX +syn match plsqlReserved "\<EXISTS\>" +syn keyword plsqlReserved INDICES INTERFACE INTERSECT INTO LARGE LIMITED LOCK MAXLEN +syn keyword plsqlReserved MINUS MODE NOCOMPRESS NOWAIT NUMBER_BASE OCICOLL OCIDATE OCIDATETIME +syn keyword plsqlReserved OCIDURATION OCIINTERVAL OCILOBLOCATOR OCINUMBER OCIRAW OCIREF OCIREFCURSOR +syn keyword plsqlReserved OCIROWID OCISTRING OCITYPE OF ON OPTION ORACLE ORADATA ORDER ORLANY ORLVARY +syn keyword plsqlReserved OUT OVERRIDING PARALLEL_ENABLE PARAMETER PASCAL PCTFREE PIPE PIPELINED POLYMORPHIC +syn keyword plsqlReserved PRAGMA PRIOR PUBLIC RAISE RECORD RELIES_ON REM RENAME RESOURCE RESULT REVOKE ROWID +syn keyword plsqlReserved SB1 SB2 +syn match plsqlReserved "\<SELECT\>" +syn keyword plsqlReserved SEPARATE SHARE SHORT SIZE SIZE_T SPARSE SQLCODE SQLDATA +syn keyword plsqlReserved SQLNAME SQLSTATE STANDARD START STORED STRUCT STYLE SYNONYM TABLE TDO +syn keyword plsqlReserved TRANSACTIONAL TRIGGER UB1 UB4 UNION UNIQUE UNSIGNED UNTRUSTED VALIST +syn keyword plsqlReserved VALUES VARIABLE VIEW VOID WHERE WITH + +" PL/SQL and SQL functions. +syn keyword plsqlFunction ABS ACOS ADD_MONTHS APPROX_COUNT APPROX_COUNT_DISTINCT APPROX_COUNT_DISTINCT_AGG +syn keyword plsqlFunction APPROX_COUNT_DISTINCT_DETAIL APPROX_MEDIAN APPROX_PERCENTILE APPROX_PERCENTILE_AGG +syn keyword plsqlFunction APPROX_PERCENTILE_DETAIL APPROX_RANK APPROX_SUM ASCII ASCIISTR ASIN ATAN ATAN2 +syn keyword plsqlFunction AVG BFILENAME BIN_TO_NUM BITAND CARDINALITY CAST CEIL CHARTOROWID CHR CLUSTER_DETAILS +syn keyword plsqlFunction CLUSTER_DISTANCE CLUSTER_ID CLUSTER_PROBABILITY CLUSTER_SET COALESCE COLLATION +syn keyword plsqlFunction COLLECT COMPOSE CONCAT CONVERT CON_DBID_TO_ID CON_GUID_TO_ID CON_NAME_TO_ID +syn keyword plsqlFunction CON_UID_TO_ID CORR COS COSH COVAR_POP COVAR_SAMP CUME_DIST CURRENT_DATE +syn keyword plsqlFunction CURRENT_TIMESTAMP CV DATAOBJ_TO_MAT_PARTITION DATAOBJ_TO_PARTITION DBTIMEZONE +syn keyword plsqlFunction DECODE DECOMPOSE DENSE_RANK DEPTH DEREF DUMP EMPTY_BLOB EMPTY_CLOB EXISTSNODE +syn keyword plsqlFunction EXP EXTRACT EXTRACTVALUE FEATURE_COMPARE FEATURE_DETAILS FEATURE_ID FEATURE_SET +syn keyword plsqlFunction FEATURE_VALUE FIRST_VALUE FLOOR FROM_TZ GREATEST GROUPING GROUPING_ID +syn keyword plsqlFunction GROUP_ID HEXTORAW INITCAP INSTR ITERATION_NUMBER JSON_ARRAY JSON_ARRAYAGG +syn keyword plsqlFunction JSON_OBJECT JSON_OBJECTAGG JSON_QUERY JSON_TABLE JSON_VALUE LAG LAST_DAY +syn keyword plsqlFunction LAST_VALUE LEAD LEAST LENGTH LISTAGG LN LNNVL LOCALTIMESTAMP LOG LOWER LPAD +syn keyword plsqlFunction LTRIM MAKE_REF MAX MEDIAN MIN MOD MONTHS_BETWEEN NANVL NCHR NEW_TIME NEXT_DAY +syn keyword plsqlFunction NLSSORT NLS_CHARSET_DECL_LEN NLS_CHARSET_ID NLS_CHARSET_NAME NLS_COLLATION_ID +syn keyword plsqlFunction NLS_COLLATION_NAME NLS_INITCAP NLS_LOWER NLS_UPPER NTH_VALUE NTILE NULLIF +syn keyword plsqlFunction NUMTODSINTERVAL NUMTOYMINTERVAL NVL NVL2 ORA_DM_PARTITION_NAME ORA_DST_AFFECTED +syn keyword plsqlFunction ORA_DST_CONVERT ORA_DST_ERROR ORA_HASH ORA_INVOKING_USER ORA_INVOKING_USERID +syn keyword plsqlFunction PATH PERCENTILE_CONT PERCENTILE_DISC PERCENT_RANK POWER POWERMULTISET POWERMULTISET_BY_CARDINALITY +syn keyword plsqlFunction PREDICTION PREDICTION_BOUNDS PREDICTION_COST PREDICTION_DETAILS PREDICTION_PROBABILITY +syn keyword plsqlFunction PREDICTION_SET PRESENTNNV PRESENTV PREVIOUS RANK RATIO_TO_REPORT RAWTOHEX +syn keyword plsqlFunction RAWTONHEX REFTOHEX REGEXP_COUNT REGEXP_INSTR REGEXP_REPLACE REGEXP_SUBSTR +syn keyword plsqlFunction REMAINDER ROUND ROUND ROWIDTOCHAR ROWIDTONCHAR ROW_NUMBER RPAD RTRIM +syn keyword plsqlFunction SCN_TO_TIMESTAMP SESSIONTIMEZONE SIGN SIN SINH SOUNDEX SQRT STANDARD_HASH +syn keyword plsqlFunction STATS_BINOMIAL_TEST STATS_CROSSTAB STATS_F_TEST STATS_KS_TEST STATS_MODE STATS_MW_TEST +syn keyword plsqlFunction STATS_ONE_WAY_ANOVA STATS_WSR_TEST STDDEV STDDEV_POP STDDEV_SAMP SUBSTR SUM +syn keyword plsqlFunction SYSDATE SYSTIMESTAMP SYS_CONNECT_BY_PATH SYS_CONTEXT SYS_DBURIGEN SYS_EXTRACT_UTC +syn keyword plsqlFunction SYS_GUID SYS_OP_ZONE_ID SYS_TYPEID SYS_XMLAGG SYS_XMLGEN TAN TANH TIMESTAMP_TO_SCN +syn keyword plsqlFunction TO_APPROX_COUNT_DISTINCT TO_APPROX_PERCENTILE TO_BINARY_DOUBLE TO_BINARY_FLOAT +syn keyword plsqlFunction TO_BLOB TO_CHAR TO_CLOB TO_DATE TO_DSINTERVAL TO_LOB TO_MULTI_BYTE TO_NCHAR +syn keyword plsqlFunction TO_NCLOB TO_NUMBER TO_SINGLE_BYTE TO_TIMESTAMP TO_TIMESTAMP_TZ TO_YMINTERVAL +syn keyword plsqlFunction TRANSLATE TREAT TRIM TRUNC TZ_OFFSET UID UNISTR UPPER USER USERENV VALIDATE_CONVERSION +syn keyword plsqlFunction VALUE VARIANCE VAR_POP VAR_SAMP VSIZE WIDTH_BUCKET XMLAGG XMLCAST XMLCDATA +syn keyword plsqlFunction XMLCOLATTVAL XMLCOMMENT XMLCONCAT XMLDIFF XMLELEMENT XMLEXISTS XMLFOREST XMLISVALID +syn keyword plsqlFunction XMLPARSE XMLPATCH XMLPI XMLQUERY XMLROOT XMLSEQUENCE XMLSERIALIZE XMLTABLE +syn keyword plsqlFunction XMLTRANSFORM +syn keyword plsqlFunction CURRVAL NEXTVAL syn match plsqlFunction "\<SYS\$LOB_REPLICATION\>" +syn match plsqlFunction "\.COUNT\>"hs=s+1 +syn match plsqlFunction "\.EXISTS\>"hs=s+1 +syn match plsqlFunction "\.FIRST\>"hs=s+1 +syn match plsqlFunction "\.LAST\>"hs=s+1 +syn match plsqlFunction "\.DELETE\>"hs=s+1 +syn match plsqlFunction "\.PREV\>"hs=s+1 +syn match plsqlFunction "\.NEXT\>"hs=s+1 + +if exists("plsql_legacy_sql_keywords") + " Some of Oracle's SQL keywords. + syn keyword plsqlSQLKeyword ABORT ACCESS ACCESSED ADD AFTER ALL ALTER AND ANY + syn keyword plsqlSQLKeyword ASC ATTRIBUTE AUDIT AUTHORIZATION AVG BASE_TABLE + syn keyword plsqlSQLKeyword BEFORE BETWEEN BY CASCADE CAST CHECK CLUSTER + syn keyword plsqlSQLKeyword CLUSTERS COLAUTH COLUMN COMMENT COMPRESS CONNECT + syn keyword plsqlSQLKeyword CONSTRAINT CRASH CURRENT DATA DATABASE + syn keyword plsqlSQLKeyword DATA_BASE DBA DEFAULT DELAY DELETE DESC DISTINCT + syn keyword plsqlSQLKeyword DROP DUAL EXCLUSIVE EXISTS EXTENDS EXTRACT + syn keyword plsqlSQLKeyword FILE FORCE FOREIGN FROM GRANT GROUP HAVING HEAP + syn keyword plsqlSQLKeyword IDENTIFIED IDENTIFIER IMMEDIATE IN INCLUDING + syn keyword plsqlSQLKeyword INCREMENT INDEX INDEXES INITIAL INSERT INSTEAD + syn keyword plsqlSQLKeyword INTERSECT INTO INVALIDATE ISOLATION KEY LIBRARY + syn keyword plsqlSQLKeyword LIKE LOCK MAXEXTENTS MINUS MODE MODIFY MULTISET + syn keyword plsqlSQLKeyword NESTED NOAUDIT NOCOMPRESS NOT NOWAIT OF OFF OFFLINE + syn keyword plsqlSQLKeyword ON ONLINE OPERATOR OPTION ORDER ORGANIZATION + syn keyword plsqlSQLKeyword PCTFREE PRIMARY PRIOR PRIVATE PRIVILEGES PUBLIC + syn keyword plsqlSQLKeyword QUOTA RELEASE RENAME REPLACE RESOURCE REVOKE ROLLBACK + syn keyword plsqlSQLKeyword ROW ROWLABEL ROWS SCHEMA + syn match plsqlSQLKeyword "\<SELECT\>" + syn keyword plsqlSQLKeyword SEPARATE SESSION SET + syn keyword plsqlSQLKeyword SHARE SIZE SPACE START STORE SUCCESSFUL SYNONYM + syn keyword plsqlSQLKeyword SYSDATE TABLE TABLES TABLESPACE TEMPORARY TO TREAT + syn keyword plsqlSQLKeyword TRIGGER TRUNCATE UID UNION UNIQUE UNLIMITED UPDATE + syn keyword plsqlSQLKeyword USE USER VALIDATE VALUES VIEW WHENEVER WHERE WITH +endif + +" The built-in types. +syn keyword plsqlStorage CHAR BYTE VARCHAR2 NCHAR NVARCHAR2 +syn keyword plsqlStorage NUMBER FLOAT BINARY_FLOAT BINARY_DOUBLE LONG RAW +syn keyword plsqlStorage DATE TIMESTAMP INTERVAL LOCAL TIME ZONE TO MONTH SECOND YEAR DAY +syn keyword plsqlStorage BLOB CLOB NCLOB BFILE UROWID +syn keyword plsqlStorage CHARACTER VARYING VARCHAR NATIONAL CHARACTER +syn keyword plsqlStorage NUMERIC DECIMAL DEC INTEGER INT SMALLINT +syn keyword plsqlStorage FLOAT DOUBLE PRECISION REAL +syn keyword plsqlStorage SDO_GEOMETRY SDO_TOPO_GEOMETRY SDO_GEORASTER +syn keyword plsqlStorage REF ANYTYPE ANYDATA ANYDATASET XMLTYPE HTTPURITYPE XDBURITYPE DUBRITYPE +syn keyword plsqlStorage BOOLEAN PLS_INTEGER BINARY_INTEGER SIMPLE_FLOAT SIMPLE_INTEGER SIMPLE_DOUBLE SYS_REFCURSOR +" " PL/SQL Exceptions syn keyword plsqlException ACCESS_INTO_NULL CASE_NOT_FOUND COLLECTION_IS_NULL syn keyword plsqlException CURSOR_ALREADY_OPEN DUP_VAL_ON_INDEX INVALID_CURSOR @@ -139,32 +565,30 @@ syn keyword plsqlException SUBSCRIPT_OUTSIDE_LIMIT SYS_INVALID_ROWID syn keyword plsqlException TIMEOUT_ON_RESOURCE TOO_MANY_ROWS VALUE_ERROR syn keyword plsqlException ZERO_DIVIDE -" Oracle Pseudo Colums. -syn keyword plsqlPseudo CURRVAL LEVEL NEXTVAL ROWID ROWNUM - if exists("plsql_highlight_triggers") - syn keyword plsqlTrigger INSERTING UPDATING DELETING + syn keyword plsqlTrigger INSERTING UPDATING DELETING endif -" Conditionals. -syn keyword plsqlConditional ELSIF ELSE IF -syn match plsqlConditional "\<END\s\+IF\>" - -" Loops. -syn keyword plsqlRepeat FOR LOOP WHILE FORALL -syn match plsqlRepeat "\<END\s\+LOOP\>" +" so can not contain it for folding. May no longer be necessary and can change them to plsqlKeyword +syn match plsqlBEGIN "\<BEGIN\>" +syn match plsqlEND "\<END\>" +syn match plsqlISAS "\<\(IS\|AS\)\>" " Various types of comments. -if exists("c_comment_strings") - syntax match plsqlCommentSkip contained "^\s*\*\($\|\s\+\)" - syntax region plsqlCommentString contained start=+L\="+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=plsqlCommentSkip - syntax region plsqlComment2String contained start=+L\="+ skip=+\\\\\|\\"+ end=+"+ end="$" - syntax region plsqlCommentL start="--" skip="\\$" end="$" keepend contains=@plsqlCommentGroup,plsqlComment2String,plsqlCharLiteral,plsqlBooleanLiteral,plsqlNumbersCom,plsqlSpaceError - syntax region plsqlComment start="/\*" end="\*/" contains=@plsqlCommentGroup,plsqlComment2String,plsqlCharLiteral,plsqlBooleanLiteral,plsqlNumbersCom,plsqlSpaceError +syntax region plsqlCommentL start="--" skip="\\$" end="$" keepend extend contains=@plsqlCommentGroup,plsqlSpaceError +if exists("plsql_fold") + syntax region plsqlComment + \ start="/\*" end="\*/" + \ extend + \ contains=@plsqlCommentGroup,plsqlSpaceError + \ fold else - syntax region plsqlCommentL start="--" skip="\\$" end="$" keepend contains=@plsqlCommentGroup,plsqlSpaceError - syntax region plsqlComment start="/\*" end="\*/" contains=@plsqlCommentGroup,plsqlSpaceError + syntax region plsqlComment + \ start="/\*" end="\*/" + \ extend + \ contains=@plsqlCommentGroup,plsqlSpaceError endif +syn cluster plsqlCommentAll contains=plsqlCommentL,plsqlComment syn sync ccomment plsqlComment syn sync ccomment plsqlCommentL @@ -173,28 +597,38 @@ syn sync ccomment plsqlCommentL syn match plsqlStringError "'.*$" " Various types of literals. -syn match plsqlNumbers transparent "\<[+-]\=\d\|[+-]\=\.\d" contains=plsqlIntLiteral,plsqlFloatLiteral -syn match plsqlNumbersCom contained transparent "\<[+-]\=\d\|[+-]\=\.\d" contains=plsqlIntLiteral,plsqlFloatLiteral -syn match plsqlIntLiteral contained "[+-]\=\d\+" -syn match plsqlFloatLiteral contained "[+-]\=\d\+\.\d*" -syn match plsqlFloatLiteral contained "[+-]\=\d*\.\d*" -syn match plsqlCharLiteral "'[^']'" -syn match plsqlStringLiteral "'\([^']\|''\)*'" -syn keyword plsqlBooleanLiteral TRUE FALSE NULL +" the + and - get sucked up as operators. Not sure how to take precedence here. Something to do with word boundaries. +" most other syntax files do not try to includ +/- in the number token, so leave them as unary operators +" even though the oracle documentation counts the sign as part of the numeric literal +syn match plsqlNumbers transparent "\<\d\|\.\d" contains=plsqlIntLiteral,plsqlFloatLiteral +syn match plsqlNumbersCom contained transparent "\<\d\|\.\d" contains=plsqlIntLiteral,plsqlFloatLiteral +syn match plsqlIntLiteral contained "\d\+" +syn match plsqlFloatLiteral contained "\d\+\.\(\d\+\([eE][+-]\?\d\+\)\?\)\?[fd]\?" +syn match plsqlFloatLiteral contained "\.\(\d\+\([eE][+-]\?\d\+\)\?\)[fd]\?" -" The built-in types. -syn keyword plsqlStorage ANYDATA ANYTYPE BFILE BINARY_INTEGER BLOB BOOLEAN -syn keyword plsqlStorage BYTE CHAR CHARACTER CLOB CURSOR DATE DAY DEC DECIMAL -syn keyword plsqlStorage DOUBLE DSINTERVAL_UNCONSTRAINED FLOAT HOUR -syn keyword plsqlStorage INT INTEGER INTERVAL LOB LONG MINUTE -syn keyword plsqlStorage MLSLABEL MONTH NATURAL NATURALN NCHAR NCHAR_CS NCLOB -syn keyword plsqlStorage NUMBER NUMERIC NVARCHAR PLS_INT PLS_INTEGER -syn keyword plsqlStorage POSITIVE POSITIVEN PRECISION RAW REAL RECORD -syn keyword plsqlStorage SECOND SIGNTYPE SMALLINT STRING SYS_REFCURSOR TABLE TIME -syn keyword plsqlStorage TIMESTAMP TIMESTAMP_UNCONSTRAINED -syn keyword plsqlStorage TIMESTAMP_TZ_UNCONSTRAINED -syn keyword plsqlStorage TIMESTAMP_LTZ_UNCONSTRAINED UROWID VARCHAR -syn keyword plsqlStorage VARCHAR2 YEAR YMINTERVAL_UNCONSTRAINED ZONE +" double quoted strings in SQL are database object names. Should be a subgroup of Normal. +" We will use Character group as a proxy for that so color can be chosen close to Normal +syn region plsqlQuotedIdentifier matchgroup=plsqlOperator start=+n\?"+ end=+"+ keepend extend +syn cluster plsqlIdentifiers contains=plsqlIdentifier,plsqlQuotedIdentifier + +" quoted string literals +if exists("plsql_fold") + syn region plsqlStringLiteral matchgroup=plsqlOperator start=+n\?'+ skip=+''+ end=+'+ fold keepend extend + syn region plsqlStringLiteral matchgroup=plsqlOperator start=+n\?q'\z([^[(<{]\)+ end=+\z1'+ fold keepend extend + syn region plsqlStringLiteral matchgroup=plsqlOperator start=+n\?q'<+ end=+>'+ fold keepend extend + syn region plsqlStringLiteral matchgroup=plsqlOperator start=+n\?q'{+ end=+}'+ fold keepend extend + syn region plsqlStringLiteral matchgroup=plsqlOperator start=+n\?q'(+ end=+)'+ fold keepend extend + syn region plsqlStringLiteral matchgroup=plsqlOperator start=+n\?q'\[+ end=+]'+ fold keepend extend +else + syn region plsqlStringLiteral matchgroup=plsqlOperator start=+n\?'+ skip=+''+ end=+'+ + syn region plsqlStringLiteral matchgroup=plsqlOperator start=+n\?q'\z([^[(<{]\)+ end=+\z1'+ + syn region plsqlStringLiteral matchgroup=plsqlOperator start=+n\?q'<+ end=+>'+ + syn region plsqlStringLiteral matchgroup=plsqlOperator start=+n\?q'{+ end=+}'+ + syn region plsqlStringLiteral matchgroup=plsqlOperator start=+n\?q'(+ end=+)'+ + syn region plsqlStringLiteral matchgroup=plsqlOperator start=+n\?q'\[+ end=+]'+ +endif + +syn keyword plsqlBooleanLiteral TRUE FALSE " A type-attribute is really a type. syn match plsqlTypeAttribute "%\(TYPE\|ROWTYPE\)\>" @@ -204,61 +638,183 @@ syn match plsqlAttribute "%\(BULK_EXCEPTIONS\|BULK_ROWCOUNT\|ISOPEN\|FOUND\|NOTF " This'll catch mis-matched close-parens. syn cluster plsqlParenGroup contains=plsqlParenError,@plsqlCommentGroup,plsqlCommentSkip,plsqlIntLiteral,plsqlFloatLiteral,plsqlNumbersCom -if exists("c_no_bracket_error") - syn region plsqlParen transparent start='(' end=')' contains=ALLBUT,@plsqlParenGroup - syn match plsqlParenError ")" - syn match plsqlErrInParen contained "[{}]" + +if exists("plsql_bracket_error") + " I suspect this code was copied from c.vim and never properly considered. Do + " we even use braces or brackets in sql or pl/sql? + if exists("plsql_fold") + syn region plsqlParen start='(' end=')' contains=ALLBUT,@plsqlParenGroup,plsqlErrInBracket fold keepend extend transparent + else + syn region plsqlParen transparent start='(' end=')' contains=ALLBUT,@plsqlParenGroup,plsqlErrInBracket + endif + syn match plsqlParenError "[\])]" + syn match plsqlErrInParen contained "[{}]" + syn region plsqlBracket transparent start='\[' end=']' contains=ALLBUT,@plsqlParenGroup,plsqlErrInParen + syn match plsqlErrInBracket contained "[);{}]" else - syn region plsqlParen transparent start='(' end=')' contains=ALLBUT,@plsqlParenGroup,plsqlErrInBracket - syn match plsqlParenError "[\])]" - syn match plsqlErrInParen contained "[{}]" - syn region plsqlBracket transparent start='\[' end=']' contains=ALLBUT,@plsqlParenGroup,plsqlErrInParen - syn match plsqlErrInBracket contained "[);{}]" + if exists("plsql_fold") + syn region plsqlParen start='(' end=')' contains=ALLBUT,@plsqlParenGroup,plsqlErrInParen fold keepend extend transparent + else + syn region plsqlParen transparent start='(' end=')' contains=ALLBUT,@plsqlParenGroup,plsqlErrInParen + endif + syn match plsqlParenError ")" + " should this not be parens isntead of brackets? I never quite followed what this was doing + syn match plsqlErrInParen contained "[{}]" endif -" Syntax Synchronizing -syn sync minlines=10 maxlines=100 +syn match plsqlReserved "\<BODY\>" +syn match plsqlReserved "\<CREATE\_s\+\(OR\_s\+REPLACE\_s\+\)\?" +" Loops +syn match plsqlRepeat "\<\(FOR\|WHILE\|LOOP\|FORALL\)\>" +syn match plsqlRepeat "\<END\_s\+LOOP\>" +" conditionals +syn match plsqlConditional "\<\(ELSIF\|IF\|ELSE\)\>" +syn match plsqlConditional "\<END\>\_s\+\<IF\>" +syn match plsqlCase "\<END\>\_s\+\<CASE\>" +syn match plsqlCase "\<CASE\>" + +if exists("plsql_fold") + setlocal foldmethod=syntax + syn sync fromstart + + syn cluster plsqlProcedureGroup contains=plsqlProcedure + syn cluster plsqlOnlyGroup contains=@plsqlProcedure,plsqlConditionalBlock,plsqlLoopBlock,plsqlBlock + + syntax region plsqlUpdateSet + \ start="\(\<update\>\_s\+\(\<set\>\)\@![a-z][a-z0-9$_#]*\_s\+\(\(\<set\>\)\@![a-z][a-z0-9$_#]*\_s\+\)\?\)\|\(\<when\>\_s\+\<matched\>\_s\+\<then\>\_s\+\<update\>\_s\+\)\<set\>" + \ end="\(\_s*\(;\|\<from\>\|\<where\>\|\<when\>\)\)\@=" + \ fold + \ keepend + \ extend + \ transparent + \ contains=ALLBUT,@plsqlOnlyGroup,plsqlSelect + + syntax region plsqlSelect + \ start="\<select\>" + \ end="\(\_s*\<from\>\)\@=" + \ fold + \ keepend + \ extend + \ transparent + \ contains=ALLBUT,@plsqlOnlyGroup,plsqlUpdateSet + + " this is brute force and requires you have the procedure/function name in the END + " statement. ALthough Oracle makes it optional, we cannot. If you do not + " have it, then you can fold the BEGIN/END block of the procedure but not + " the specification of it (other than a paren group). You also cannot fold + " BEGIN/END blocks in the procedure body. Local procedures will fold as + " long as the END statement includes the procedure/function name. + " As for why we cannot make it work any other way, I don't know. It is + " something to do with both plsqlBlock and plsqlProcedure both consuming BEGIN and END, + " even if we use a lookahead for one of them. + syntax region plsqlProcedure + "\ start="\(create\(\_s\+or\_s\+replace\)\?\_s\+\)\?\<\(procedure\|function\)\>\_s\+\z([a-z][a-z0-9$_#]*\)" + \ start="\<\(procedure\|function\)\>\_s\+\(\z([a-z][a-z0-9$_#]*\)\)\([^;]\|\n\)\{-}\<\(is\|as\)\>\_.\{-}\(\<end\>\_s\+\2\_s*;\)\@=" + \ end="\<end\>\_s\+\z1\_s*;" + \ fold + \ keepend + \ extend + \ transparent + \ contains=ALLBUT,plsqlBlock + syntax region plsqlBlock + \ start="\<begin\>" + "\ end="\<end\>\_s*\;" + \ end="\<end\>\(\_s\+\(if\|loop\|case\)\@![a-z][a-z0-9$_#]*\)\?\_s*;" + \ fold + \ transparent + \ contains=ALLBUT,@plsqlProcedureGroup,plsqlPackage,plsqlErrInBracket,PlsqlProcedureJava + \ keepend + \ extend + + syn region plsqlCaseBlock + \ transparent + \ start="\<case\>\(\_s*;\)\@!" + \ end="\<end\>\(\_s\+case\_s*;\)\?" + \ fold + \ contains=ALLBUT,@plsqlProcedureGroup,plsqlPackage,plsqlErrInBracket,PlsqlProcedureJava + \ keepend + \ extend + "\ contained + + syntax region plsqlLoopBlock + \ transparent + \ start="\<loop\>\(\_s*;\)\@!" + \ end="\<end\>\(\_s\+\<loop\>\)\?\_s*;" + \ fold + \ keepend extend + \ contained + \ contains=ALLBUT,@plsqlProcedureGroup,plsqlPackage,plsqlErrInBracket,PlsqlProcedureJava + + syn region plsqlConditionalBlock + \ transparent + \ start="\<if\>\(\_s*;\)\@!" + \ end="\<end\>\_s\+\<if\>\_s*;" + \ fold + \ keepend extend + \ contained + \ contains=ALLBUT,@plsqlProcedureGroup,plsqlPackage,plsqlErrInBracket,PlsqlProcedureJava + +else + " Syntax Synchronizing + syn sync minlines=1000 maxlines=2000 +endif +" " Define the default highlighting. " Only when an item doesn't have highlighting yet. -hi def link plsqlAttribute Macro -hi def link plsqlBlockError Error -hi def link plsqlBooleanLiteral Boolean -hi def link plsqlCharLiteral Character -hi def link plsqlComment Comment -hi def link plsqlCommentL Comment -hi def link plsqlConditional Conditional -hi def link plsqlError Error -hi def link plsqlErrInBracket Error -hi def link plsqlErrInBlock Error -hi def link plsqlErrInParen Error -hi def link plsqlException Function -hi def link plsqlFloatLiteral Float -hi def link plsqlFunction Function -hi def link plsqlGarbage Error -hi def link plsqlHostIdentifier Label -hi def link plsqlIdentifier Normal -hi def link plsqlIntLiteral Number -hi def link plsqlOperator Operator -hi def link plsqlParen Normal -hi def link plsqlParenError Error -hi def link plsqlSpaceError Error -hi def link plsqlPseudo PreProc -hi def link plsqlKeyword Keyword -hi def link plsqlRepeat Repeat -hi def link plsqlStorage StorageClass -hi def link plsqlSQLKeyword Function -hi def link plsqlStringError Error -hi def link plsqlStringLiteral String -hi def link plsqlCommentString String -hi def link plsqlComment2String String -hi def link plsqlSymbol Normal -hi def link plsqlTrigger Function -hi def link plsqlTypeAttribute StorageClass -hi def link plsqlTodo Todo - +hi def link plsqlAttribute Macro +hi def link plsqlBlockError Error +hi def link plsqlBooleanLiteral Boolean +hi def link plsqlQuotedIdentifier Character +hi def link plsqlComment Comment +hi def link plsqlCommentL Comment +hi def link plsqlConditional Conditional +hi def link plsqlCase Conditional +hi def link plsqlError Error +hi def link plsqlErrInBracket Error +hi def link plsqlErrInBlock Error +hi def link plsqlErrInParen Error +hi def link plsqlException Function +hi def link plsqlFloatLiteral Float +hi def link plsqlFunction Function +hi def link plsqlGarbage Error +hi def link plsqlHostIdentifier Label +hi def link plsqlIdentifier Normal +hi def link plsqlIntLiteral Number +hi def link plsqlOperator Operator +hi def link plsqlParenError Error +hi def link plsqlSpaceError Error +hi def link plsqlPseudo PreProc +hi def link plsqlKeyword Keyword +hi def link plsqlEND Keyword +hi def link plsqlBEGIN Keyword +hi def link plsqlISAS Statement +hi def link plsqlReserved Statement +hi def link plsqlRepeat Repeat +hi def link plsqlStorage StorageClass +hi def link plsqlFunction Function +hi def link plsqlStringError Error +hi def link plsqlStringLiteral String +hi def link plsqlCommentString String +hi def link plsqlComment2String String +hi def link plsqlTrigger Function +hi def link plsqlTypeAttribute StorageClass +hi def link plsqlTodo Todo +" to be able to change them after loading, need override whether defined or not +if exists("plsql_legacy_sql_keywords") + hi link plsqlSQLKeyword Function + hi link plsqlSymbol Normal + hi link plsqlParen Normal +else + hi link plsqlSymbol Special + hi link plsqlParen Special +endif let b:current_syntax = "plsql" -" vim: ts=8 sw=2 +" restore setting from when we entered this file +let &cpo = s:cpo_sav +unlet! s:cpo_sav + +" vim: ts=4 sw=4 diff --git a/runtime/syntax/pod.vim b/runtime/syntax/pod.vim index 604713260b..90c9b99a3e 100644 --- a/runtime/syntax/pod.vim +++ b/runtime/syntax/pod.vim @@ -2,9 +2,10 @@ " Language: Perl POD format " Maintainer: vim-perl <vim-perl@googlegroups.com> " Previously: Scott Bigham <dsb@killerbunnies.org> -" Homepage: http://github.com/vim-perl/vim-perl -" Bugs/requests: http://github.com/vim-perl/vim-perl/issues -" Last Change: 2017-09-12 +" Homepage: https://github.com/vim-perl/vim-perl +" Bugs/requests: https://github.com/vim-perl/vim-perl/issues +" License: Vim License (see :help license) +" Last Change: 2022 Jun 13 " To add embedded POD documentation highlighting to your syntax file, add " the commands: @@ -27,71 +28,117 @@ endif let s:cpo_save = &cpo set cpo&vim -" POD commands -syn match podCommand "^=encoding" nextgroup=podCmdText contains=@NoSpell -syn match podCommand "^=head[1234]" nextgroup=podCmdText contains=@NoSpell -syn match podCommand "^=item" nextgroup=podCmdText contains=@NoSpell -syn match podCommand "^=over" nextgroup=podOverIndent skipwhite contains=@NoSpell -syn match podCommand "^=back" contains=@NoSpell -syn match podCommand "^=cut" contains=@NoSpell -syn match podCommand "^=pod" contains=@NoSpell -syn match podCommand "^=for" nextgroup=podForKeywd skipwhite contains=@NoSpell -syn match podCommand "^=begin" nextgroup=podForKeywd skipwhite contains=@NoSpell -syn match podCommand "^=end" nextgroup=podForKeywd skipwhite contains=@NoSpell +" TODO: add supported encodings when we can utilize better performing Vim 8 features +syn match podEncoding "[0-9A-Za-z_-]\+" contained contains=@NoSpell " Text of a =head1, =head2 or =item command -syn match podCmdText ".*$" contained contains=podFormat,@NoSpell +syn region podCmdText start="\S.*$" end="^\ze\s*$" end="^\ze=cut\>" contained contains=podFormat,@NoSpell " Indent amount of =over command -syn match podOverIndent "\d\+" contained contains=@NoSpell +syn match podOverIndent "\d*\.\=\d\+\>" contained contains=@NoSpell " Formatter identifier keyword for =for, =begin and =end commands syn match podForKeywd "\S\+" contained contains=@NoSpell " An indented line, to be displayed verbatim -syn match podVerbatimLine "^\s.*$" contains=@NoSpell +syn region podVerbatim start="^\s\+\S.*$" end="^\ze\s*$" end="^\ze=cut\>" contains=@NoSpell + +syn region podOrdinary start="^\S.*$" end="^\ze\s*$" end="^\ze=cut\>" contains=podFormat,podSpecial,@Spell " Inline textual items handled specially by POD syn match podSpecial "\(\<\|&\)\I\i*\(::\I\i*\)*([^)]*)" contains=@NoSpell syn match podSpecial "[$@%]\I\i*\(::\I\i*\)*\>" contains=@NoSpell " Special formatting sequences -syn region podFormat start="[IBSCLFX]<[^<]"me=e-1 end=">" oneline contains=podFormat,@NoSpell -syn region podFormat start="[IBSCLFX]<<\s" end="\s>>" oneline contains=podFormat,@NoSpell + +syn cluster podFormat contains=podFormat,podFormatError + +syn match podFormatError "[ADGHJKM-RT-WY]<" + +syn region podFormat matchgroup=podFormatDelimiter start="[IBSCLFX]<" end=">" contains=@podFormat,@NoSpell +syn region podFormat matchgroup=podFormatDelimiter start="[IBSCLFX]<<\%(\s\+\|$\)" end="\%(\s\+\|^\)>>" contains=@podFormat,@NoSpell + syn match podFormat "Z<>" -syn match podFormat "E<\(\d\+\|\I\i*\)>" contains=podEscape,podEscape2,@NoSpell -syn match podEscape "\I\i*>"me=e-1 contained contains=@NoSpell -syn match podEscape2 "\d\+>"me=e-1 contained contains=@NoSpell + +syn region podFormat matchgroup=podFormatDelimiter start="E<" end=">" oneline contains=podEscape,podEscape2,@NoSpell + +" HTML entities {{{1 +" Source: Pod/Escapes.pm +syn keyword podEscape contained lt gt quot amp apos sol verbar lchevron rchevron nbsp iexcl cent pound curren yen brvbar sect uml copy ordf laquo not shy reg macr deg plusmn sup2 sup3 acute micro para middot cedil sup1 ordm raquo frac14 frac12 frac34 iquest Agrave Aacute Acirc Atilde Auml Aring AElig Ccedil Egrave Eacute Ecirc Euml Igrave Iacute Icirc Iuml ETH Ntilde Ograve Oacute Ocirc Otilde Ouml times Oslash Ugrave Uacute Ucirc Uuml Yacute THORN szlig agrave aacute acirc atilde auml aring aelig ccedil egrave eacute ecirc euml igrave iacute icirc iuml eth ntilde ograve oacute ocirc otilde ouml divide oslash ugrave uacute ucirc uuml yacute thorn yuml fnof Alpha Beta Gamma Delta Epsilon Zeta Eta Theta Iota Kappa Lambda Mu Nu Xi Omicron Pi Rho Sigma Tau Upsilon Phi Chi Psi Omega alpha beta gamma delta epsilon zeta eta theta iota kappa lambda mu nu xi omicron pi rho sigmaf sigma tau upsilon phi chi psi omega thetasym upsih piv bull hellip prime Prime oline frasl weierp image real trade alefsym larr uarr rarr darr harr crarr lArr uArr rArr dArr hArr forall part exist empty nabla isin notin ni prod sum minus lowast radic prop infin ang and or cap cup int there4 sim cong asymp ne equiv le ge sub sup nsub sube supe oplus otimes perp sdot lceil rceil lfloor rfloor lang rang loz spades clubs hearts diams OElig oelig Scaron scaron Yuml circ tilde ensp emsp thinsp zwnj zwj lrm rlm ndash mdash lsquo rsquo sbquo ldquo rdquo bdquo dagger Dagger permil lsaquo rsaquo +" }}} + +syn match podEscape2 "\d\+" contained contains=@NoSpell +syn match podEscape2 "0\=x\x\+" contained contains=@NoSpell +syn match podEscape2 "0\o\+" contained contains=@NoSpell + + +" POD commands +syn match podCommand "^=encoding\>" nextgroup=podEncoding skipwhite contains=@NoSpell +syn match podCommand "^=head[1234]\>" nextgroup=podCmdText skipwhite skipnl contains=@NoSpell +syn match podCommand "^=item\>" nextgroup=podCmdText skipwhite skipnl contains=@NoSpell +syn match podCommand "^=over\>" nextgroup=podOverIndent skipwhite contains=@NoSpell +syn match podCommand "^=back" contains=@NoSpell +syn match podCommand "^=cut" contains=@NoSpell +syn match podCommand "^=pod" contains=@NoSpell +syn match podCommand "^=for" nextgroup=podForKeywd skipwhite contains=@NoSpell +syn match podCommand "^=begin" nextgroup=podForKeywd skipwhite contains=@NoSpell +syn match podCommand "^=end" nextgroup=podForKeywd skipwhite contains=@NoSpell + +" Comments + +syn keyword podForKeywd comment contained nextgroup=podForComment skipwhite skipnl + +if exists("perl_pod_no_comment_fold") + syn region podBeginComment start="^=begin\s\+comment\s*$" end="^=end\s\+comment\ze\s*$" keepend extend contains=podCommand + syn region podForComment start="\S.*$" end="^\ze\s*$" end="^\ze=cut\>" contained contains=@Spell,podTodo +else + syn region podBeginComment start="^=begin\s\+comment\s*$" end="^=end\s\+comment\ze\s*$" keepend extend contains=podCommand,podTodo fold + syn region podForComment start="\S.*$" end="^\ze\s*$" end="^\ze=cut\>" contained contains=@Spell,podTodo fold +endif + +syn keyword podTodo contained TODO FIXME XXX + +" Plain Pod files +syn region podNonPod start="\%^\%(=\w\+\>\)\@!" end="^\ze=\a\w*\>" +syn region podNonPod matchgroup=podCommand start="^=cut\>" end="\%$" +syn region podNonPod matchgroup=podCommand start="^=cut\>" end="^\ze=\a\w*\>" " Define the default highlighting. " Only when an item doesn't have highlighting yet hi def link podCommand Statement +hi def link podBeginComment Comment +hi def link podForComment Comment +hi def link podNonPod Comment +hi def link podTodo Todo hi def link podCmdText String +hi def link podEncoding Constant hi def link podOverIndent Number hi def link podForKeywd Identifier +hi def link podVerbatim PreProc hi def link podFormat Identifier -hi def link podVerbatimLine PreProc +hi def link podFormatDelimiter podFormat +hi def link podFormatError Error hi def link podSpecial Identifier -hi def link podEscape String +hi def link podEscape Constant hi def link podEscape2 Number if exists("perl_pod_spellcheck_headings") " Spell-check headings syn clear podCmdText - syn match podCmdText ".*$" contained contains=podFormat + syn region podCmdText start="\S.*$" end="^\s*$" end="^\ze=cut\>" contained contains=podFormat endif if exists("perl_pod_formatting") " By default, escapes like C<> are not checked for spelling. Remove B<> " and I<> from the list of escapes. syn clear podFormat - syn region podFormat start="[CLF]<[^<]"me=e-1 end=">" oneline contains=podFormat,@NoSpell - syn region podFormat start="[CLF]<<\s" end="\s>>" oneline contains=podFormat,@NoSpell + syn region podFormat start="[CLF]<[^<]"me=e-1 end=">" contains=@podFormat,@NoSpell + syn region podFormat start="[CLF]<<\%(\s\+\|$\)" end="\%(\s\+\|^\)>>" contains=@podFormat,@NoSpell " Don't spell-check inside E<>, but ensure that the E< itself isn't " marked as a spelling mistake. - syn match podFormat "E<\(\d\+\|\I\i*\)>" contains=podEscape,podEscape2,@NoSpell + syn region podFormat start="E<" end=">" oneline contains=podEscape,podEscape2,@NoSpell " Z<> is a mock formatting code. Ensure Z<> on its own isn't marked as a " spelling mistake. @@ -105,41 +152,41 @@ if exists("perl_pod_formatting") syn match podIndexOpen "X<" contains=@NoSpell " Same as above but for the << >> syntax. - syn match podBoldAlternativeDelimOpen "B<< " contains=@NoSpell - syn match podItalicAlternativeDelimOpen "I<< " contains=@NoSpell - syn match podNoSpaceAlternativeDelimOpen "S<< " contains=@NoSpell - syn match podIndexAlternativeDelimOpen "X<< " contains=@NoSpell + syn match podBoldAlternativeDelimOpen "B<<\%(\s\+\|$\)" contains=@NoSpell + syn match podItalicAlternativeDelimOpen "I<<\%(\s\+\|$\)" contains=@NoSpell + syn match podNoSpaceAlternativeDelimOpen "S<<\%(\s\+\|$\)" contains=@NoSpell + syn match podIndexAlternativeDelimOpen "X<<\%(\s\+\|$\)" contains=@NoSpell " Add support for spell checking text inside B<>, I<>, S<> and X<>. - syn region podBold start="B<[^<]"me=e end=">" oneline contains=podBoldItalic,podBoldOpen - syn region podBoldAlternativeDelim start="B<<\s" end="\s>>" oneline contains=podBoldAlternativeDelimOpen + syn region podBold start="B<[^<]"me=e end=">" contains=podBoldItalic,podBoldOpen + syn region podBoldAlternativeDelim start="B<<\%(\s\+\|$\)" end="\%(\s\+\|^\)>>" contains=podBoldAlternativeDelimOpen - syn region podItalic start="I<[^<]"me=e end=">" oneline contains=podItalicBold,podItalicOpen - syn region podItalicAlternativeDelim start="I<<\s" end="\s>>" oneline contains=podItalicAlternativeDelimOpen + syn region podItalic start="I<[^<]"me=e end=">" contains=podItalicBold,podItalicOpen + syn region podItalicAlternativeDelim start="I<<\%(\s\+\|$\)" end="\%(\s\+\|^\)>>" contains=podItalicAlternativeDelimOpen " Nested bold/italic and vice-versa - syn region podBoldItalic contained start="I<[^<]"me=e end=">" oneline - syn region podItalicBold contained start="B<[^<]"me=e end=">" oneline + syn region podBoldItalic contained start="I<[^<]"me=e end=">" + syn region podItalicBold contained start="B<[^<]"me=e end=">" - syn region podNoSpace start="S<[^<]"ms=s-2 end=">"me=e oneline contains=podNoSpaceOpen - syn region podNoSpaceAlternativeDelim start="S<<\s"ms=s-2 end="\s>>"me=e oneline contains=podNoSpaceAlternativeDelimOpen + syn region podNoSpace start="S<[^<]"ms=s-2 end=">"me=e contains=podNoSpaceOpen + syn region podNoSpaceAlternativeDelim start="S<<\%(\s\+\|$\)"ms=s-2 end="\%(\s\+\|^\)>>"me=e contains=podNoSpaceAlternativeDelimOpen - syn region podIndex start="X<[^<]"ms=s-2 end=">"me=e oneline contains=podIndexOpen - syn region podIndexAlternativeDelim start="X<<\s"ms=s-2 end="\s>>"me=e oneline contains=podIndexAlternativeDelimOpen + syn region podIndex start="X<[^<]"ms=s-2 end=">"me=e contains=podIndexOpen + syn region podIndexAlternativeDelim start="X<<\%(\s\+\|$\)"ms=s-2 end="\%(\s\+\|^\)>>"me=e contains=podIndexAlternativeDelimOpen " Restore this (otherwise B<> is shown as bold inside verbatim) - syn match podVerbatimLine "^\s.*$" contains=@NoSpell + syn region podVerbatim start="^\s\+\S.*$" end="^\ze\s*$" end="^\ze=cut\>" contains=@NoSpell " Ensure formatted text can be displayed in headings and items syn clear podCmdText if exists("perl_pod_spellcheck_headings") - syn match podCmdText ".*$" contained contains=podFormat,podBold, + syn match podCmdText ".*$" contained contains=@podFormat,podBold, \podBoldAlternativeDelim,podItalic,podItalicAlternativeDelim, \podBoldOpen,podItalicOpen,podBoldAlternativeDelimOpen, \podItalicAlternativeDelimOpen,podNoSpaceOpen else - syn match podCmdText ".*$" contained contains=podFormat,podBold, + syn match podCmdText ".*$" contained contains=@podFormat,podBold, \podBoldAlternativeDelim,podItalic,podItalicAlternativeDelim, \@NoSpell endif @@ -172,4 +219,4 @@ let b:current_syntax = "pod" let &cpo = s:cpo_save unlet s:cpo_save -" vim: ts=8 +" vim: ts=8 fdm=marker: diff --git a/runtime/syntax/qb64.vim b/runtime/syntax/qb64.vim new file mode 100644 index 0000000000..a777e14481 --- /dev/null +++ b/runtime/syntax/qb64.vim @@ -0,0 +1,409 @@ +" Vim syntax file +" Language: QB64 +" Maintainer: Doug Kearns <dougkearns@gmail.com> +" Last Change: 2022 Jan 21 + +" Prelude {{{1 +if exists("b:current_syntax") + finish +endif + +let s:cpo_save = &cpo +set cpo&vim + +" syn iskeyword set after sourcing of basic.vim + +syn case ignore + +let s:prefix = search('\c^\s*$NOPREFIX\>', 'n') ? '_\=' : '_' + +" Statements {{{1 + +let s:statements =<< trim EOL " {{{2 + acceptfiledrop + allowfullscreen + assert + console + consolecursor + consolefont + consoletitle + continue + copypalette + define + delay + depthbuffer + displayorder + dontblend + echo + exit\s\+\%(select\|case\) + finishdrop + freefont + freeimage + icon + keyclear + limit + maptriangle + memcopy + memfill + memfree + memput + mousehide + mousemove + mouseshow + printimage + printstring + putimage + screenclick + screenhide + screenmove + screenprint + screenshow + setalpha + sndbal + sndclose + sndlimit + sndloop + sndpause + sndplay + sndplaycopy + sndplayfile + sndraw + sndrawdone + sndsetpos + sndstop + sndvol + title +EOL +" }}} + +for s in s:statements + exe 'syn match qb64Statement "\<' .. s:prefix .. s .. '\>" contained contains=qb64Underscore' +endfor + +" Functions {{{1 + +let s:functions =<< trim EOL " {{{2 + acos + acosh + alpha + alpha32 + arccot + arccsc + arcsec + asin + asinh + atan2 + atanh + axis + backgroundcolor + blue + blue32 + button + buttonchange + ceil + cinp + commandcount + connected + connectionaddress + connectionaddress$ + consoleinput + copyimage + cot + coth + cosh + csc + csch + cv + cwd$ + d2g + d2r + defaultcolor + deflate$ + desktopheight + desktopwidth + device$ + deviceinput + devices + dir$ + direxists + droppedfile + droppedfile$ + errorline + errormessage$ + exit + fileexists + fontheight + fontwidth + freetimer + g2d + g2r + green + green32 + height + hypot + inclerrorfile$ + inclerrorline + inflate$ + instrrev + keyhit + keydown + lastaxis + lastbutton + lastwheel + loadfont + loadimage + mem + memelement + memexists + memimage + memnew + memsound + mk$ + mousebutton + mouseinput + mousemovementx + mousemovementy + mousepipeopen + mousewheel + mousex + mousey + newimage + offset + openclient + os$ + pi + pixelsize + printwidth + r2d + r2g + red + red32 + readbit + resetbit + resizeheight + resizewidth + rgb + rgb32 + rgba + rgba32 + round + sec + sech + screenexists + screenimage + screenx + screeny + setbit + shellhide + shl + shr + sinh + sndcopy + sndgetpos + sndlen + sndopen + sndopenraw + sndpaused + sndplaying + sndrate + sndrawlen + startdir$ + strcmp + stricmp + tanh + title$ + togglebit + totaldroppedfiles + trim$ + wheel + width + windowhandle + windowhasfocus +EOL +" }}} + +for f in s:functions + exe 'syn match qb64Function "\<' .. s:prefix .. f .. '\>" contains=qb64Underscore' +endfor + +" Functions and statements (same name) {{{1 + +let s:common =<< trim EOL " {{{2 + autodisplay + blend + blink + capslock + clearcolor + clipboard$ + clipboardimage + controlchr + dest + display + font + fullscreen + mapunicode + memget + numlock + palettecolor + printmode + resize + screenicon + scrolllock + source +EOL +" }}} + +for c in s:common + exe 'syn match qb64Statement "\<' .. s:prefix .. c .. '\>" contains=qb64Underscore contained' + exe 'syn match qb64Function "\<' .. s:prefix .. c .. '\>" contains=qb64Underscore' +endfor + +" Keywords {{{1 + +" Non-prefixed keywords {{{2 +" TIMER FREE +" _DEPTH_BUFFER LOCK +syn keyword qb64Keyword free lock + +let s:keywords =<< trim EOL " {{{2 + all + anticlockwise + behind + clear + clip + console + dontwait + explicit + explicitarray + fillbackground + hardware + hardware1 + hide + keepbackground + middle + none + off + only + onlybackground + ontop + openconnection + openhost + preserve + seamless + smooth + smoothshrunk + smoothstretched + software + squarepixels + stretch + toggle +EOL +" }}} + +for k in s:keywords + exe 'syn match qb64Keyword "\<' .. s:prefix .. k .. '\>" contains=qb64Underscore' +endfor + +syn match qb64Underscore "\<_" contained conceal transparent + +" Source QuickBASIC syntax {{{1 +runtime! syntax/basic.vim + +" add after the BASIC syntax file is sourced so cluster already exists +syn cluster basicStatements add=qb64Statement,qb64Metacommand,qb64IfMetacommand +syn cluster basicLineIdentifier add=qb64LineLabel +syn cluster qb64NotTop contains=@basicNotTop,qb64Metavariable + +syn iskeyword @,48-57,.,_,!,#,$,%,&,` + +" Unsupported QuickBASIC features {{{1 +" TODO: add linux only missing features +syn keyword qb64Unsupported alias any byval calls cdecl erdev erdev$ fileattr +syn keyword qb64Unsupported fre ioctl ioctl$ pen play setmem signal uevent +syn keyword qb64Unsupported tron troff +syn match qb64Unsupported "\<declare\%(\s\+\%(sub\|function\)\>\)\@=" +syn match qb64Unsupported "\<\%(date\|time\)$\ze\s*=" " statements only +syn match qb64Unsupported "\<def\zs\s\+FN" +syn match qb64Unsupported "\<\%(exit\|end\)\s\+def\>" +syn match qb64Unsupported "\<width\s\+lprint\>" + +" Types {{{1 +syn keyword qb64Type _BIT _BYTE _FLOAT _INTEGER64 _MEM _OFFSET _UNSIGNED + +" Type suffixes {{{1 +if exists("basic_type_suffixes") + " TODO: handle leading word boundary and __+ prefix + syn match qb64TypeSuffix "\%(\a[[:alnum:]._]*\)\@<=\~\=`\%(\d\+\)\=" + syn match qb64TypeSuffix "\%(\a[[:alnum:]._]*\)\@<=\~\=\%(%\|%%\|&\|&&\|%&\)" + syn match qb64TypeSuffix "\%(\a[[:alnum:]._]*\)\@<=\%(!\|##\|#\)" + syn match qb64TypeSuffix "\%(\a[[:alnum:]._]*\)\@<=$\%(\d\+\)\=" +endif + +" Numbers {{{1 + +" Integers +syn match qb64Number "-\=&b[01]\+&\>\=" + +syn match qb64Number "-\=\<[01]\~\=`\>" +syn match qb64Number "-\=\<\d\+`\d\+\>" + +syn match qb64Number "-\=\<\d\+\%(%%\|&&\|%&\)\>" +syn match qb64Number "\<\d\+\~\%(%%\|&&\|%&\)\>" + +syn match qb64Number "-\=\<&b[01]\+\%(%%\|&&\|%&\)\>" +syn match qb64Number "\<&b[01]\+\~\%(%%\|&&\|%&\)\>" + +syn match qb64Number "-\=\<&o\=\o\+\%(%%\|&&\|%&\)\>" +syn match qb64Number "\<&o\=\o\+\~\%(%%\|&&\|%&\)\>" + +syn match qb64Number "-\=\<&h\x\+\%(%%\|&&\|%&\)\>" +syn match qb64Number "\<&h\x\+\~\%(%%\|&&\|%&\)\>" + +" Floats +syn match qb64Float "-\=\<\d\+\.\=\d*##\>" +syn match qb64Float "-\=\<\.\d\+##\>" + +" Line numbers and labels {{{1 +syn match qb64LineLabel "\%(_\{2,}\)\=\a[[:alnum:]._]*[[:alnum:]]\ze\s*:" nextgroup=@basicStatements skipwhite contained + +" Metacommands {{{1 +syn match qb64Metacommand contained "$NOPREFIX\>" +syn match qb64Metacommand contained "$ASSERTS\%(:CONSOLE\)\=\>" +syn match qb64Metacommand contained "$CHECKING:\%(ON\|OFF\)\>" +syn match qb64Metacommand contained "$COLOR:\%(0\|32\)\>" +syn match qb64Metacommand contained "$CONSOLE\%(:ONLY\)\=\>" +syn match qb64Metacommand contained "$EXEICON\s*:\s*'[^']\+'" +syn match qb64Metacommand contained "$ERROR\>" +syn match qb64Metacommand contained "$LET\>" +syn match qb64Metacommand contained "$RESIZE:\%(ON\|OFF\|STRETCH\|SMOOTH\)\>" +syn match qb64Metacommand contained "$SCREEN\%(HIDE\|SHOW\)\>" +syn match qb64Metacommand contained "$VERSIONINFO\s*:.*" +syn match qb64Metacommand contained "$VIRTUALKEYBOARD:\%(ON\|OFF\)\>" + +syn region qb64IfMetacommand contained matchgroup=qb64Metacommand start="$\%(IF\|ELSEIF\)\>" end="\<THEN\>" oneline transparent contains=qb64Metavariable +syn match qb64Metacommand contained "$\%(ELSE\|END\s*IF\)\>" + +syn keyword qb64Metavariable contained defined undefined +syn keyword qb64Metavariable contained windows win linux mac maxosx +syn keyword qb64Metavariable contained 32bit 64bit version + +" Default Highlighting {{{1 +hi def link qb64Float basicFloat +hi def link qb64Function Function +hi def link qb64Keyword Keyword +hi def link qb64LineLabel basicLineLabel +hi def link qb64Metacommand PreProc +hi def link qb64Metavariable Identifier +hi def link qb64Number basicNumber +hi def link qb64Statement Statement +hi def link qb64TypeSuffix basicTypeSuffix +hi def link qb64Type Type +hi def link qb64Unsupported Error + +" Postscript {{{1 +let b:current_syntax = "qb64" + +let &cpo = s:cpo_save +unlet s:cpo_save + +" vim: nowrap sw=2 sts=2 ts=8 noet fdm=marker: diff --git a/runtime/syntax/query.lua b/runtime/syntax/query.lua new file mode 100644 index 0000000000..8f40b1cb8a --- /dev/null +++ b/runtime/syntax/query.lua @@ -0,0 +1,6 @@ +-- Neovim syntax file +-- Language: Tree-sitter query +-- Last Change: 2022 Apr 13 + +-- it's a lisp! +vim.cmd([[ runtime! syntax/lisp.vim ]]) diff --git a/runtime/syntax/rc.vim b/runtime/syntax/rc.vim index 4c6856bc83..d69edd00fd 100644 --- a/runtime/syntax/rc.vim +++ b/runtime/syntax/rc.vim @@ -1,7 +1,7 @@ " Vim syntax file " Language: M$ Resource files (*.rc) " Maintainer: Christian Brabandt -" Last Change: 2015-05-29 +" Last Change: 20220116 " Repository: https://github.com/chrisbra/vim-rc-syntax " License: Vim (see :h license) " Previous Maintainer: Heiko Erhardt <Heiko.Erhardt@munich.netsurf.de> @@ -173,16 +173,17 @@ hi def link rcAttribute rcCommonAttribute hi def link rcStdId rcStatement hi def link rcStatement Statement -" Default color overrides -hi def rcLanguage term=reverse ctermbg=Red ctermfg=Yellow guibg=Red guifg=Yellow -hi def rcMainObject term=underline ctermfg=Blue guifg=Blue -hi def rcSubObject ctermfg=Green guifg=Green -hi def rcCaptionParam term=underline ctermfg=DarkGreen guifg=Green -hi def rcParam ctermfg=DarkGreen guifg=DarkGreen -hi def rcStatement ctermfg=DarkGreen guifg=DarkGreen -hi def rcCommonAttribute ctermfg=Brown guifg=Brown +hi def link rcLanguage Constant +hi def link rcCaptionParam Constant +hi def link rcCommonAttribute Constant + +hi def link rcMainObject Identifier +hi def link rcSubObject Define +hi def link rcParam Constant +hi def link rcStatement Statement +" +"hi def link rcIdentifier Identifier -"hi def link rcIdentifier Identifier let b:current_syntax = "rc" diff --git a/runtime/syntax/ruby.vim b/runtime/syntax/ruby.vim index 13d6d9efd8..c951fcfe1d 100644 --- a/runtime/syntax/ruby.vim +++ b/runtime/syntax/ruby.vim @@ -3,7 +3,7 @@ " Maintainer: Doug Kearns <dougkearns@gmail.com> " URL: https://github.com/vim-ruby/vim-ruby " Release Coordinator: Doug Kearns <dougkearns@gmail.com> -" Last Change: 2021 Jun 06 +" Last Change: 2021 Nov 03 " ---------------------------------------------------------------------------- " " Previous Maintainer: Mirko Nasato @@ -66,7 +66,7 @@ endfunction com! -nargs=* SynFold call s:run_syntax_fold(<q-args>) " Not-Top Cluster {{{1 -syn cluster rubyNotTop contains=@rubyCommentNotTop,@rubyStringNotTop,@rubyRegexpSpecial,@rubyDeclaration,@rubyExceptionHandler,@rubyClassOperator,rubyConditional,rubyModuleName,rubyClassName,rubySymbolDelimiter,rubyParentheses,@Spell +syn cluster rubyNotTop contains=@rubyCommentNotTop,@rubyStringNotTop,@rubyRegexpSpecial,@rubyDeclaration,@rubyExceptionHandler,@rubyClassOperator,rubyConditional,rubyModuleName,rubyClassName,rubySymbolDelimiter,rubyDoubleQuoteSymbolDelimiter,rubySingleQuoteSymbolDelimiter,rubyParentheses,@Spell " Whitespace Errors {{{1 if exists("ruby_space_errors") @@ -364,6 +364,9 @@ if !exists("b:ruby_no_expensive") && !exists("ruby_no_expensive") SynFold 'class' syn region rubyClassBlock start="\<class\>" matchgroup=rubyClass skip="\<end:" end="\<end\>" contains=ALLBUT,@rubyNotTop SynFold 'module' syn region rubyModuleBlock start="\<module\>" matchgroup=rubyModule skip="\<end:" end="\<end\>" contains=ALLBUT,@rubyNotTop + " endless def + syn match rubyDefine "\<def\s\+\ze[^[:space:];#(]\+\%(\s\+\|\s*(.*)\s*\)=" nextgroup=rubyMethodDeclaration skipwhite + " modifiers syn match rubyLineContinuation "\\$" nextgroup=@rubyModifier skipwhite skipnl syn match rubyConditionalModifier "\<\%(if\|unless\)\>" @@ -430,9 +433,10 @@ endif " Comments and Documentation {{{1 syn match rubySharpBang "\%^#!.*" display syn keyword rubyTodo FIXME NOTE TODO OPTIMIZE HACK REVIEW XXX todo contained -syn match rubyEncoding "[[:alnum:]-]\+" contained display +syn match rubyEncoding "[[:alnum:]-_]\+" contained display syn match rubyMagicComment "\c\%<3l#\s*\zs\%(coding\|encoding\):" contained nextgroup=rubyEncoding skipwhite syn match rubyMagicComment "\c\%<10l#\s*\zs\%(frozen_string_literal\|warn_indent\|warn_past_scope\):" contained nextgroup=rubyBoolean skipwhite +syn match rubyMagicComment "\c\%<10l#\s*\zs\%(shareable_constant_value\):" contained nextgroup=rubyEncoding skipwhite syn match rubyComment "#.*" contains=@rubyCommentSpecial,rubySpaceError,@Spell syn cluster rubyCommentSpecial contains=rubySharpBang,rubyTodo,rubyMagicComment @@ -465,6 +469,10 @@ syn match rubyDefinedOperator "\%#=1\<defined?" display syn match rubySymbol "\%(\w\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*[?!]\=::\@!"he=e-1 contained containedin=rubyBlockParameterList,rubyCurlyBlock syn match rubySymbol "[]})\"':]\@1<!\<\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*[!?]\=:[[:space:],;]\@="he=e-1 syn match rubySymbol "[[:space:],{(]\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*[!?]\=:[[:space:],;]\@="hs=s+1,he=e-1 +syn match rubySingleQuoteSymbolDelimiter "'" contained +syn match rubySymbol "'\%(\\.\|[^']\)*'::\@!"he=e-1 contains=rubyQuoteEscape,rubyBackslashEscape,rubySingleQuoteSymbolDelimiter +syn match rubyDoubleQuoteSymbolDelimiter "\"" contained +syn match rubySymbol "\"\%(\\.\|[^\"]\)*\"::\@!"he=e-1 contains=@rubyStringSpecial,rubyDoubleQuoteSymbolDelimiter " __END__ Directive {{{1 SynFold '__END__' syn region rubyData matchgroup=rubyDataDirective start="^__END__$" end="\%$" @@ -565,6 +573,8 @@ hi def link rubyHeredocDelimiter rubyStringDelimiter hi def link rubyPercentRegexpDelimiter rubyRegexpDelimiter hi def link rubyPercentStringDelimiter rubyStringDelimiter hi def link rubyPercentSymbolDelimiter rubySymbolDelimiter +hi def link rubyDoubleQuoteSymbolDelimiter rubySymbolDelimiter +hi def link rubySingleQuoteSymbolDelimiter rubySymbolDelimiter hi def link rubyRegexpDelimiter rubyStringDelimiter hi def link rubySymbolDelimiter rubySymbol hi def link rubyString String diff --git a/runtime/syntax/sass.vim b/runtime/syntax/sass.vim index b51a0ae26b..8f41aba4f7 100644 --- a/runtime/syntax/sass.vim +++ b/runtime/syntax/sass.vim @@ -2,7 +2,7 @@ " Language: Sass " Maintainer: Tim Pope <vimNOSPAM@tpope.org> " Filenames: *.sass -" Last Change: 2019 Dec 05 +" Last Change: 2022 Mar 15 if exists("b:current_syntax") finish @@ -58,6 +58,7 @@ syn match sassAmpersand "&" " TODO: Arithmetic (including strings and concatenation) syn region sassMediaQuery matchgroup=sassMedia start="@media" end="[{};]\@=\|$" contains=sassMediaOperators +syn region sassKeyframe matchgroup=cssAtKeyword start=/@\(-[a-z]\+-\)\=keyframes\>/ end=";\|$" contains=cssVendor,cssComment nextgroup=cssDefinition syn keyword sassMediaOperators and not only contained syn region sassCharset start="@charset" end=";\|$" contains=scssComment,cssStringQ,cssStringQQ,cssURL,cssUnicodeEscape,cssMediaType syn region sassInclude start="@import" end=";\|$" contains=scssComment,cssStringQ,cssStringQQ,cssURL,cssUnicodeEscape,cssMediaType diff --git a/runtime/syntax/scala.vim b/runtime/syntax/scala.vim index 16e114778d..c08e60e55a 100644 --- a/runtime/syntax/scala.vim +++ b/runtime/syntax/scala.vim @@ -3,7 +3,7 @@ " Maintainer: Derek Wyatt " URL: https://github.com/derekwyatt/vim-scala " License: Same as Vim -" Last Change: 23 August 2021 +" Last Change: 23 January 2022 " ---------------------------------------------------------------------------- if !exists('main_syntax') @@ -43,55 +43,55 @@ syn keyword scalaKeyword class trait object extends with nextgroup=scalaInstance syn keyword scalaKeyword case nextgroup=scalaKeyword,scalaCaseFollowing skipwhite syn keyword scalaKeyword val nextgroup=scalaNameDefinition,scalaQuasiQuotes skipwhite syn keyword scalaKeyword def var nextgroup=scalaNameDefinition skipwhite -hi link scalaKeyword Keyword +hi def link scalaKeyword Keyword exe 'syn region scalaBlock start=/{/ end=/}/ contains=' . s:ContainedGroup() . ' fold' syn keyword scalaAkkaSpecialWord when goto using startWith initialize onTransition stay become unbecome -hi link scalaAkkaSpecialWord PreProc +hi def link scalaAkkaSpecialWord PreProc syn keyword scalatestSpecialWord shouldBe syn match scalatestShouldDSLA /^\s\+\zsit should/ syn match scalatestShouldDSLB /\<should\>/ -hi link scalatestSpecialWord PreProc -hi link scalatestShouldDSLA PreProc -hi link scalatestShouldDSLB PreProc +hi def link scalatestSpecialWord PreProc +hi def link scalatestShouldDSLA PreProc +hi def link scalatestShouldDSLB PreProc syn match scalaSymbol /'[_A-Za-z0-9$]\+/ -hi link scalaSymbol Number +hi def link scalaSymbol Number syn match scalaChar /'.'/ syn match scalaChar /'\\[\\"'ntbrf]'/ contains=scalaEscapedChar syn match scalaChar /'\\u[A-Fa-f0-9]\{4}'/ contains=scalaUnicodeChar syn match scalaEscapedChar /\\[\\"'ntbrf]/ syn match scalaUnicodeChar /\\u[A-Fa-f0-9]\{4}/ -hi link scalaChar Character -hi link scalaEscapedChar Special -hi link scalaUnicodeChar Special +hi def link scalaChar Character +hi def link scalaEscapedChar Special +hi def link scalaUnicodeChar Special syn match scalaOperator "||" syn match scalaOperator "&&" syn match scalaOperator "|" syn match scalaOperator "&" -hi link scalaOperator Special +hi def link scalaOperator Special syn match scalaNameDefinition /\<[_A-Za-z0-9$]\+\>/ contained nextgroup=scalaPostNameDefinition,scalaVariableDeclarationList syn match scalaNameDefinition /`[^`]\+`/ contained nextgroup=scalaPostNameDefinition syn match scalaVariableDeclarationList /\s*,\s*/ contained nextgroup=scalaNameDefinition syn match scalaPostNameDefinition /\_s*:\_s*/ contained nextgroup=scalaTypeDeclaration -hi link scalaNameDefinition Function +hi def link scalaNameDefinition Function syn match scalaInstanceDeclaration /\<[_\.A-Za-z0-9$]\+\>/ contained nextgroup=scalaInstanceHash syn match scalaInstanceDeclaration /`[^`]\+`/ contained syn match scalaInstanceHash /#/ contained nextgroup=scalaInstanceDeclaration -hi link scalaInstanceDeclaration Special -hi link scalaInstanceHash Type +hi def link scalaInstanceDeclaration Special +hi def link scalaInstanceHash Type syn match scalaUnimplemented /???/ -hi link scalaUnimplemented ERROR +hi def link scalaUnimplemented ERROR syn match scalaCapitalWord /\<[A-Z][A-Za-z0-9$]*\>/ -hi link scalaCapitalWord Special +hi def link scalaCapitalWord Special " Handle type declarations specially syn region scalaTypeStatement matchgroup=Keyword start=/\<type\_s\+\ze/ end=/$/ contains=scalaTypeTypeDeclaration,scalaSquareBrackets,scalaTypeTypeEquals,scalaTypeStatement @@ -105,18 +105,18 @@ syn match scalaTypeTypeEquals /=\ze[^>]/ contained nextgroup=scalaTypeTypePostDe syn match scalaTypeTypeExtension /)\?\_s*\zs\%(⇒\|=>\|<:\|:>\|=:=\|::\|#\)/ contained contains=scalaTypeOperator nextgroup=scalaTypeTypeDeclaration skipwhite syn match scalaTypeTypePostDeclaration /\<[_\.A-Za-z0-9$]\+\>/ contained nextgroup=scalaTypeTypePostExtension skipwhite syn match scalaTypeTypePostExtension /\%(⇒\|=>\|<:\|:>\|=:=\|::\)/ contained contains=scalaTypeOperator nextgroup=scalaTypeTypePostDeclaration skipwhite -hi link scalaTypeTypeDeclaration Type -hi link scalaTypeTypeExtension Keyword -hi link scalaTypeTypePostDeclaration Special -hi link scalaTypeTypePostExtension Keyword +hi def link scalaTypeTypeDeclaration Type +hi def link scalaTypeTypeExtension Keyword +hi def link scalaTypeTypePostDeclaration Special +hi def link scalaTypeTypePostExtension Keyword syn match scalaTypeDeclaration /(/ contained nextgroup=scalaTypeExtension contains=scalaRoundBrackets skipwhite syn match scalaTypeDeclaration /\%(⇒\|=>\)\ze/ contained nextgroup=scalaTypeDeclaration contains=scalaTypeExtension skipwhite syn match scalaTypeDeclaration /\<[_\.A-Za-z0-9$]\+\>/ contained nextgroup=scalaTypeExtension skipwhite syn match scalaTypeExtension /)\?\_s*\zs\%(⇒\|=>\|<:\|:>\|=:=\|::\|#\)/ contained contains=scalaTypeOperator nextgroup=scalaTypeDeclaration skipwhite -hi link scalaTypeDeclaration Type -hi link scalaTypeExtension Keyword -hi link scalaTypePostExtension Keyword +hi def link scalaTypeDeclaration Type +hi def link scalaTypeExtension Keyword +hi def link scalaTypePostExtension Keyword syn match scalaTypeAnnotation /\%([_a-zA-Z0-9$\s]:\_s*\)\ze[_=(\.A-Za-z0-9$]\+/ skipwhite nextgroup=scalaTypeDeclaration contains=scalaRoundBrackets syn match scalaTypeAnnotation /)\_s*:\_s*\ze[_=(\.A-Za-z0-9$]\+/ skipwhite nextgroup=scalaTypeDeclaration @@ -124,51 +124,51 @@ hi clear scalaTypeAnnotation syn match scalaCaseFollowing /\<[_\.A-Za-z0-9$]\+\>/ contained contains=scalaCapitalWord syn match scalaCaseFollowing /`[^`]\+`/ contained contains=scalaCapitalWord -hi link scalaCaseFollowing Special +hi def link scalaCaseFollowing Special syn keyword scalaKeywordModifier abstract override final lazy implicit private protected sealed null super syn keyword scalaSpecialFunction implicitly require -hi link scalaKeywordModifier Function -hi link scalaSpecialFunction Function +hi def link scalaKeywordModifier Function +hi def link scalaSpecialFunction Function syn keyword scalaSpecial this true false ne eq syn keyword scalaSpecial new nextgroup=scalaInstanceDeclaration skipwhite syn match scalaSpecial "\%(=>\|⇒\|<-\|←\|->\|→\)" syn match scalaSpecial /`[^`]\+`/ " Backtick literals -hi link scalaSpecial PreProc +hi def link scalaSpecial PreProc syn keyword scalaExternal package import -hi link scalaExternal Include +hi def link scalaExternal Include syn match scalaStringEmbeddedQuote /\\"/ contained syn region scalaString start=/"/ end=/"/ contains=scalaStringEmbeddedQuote,scalaEscapedChar,scalaUnicodeChar -hi link scalaString String -hi link scalaStringEmbeddedQuote String +hi def link scalaString String +hi def link scalaStringEmbeddedQuote String syn region scalaIString matchgroup=scalaInterpolationBrackets start=/\<[a-zA-Z][a-zA-Z0-9_]*"/ skip=/\\"/ end=/"/ contains=scalaInterpolation,scalaInterpolationB,scalaEscapedChar,scalaUnicodeChar syn region scalaTripleIString matchgroup=scalaInterpolationBrackets start=/\<[a-zA-Z][a-zA-Z0-9_]*"""/ end=/"""\ze\%([^"]\|$\)/ contains=scalaInterpolation,scalaInterpolationB,scalaEscapedChar,scalaUnicodeChar -hi link scalaIString String -hi link scalaTripleIString String +hi def link scalaIString String +hi def link scalaTripleIString String syn match scalaInterpolation /\$[a-zA-Z0-9_$]\+/ contained exe 'syn region scalaInterpolationB matchgroup=scalaInterpolationBoundary start=/\${/ end=/}/ contained contains=' . s:ContainedGroup() -hi link scalaInterpolation Function +hi def link scalaInterpolation Function hi clear scalaInterpolationB syn region scalaFString matchgroup=scalaInterpolationBrackets start=/f"/ skip=/\\"/ end=/"/ contains=scalaFInterpolation,scalaFInterpolationB,scalaEscapedChar,scalaUnicodeChar syn match scalaFInterpolation /\$[a-zA-Z0-9_$]\+\(%[-A-Za-z0-9\.]\+\)\?/ contained exe 'syn region scalaFInterpolationB matchgroup=scalaInterpolationBoundary start=/${/ end=/}\(%[-A-Za-z0-9\.]\+\)\?/ contained contains=' . s:ContainedGroup() -hi link scalaFString String -hi link scalaFInterpolation Function +hi def link scalaFString String +hi def link scalaFInterpolation Function hi clear scalaFInterpolationB syn region scalaTripleString start=/"""/ end=/"""\%([^"]\|$\)/ contains=scalaEscapedChar,scalaUnicodeChar syn region scalaTripleFString matchgroup=scalaInterpolationBrackets start=/f"""/ end=/"""\%([^"]\|$\)/ contains=scalaFInterpolation,scalaFInterpolationB,scalaEscapedChar,scalaUnicodeChar -hi link scalaTripleString String -hi link scalaTripleFString String +hi def link scalaTripleString String +hi def link scalaTripleFString String -hi link scalaInterpolationBrackets Special -hi link scalaInterpolationBoundary Function +hi def link scalaInterpolationBrackets Special +hi def link scalaInterpolationBoundary Function syn match scalaNumber /\<0[dDfFlL]\?\>/ " Just a bare 0 syn match scalaNumber /\<[1-9]\d*[dDfFlL]\?\>/ " A multi-digit number - octal numbers with leading 0's are deprecated in Scala @@ -176,16 +176,16 @@ syn match scalaNumber /\<0[xX][0-9a-fA-F]\+[dDfFlL]\?\>/ " Hex number syn match scalaNumber /\%(\<\d\+\.\d*\|\.\d\+\)\%([eE][-+]\=\d\+\)\=[fFdD]\=/ " exponential notation 1 syn match scalaNumber /\<\d\+[eE][-+]\=\d\+[fFdD]\=\>/ " exponential notation 2 syn match scalaNumber /\<\d\+\%([eE][-+]\=\d\+\)\=[fFdD]\>/ " exponential notation 3 -hi link scalaNumber Number +hi def link scalaNumber Number syn region scalaRoundBrackets start="(" end=")" skipwhite contained contains=scalaTypeDeclaration,scalaSquareBrackets,scalaRoundBrackets syn region scalaSquareBrackets matchgroup=scalaSquareBracketsBrackets start="\[" end="\]" skipwhite nextgroup=scalaTypeExtension contains=scalaTypeDeclaration,scalaSquareBrackets,scalaTypeOperator,scalaTypeAnnotationParameter syn match scalaTypeOperator /[-+=:<>]\+/ contained syn match scalaTypeAnnotationParameter /@\<[`_A-Za-z0-9$]\+\>/ contained -hi link scalaSquareBracketsBrackets Type -hi link scalaTypeOperator Keyword -hi link scalaTypeAnnotationParameter Function +hi def link scalaSquareBracketsBrackets Type +hi def link scalaTypeOperator Keyword +hi def link scalaTypeAnnotationParameter Function syn match scalaShebang "\%^#!.*" display syn region scalaMultilineComment start="/\*" end="\*/" contains=scalaMultilineComment,scalaDocLinks,scalaParameterAnnotation,scalaCommentAnnotation,scalaTodo,scalaCommentCodeBlock,@Spell keepend fold @@ -195,20 +195,20 @@ syn match scalaParamAnnotationValue /[.`_A-Za-z0-9$]\+/ contained syn region scalaDocLinks start="\[\[" end="\]\]" contained syn region scalaCommentCodeBlock matchgroup=Keyword start="{{{" end="}}}" contained syn match scalaTodo "\vTODO|FIXME|XXX" contained -hi link scalaShebang Comment -hi link scalaMultilineComment Comment -hi link scalaDocLinks Function -hi link scalaParameterAnnotation Function -hi link scalaParamAnnotationValue Keyword -hi link scalaCommentAnnotation Function -hi link scalaCommentCodeBlock String -hi link scalaTodo Todo +hi def link scalaShebang Comment +hi def link scalaMultilineComment Comment +hi def link scalaDocLinks Function +hi def link scalaParameterAnnotation Function +hi def link scalaParamAnnotationValue Keyword +hi def link scalaCommentAnnotation Function +hi def link scalaCommentCodeBlock String +hi def link scalaTodo Todo syn match scalaAnnotation /@\<[`_A-Za-z0-9$]\+\>/ -hi link scalaAnnotation PreProc +hi def link scalaAnnotation PreProc syn match scalaTrailingComment "//.*$" contains=scalaTodo,@Spell -hi link scalaTrailingComment Comment +hi def link scalaTrailingComment Comment syn match scalaAkkaFSM /goto([^)]*)\_s\+\<using\>/ contains=scalaAkkaFSMGotoUsing syn match scalaAkkaFSM /stay\_s\+using/ @@ -221,8 +221,8 @@ syn match scalaAkkaFSM /onTermination/ syn match scalaAkkaFSM /whenUnhandled/ syn match scalaAkkaFSMGotoUsing /\<using\>/ syn match scalaAkkaFSMGotoUsing /\<goto\>/ -hi link scalaAkkaFSM PreProc -hi link scalaAkkaFSMGotoUsing PreProc +hi def link scalaAkkaFSM PreProc +hi def link scalaAkkaFSMGotoUsing PreProc let b:current_syntax = 'scala' diff --git a/runtime/syntax/scdoc.vim b/runtime/syntax/scdoc.vim index 25c9c5433b..0180f35027 100644 --- a/runtime/syntax/scdoc.vim +++ b/runtime/syntax/scdoc.vim @@ -1,6 +1,7 @@ " Syntax file for scdoc files -" Maintainer: Gregory Anders <greg@gpanders.com> -" Last Updated: 2021-08-04 +" Maintainer: Gregory Anders <contact@gpanders.com> +" Last Updated: 2022-05-09 +" Upstream: https://github.com/gpanders/vim-scdoc if exists('b:current_syntax') finish @@ -20,33 +21,43 @@ syntax match scdocIndentError "^[ ]\+" syntax match scdocLineBreak "++$" -syntax match scdocOrderedListMarker "^\s*\.\%(\s\+\S\)\@=" -syntax match scdocListMarker "^\s*-\%(\s\+\S\)\@=" +syntax region scdocOrderedListItem matchgroup=scdocOrderedListMarker start="^\z(\s*\)\." skip="^\z1 .*$" end="^" contains=scdocBold,scdocUnderline +syntax region scdocListItem matchgroup=scdocListMarker start="^\z(\s*\)-" skip="^\z1 .*$" end="^" contains=scdocBold,scdocUnderline -syntax match scdocTableStartMarker "^[\[|\]][\[\-\]]" -syntax match scdocTableMarker "^[|:][\[\-\] ]" +" Tables cannot start with a column +syntax match scdocTableError "^:" + +syntax region scdocTable matchgroup=scdocTableEntry start="^[\[|\]][\[\-\]<=>]" end="^$" contains=scdocTableEntry,scdocTableError,scdocTableContinuation,scdocBold,scdocUnderline,scdocPre +syntax match scdocTableError "^.*$" contained +syntax match scdocTableContinuation "^ \+\S\+" contained +syntax match scdocTableEntry "^[|:][\[\-\]<=> ]" contained +syntax match scdocTableError "^[|:][\[\-\]<=> ]\S.*$" contained syntax region scdocBold concealends matchgroup=scdocBoldDelimiter start="\\\@<!\*" end="\\\@<!\*" syntax region scdocUnderline concealends matchgroup=scdocUnderlineDelimiter start="\<\\\@<!_" end="\\\@<!_\>" syntax region scdocPre matchgroup=scdocPreDelimiter start="^\t*```" end="^\t*```" -hi link scdocFirstLineValid Comment -hi link scdocComment Comment -hi link scdocHeader Title -hi link scdocOrderedListMarker Statement -hi link scdocListMarker scdocOrderedListMarker -hi link scdocLineBreak Special -hi link scdocTableMarker Statement -hi link scdocTableStartMarker scdocTableMarker - -hi link scdocFirstLineError Error -hi link scdocCommentError Error -hi link scdocHeaderError Error -hi link scdocIndentError Error - -hi link scdocPreDelimiter Delimiter - -hi scdocBold term=bold cterm=bold gui=bold -hi scdocUnderline term=underline cterm=underline gui=underline -hi link scdocBoldDelimiter scdocBold -hi link scdocUnderlineDelimiter scdocUnderline +syntax sync minlines=50 + +hi default link scdocFirstLineValid Comment +hi default link scdocComment Comment +hi default link scdocHeader Title +hi default link scdocOrderedListMarker Statement +hi default link scdocListMarker scdocOrderedListMarker +hi default link scdocLineBreak Special +hi default link scdocTableSpecifier Statement +hi default link scdocTableEntry Statement + +hi default link scdocFirstLineError Error +hi default link scdocCommentError Error +hi default link scdocHeaderError Error +hi default link scdocIndentError Error +hi default link scdocTableError Error +hi default link scdocTableError Error + +hi default link scdocPreDelimiter Delimiter + +hi default scdocBold term=bold cterm=bold gui=bold +hi default scdocUnderline term=underline cterm=underline gui=underline +hi default link scdocBoldDelimiter scdocBold +hi default link scdocUnderlineDelimiter scdocUnderline diff --git a/runtime/syntax/sendpr.vim b/runtime/syntax/sendpr.vim index 2e07802047..2541b95c67 100644 --- a/runtime/syntax/sendpr.vim +++ b/runtime/syntax/sendpr.vim @@ -1,7 +1,7 @@ " Vim syntax file " Language: FreeBSD send-pr file " Maintainer: Hendrik Scholz <hendrik@scholz.net> -" Last Change: 2012 Feb 03 +" Last Change: 2022 Jun 14 " " http://raisdorf.net/files/misc/send-pr.vim @@ -31,5 +31,7 @@ hi def link sendprType Type hi def link sendprString String hi def link sendprLabel Label +let b:current_syntax = 'sendpr' + let &cpo = s:cpo_save unlet s:cpo_save diff --git a/runtime/syntax/sh.vim b/runtime/syntax/sh.vim index 731a514cb2..e44699faa5 100644 --- a/runtime/syntax/sh.vim +++ b/runtime/syntax/sh.vim @@ -2,8 +2,8 @@ " Language: shell (sh) Korn shell (ksh) bash (sh) " Maintainer: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM> " Previous Maintainer: Lennart Schultz <Lennart.Schultz@ecmwf.int> -" Last Change: Oct 26, 2021 -" Version: 199 +" Last Change: Jun 29, 2022 +" Version: 202 " URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_SH " For options and settings, please use: :help ft-sh-syntax " This file includes many ideas from Eric Brunet (eric.brunet@ens.fr) and heredoc fixes from Felipe Contreras @@ -138,7 +138,7 @@ syn cluster shErrorList contains=shDoError,shIfError,shInError,shCaseError,shEsa if exists("b:is_kornshell") || exists("b:is_bash") syn cluster ErrorList add=shDTestError endif -syn cluster shArithParenList contains=shArithmetic,shCaseEsac,shComment,shDeref,shDo,shDerefSimple,shEcho,shEscape,shNumber,shOperator,shPosnParm,shExSingleQuote,shExDoubleQuote,shHereString,shRedir,shSingleQuote,shDoubleQuote,shStatement,shVariable,shAlias,shTest,shCtrlSeq,shSpecial,shParen,bashSpecialVariables,bashStatement,shIf,shFor,shFunctionKey,shFunctionOne,shFunctionTwo +syn cluster shArithParenList contains=shArithmetic,shArithParen,shCaseEsac,shComment,shDeref,shDo,shDerefSimple,shEcho,shEscape,shNumber,shOperator,shPosnParm,shExSingleQuote,shExDoubleQuote,shHereString,shRedir,shSingleQuote,shDoubleQuote,shStatement,shVariable,shAlias,shTest,shCtrlSeq,shSpecial,shParen,bashSpecialVariables,bashStatement,shIf,shFor,shFunctionKey,shFunctionOne,shFunctionTwo syn cluster shArithList contains=@shArithParenList,shParenError syn cluster shCaseEsacList contains=shCaseStart,shCaseLabel,shCase,shCaseBar,shCaseIn,shComment,shDeref,shDerefSimple,shCaseCommandSub,shCaseExSingleQuote,shCaseSingleQuote,shCaseDoubleQuote,shCtrlSeq,@shErrorList,shStringSpecial,shCaseRange syn cluster shCaseList contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shCommandSubBQ,shComment,shDo,shEcho,shExpr,shFor,shHereDoc,shIf,shHereString,shRedir,shSetList,shSource,shStatement,shVariable,shCtrlSeq @@ -147,8 +147,8 @@ if exists("b:is_kornshell") || exists("b:is_bash") endif syn cluster shCommandSubList contains=shAlias,shArithmetic,shCmdParenRegion,shCommandSub,shComment,shCtrlSeq,shDeref,shDerefSimple,shDoubleQuote,shEcho,shEscape,shExDoubleQuote,shExpr,shExSingleQuote,shHereDoc,shNumber,shOperator,shOption,shPosnParm,shHereString,shRedir,shSingleQuote,shSpecial,shStatement,shSubSh,shTest,shVariable syn cluster shCurlyList contains=shNumber,shComma,shDeref,shDerefSimple,shDerefSpecial -" COMBAK: removing shEscape from shDblQuoteList fails ksh04:43 -syn cluster shDblQuoteList contains=shArithmetic,shCommandSub,shCommandSubBQ,shDeref,shDerefSimple,shPosnParm,shCtrlSeq,shSpecial,shSpecialDQ +" COMBAK: removing shEscape from shDblQuoteList fails ksh04:43 -- Jun 09, 2022: I don't see the problem with ksh04, so am reinstating shEscape +syn cluster shDblQuoteList contains=shArithmetic,shCommandSub,shCommandSubBQ,shDeref,shDerefSimple,shEscape,shPosnParm,shCtrlSeq,shSpecial,shSpecialDQ syn cluster shDerefList contains=shDeref,shDerefSimple,shDerefVar,shDerefSpecial,shDerefWordError,shDerefPSR,shDerefPPS syn cluster shDerefVarList contains=shDerefOffset,shDerefOp,shDerefVarArray,shDerefOpError syn cluster shEchoList contains=shArithmetic,shCommandSub,shCommandSubBQ,shDeref,shDerefSimple,shEscape,shExSingleQuote,shExDoubleQuote,shSingleQuote,shDoubleQuote,shCtrlSeq,shEchoQuote @@ -157,11 +157,12 @@ syn cluster shExprList2 contains=@shExprList1,@shCaseList,shTest syn cluster shFunctionList contains=@shCommandSubList,shCaseEsac,shColon,shComment,shDo,shEcho,shExpr,shFor,shHereDoc,shIf,shOption,shHereString,shRedir,shSetList,shSource,shStatement,shVariable,shOperator,shCtrlSeq if exists("b:is_kornshell") || exists("b:is_bash") syn cluster shFunctionList add=shRepeat,shDblBrace,shDblParen,shForPP + syn cluster shDerefList add=shCommandSubList,shEchoDeref endif syn cluster shHereBeginList contains=@shCommandSubList syn cluster shHereList contains=shBeginHere,shHerePayload syn cluster shHereListDQ contains=shBeginHere,@shDblQuoteList,shHerePayload -syn cluster shIdList contains=shCommandSub,shCommandSubBQ,shWrapLineOperator,shSetOption,shComment,shDeref,shDerefSimple,shHereString,shNumber,shOperator,shRedir,shExSingleQuote,shExDoubleQuote,shSingleQuote,shDoubleQuote,shExpr,shCtrlSeq,shStringSpecial,shAtExpr +syn cluster shIdList contains=shArithmetic,shCommandSub,shCommandSubBQ,shWrapLineOperator,shSetOption,shComment,shDeref,shDerefSimple,shHereString,shNumber,shOperator,shRedir,shExSingleQuote,shExDoubleQuote,shSingleQuote,shDoubleQuote,shExpr,shCtrlSeq,shStringSpecial,shAtExpr syn cluster shIfList contains=@shLoopList,shDblBrace,shDblParen,shFunctionKey,shFunctionOne,shFunctionTwo syn cluster shLoopList contains=@shCaseList,@shErrorList,shCaseEsac,shConditional,shDblBrace,shExpr,shFor,shIf,shOption,shSet,shTest,shTestOpr,shTouch if exists("b:is_kornshell") || exists("b:is_bash") @@ -179,6 +180,10 @@ syn cluster shForList contains=shTestOpr,shNumber,shDerefSimple,shDeref,shComman " This one is needed INSIDE a CommandSub, so that `echo bla` be correct syn region shEcho matchgroup=shStatement start="\<echo\>" skip="\\$" matchgroup=shEchoDelim end="$" matchgroup=NONE end="[<>;&|()`]"me=e-1 end="\d[<>]"me=e-2 end="#"me=e-1 contains=@shEchoList skipwhite nextgroup=shQuickComment syn region shEcho matchgroup=shStatement start="\<print\>" skip="\\$" matchgroup=shEchoDelim end="$" matchgroup=NONE end="[<>;&|()`]"me=e-1 end="\d[<>]"me=e-2 end="#"me=e-1 contains=@shEchoList skipwhite nextgroup=shQuickComment +if exists("b:is_kornshell") || exists("b:is_bash") || exists("b:is_posix") + syn region shEchoDeref contained matchgroup=shStatement start="\<echo\>" skip="\\$" matchgroup=shEchoDelim end="$" end="[<>;&|()`}]"me=e-1 end="\d[<>]"me=e-2 end="#"me=e-1 contains=@shEchoList skipwhite nextgroup=shQuickComment + syn region shEchoDeref contained matchgroup=shStatement start="\<print\>" skip="\\$" matchgroup=shEchoDelim end="$" end="[<>;&|()`}]"me=e-1 end="\d[<>]"me=e-2 end="#"me=e-1 contains=@shEchoList skipwhite nextgroup=shQuickComment +endif syn match shEchoQuote contained '\%(\\\\\)*\\["`'()]' " This must be after the strings, so that ... \" will be correct @@ -291,13 +296,15 @@ syn match shCaseStart contained skipwhite skipnl "(" nextgroup=shCase,shCaseBa syn match shCaseLabel contained skipwhite "\%(\\.\|[-a-zA-Z0-9_*.]\)\+" contains=shCharClass if exists("b:is_bash") ShFoldIfDoFor syn region shCase contained skipwhite skipnl matchgroup=shSnglCase start="\%(\\.\|[^#$()'" \t]\)\{-}\zs)" end=";;" end=";&" end=";;&" end="esac"me=s-1 contains=@shCaseList nextgroup=shCaseStart,shCase,shComment +elseif exists("b:is_kornshell") + ShFoldIfDoFor syn region shCase contained skipwhite skipnl matchgroup=shSnglCase start="\%(\\.\|[^#$()'" \t]\)\{-}\zs)" end=";;" end=";&" end="esac"me=s-1 contains=@shCaseList nextgroup=shCaseStart,shCase,shComment else ShFoldIfDoFor syn region shCase contained skipwhite skipnl matchgroup=shSnglCase start="\%(\\.\|[^#$()'" \t]\)\{-}\zs)" end=";;" end="esac"me=s-1 contains=@shCaseList nextgroup=shCaseStart,shCase,shComment endif ShFoldIfDoFor syn region shCaseEsac matchgroup=shConditional start="\<case\>" end="\<esac\>" contains=@shCaseEsacList syn keyword shCaseIn contained skipwhite skipnl in nextgroup=shCase,shCaseStart,shCaseBar,shComment,shCaseExSingleQuote,shCaseSingleQuote,shCaseDoubleQuote -if exists("b:is_bash") +if exists("b:is_bash") || exists("b:is_kornshell") syn region shCaseExSingleQuote matchgroup=shQuote start=+\$'+ skip=+\\\\\|\\.+ end=+'+ contains=shStringSpecial,shSpecial skipwhite skipnl nextgroup=shCaseBar contained elseif !exists("g:sh_no_error") syn region shCaseExSingleQuote matchgroup=Error start=+\$'+ skip=+\\\\\|\\.+ end=+'+ contains=shStringSpecial skipwhite skipnl nextgroup=shCaseBar contained @@ -329,10 +336,11 @@ syn match shEscape contained '\%(^\)\@!\%(\\\\\)*\\.' nextgroup=shComment " systems too, however, so the following syntax will flag $(..) as " an Error under /bin/sh. By consensus of vimdev'ers! if exists("b:is_kornshell") || exists("b:is_bash") || exists("b:is_posix") - syn region shCommandSub matchgroup=shCmdSubRegion start="\$(" skip='\\\\\|\\.' end=")" contains=@shCommandSubList + syn region shCommandSub matchgroup=shCmdSubRegion start="\$(\ze[^(]" skip='\\\\\|\\.' end=")" contains=@shCommandSubList syn region shArithmetic matchgroup=shArithRegion start="\$((" skip='\\\\\|\\.' end="))" contains=@shArithList syn region shArithmetic matchgroup=shArithRegion start="\$\[" skip='\\\\\|\\.' end="\]" contains=@shArithList syn match shSkipInitWS contained "^\s\+" + syn region shArithParen matchgroup=shArithRegion contained start="(" end=")" contains=@shArithParenList elseif !exists("g:sh_no_error") syn region shCommandSub matchgroup=Error start="\$(" end=")" contains=@shCommandSubList endif @@ -342,7 +350,7 @@ if exists("b:is_bash") syn cluster shCommandSubList add=bashSpecialVariables,bashStatement syn cluster shCaseList add=bashAdminStatement,bashStatement syn keyword bashSpecialVariables contained auto_resume BASH BASH_ALIASES BASH_ALIASES BASH_ARGC BASH_ARGC BASH_ARGV BASH_ARGV BASH_CMDS BASH_CMDS BASH_COMMAND BASH_COMMAND BASH_ENV BASH_EXECUTION_STRING BASH_EXECUTION_STRING BASH_LINENO BASH_LINENO BASHOPTS BASHOPTS BASHPID BASHPID BASH_REMATCH BASH_REMATCH BASH_SOURCE BASH_SOURCE BASH_SUBSHELL BASH_SUBSHELL BASH_VERSINFO BASH_VERSION BASH_XTRACEFD BASH_XTRACEFD CDPATH COLUMNS COLUMNS COMP_CWORD COMP_CWORD COMP_KEY COMP_KEY COMP_LINE COMP_LINE COMP_POINT COMP_POINT COMPREPLY COMPREPLY COMP_TYPE COMP_TYPE COMP_WORDBREAKS COMP_WORDBREAKS COMP_WORDS COMP_WORDS COPROC COPROC DIRSTACK EMACS EMACS ENV ENV EUID FCEDIT FIGNORE FUNCNAME FUNCNAME FUNCNEST FUNCNEST GLOBIGNORE GROUPS histchars HISTCMD HISTCONTROL HISTFILE HISTFILESIZE HISTIGNORE HISTSIZE HISTTIMEFORMAT HISTTIMEFORMAT HOME HOSTFILE HOSTNAME HOSTTYPE IFS IGNOREEOF INPUTRC LANG LC_ALL LC_COLLATE LC_CTYPE LC_CTYPE LC_MESSAGES LC_NUMERIC LC_NUMERIC LINENO LINES LINES MACHTYPE MAIL MAILCHECK MAILPATH MAPFILE MAPFILE OLDPWD OPTARG OPTERR OPTIND OSTYPE PATH PIPESTATUS POSIXLY_CORRECT POSIXLY_CORRECT PPID PROMPT_COMMAND PS1 PS2 PS3 PS4 PWD RANDOM READLINE_LINE READLINE_LINE READLINE_POINT READLINE_POINT REPLY SECONDS SHELL SHELL SHELLOPTS SHLVL TIMEFORMAT TIMEOUT TMPDIR TMPDIR UID - syn keyword bashStatement chmod clear complete du egrep expr fgrep find gnufind gnugrep grep less ls mkdir mv rm rmdir rpm sed sleep sort strip tail + syn keyword bashStatement chmod clear complete du egrep expr fgrep find gnufind gnugrep grep head less ls mkdir mv rm rmdir rpm sed sleep sort strip tail syn keyword bashAdminStatement daemon killall killproc nice reload restart start status stop syn keyword bashStatement command compgen endif @@ -351,7 +359,7 @@ if exists("b:is_kornshell") || exists("b:is_posix") syn cluster shCommandSubList add=kshSpecialVariables,kshStatement syn cluster shCaseList add=kshStatement syn keyword kshSpecialVariables contained CDPATH COLUMNS EDITOR ENV ERRNO FCEDIT FPATH HISTFILE HISTSIZE HOME IFS LINENO LINES MAIL MAILCHECK MAILPATH OLDPWD OPTARG OPTIND PATH PPID PS1 PS2 PS3 PS4 PWD RANDOM REPLY SECONDS SHELL TMOUT VISUAL - syn keyword kshStatement cat chmod clear cp du egrep expr fgrep find grep killall less ls mkdir mv nice printenv rm rmdir sed sort strip stty tail tput + syn keyword kshStatement cat chmod clear cp du egrep expr fgrep find grep head killall less ls mkdir mv nice printenv rm rmdir sed sort strip stty tail tput syn keyword kshStatement command setgroups setsenv endif @@ -368,7 +376,7 @@ endif syn match shNumber "\<\d\+\>#\=" syn match shNumber "\<-\=\.\=\d\+\>#\=" syn match shCtrlSeq "\\\d\d\d\|\\[abcfnrtv0]" contained -if exists("b:is_bash") +if exists("b:is_bash") || exists("b:is_kornshell") syn match shSpecial "[^\\]\(\\\\\)*\zs\\\o\o\o\|\\x\x\x\|\\c[^"]\|\\[abefnrtv]" contained syn match shSpecial "^\(\\\\\)*\zs\\\o\o\o\|\\x\x\x\|\\c[^"]\|\\[abefnrtv]" contained syn region shExSingleQuote matchgroup=shQuote start=+\$'+ skip=+\\\\\|\\.+ end=+'+ contains=shStringSpecial,shSpecial nextgroup=shSpecialNxt @@ -441,19 +449,24 @@ syn match shVar contained "\h\w*" syn region shAtExpr contained start="@(" end=")" contains=@shIdList if exists("b:is_bash") syn match shSet "^\s*set\ze\s\+$" - syn region shSetList oneline matchgroup=shSet start="\<\%(declare\|local\|export\)\>\ze[/a-zA-Z_]\@!" end="$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+#\|=" contains=@shIdList + syn region shSetList oneline matchgroup=shSet start="\<\%(declare\|local\|export\)\>\ze[/a-zA-Z_]\@!" end="$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+#\|=" contains=@shIdList syn region shSetList oneline matchgroup=shSet start="\<\%(set\|unset\)\>[/a-zA-Z_]\@!" end="\ze[;|#)]\|$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+=" contains=@shIdList nextgroup=shComment elseif exists("b:is_kornshell") || exists("b:is_posix") syn match shSet "^\s*set\ze\s\+$" if exists("b:is_dash") - syn region shSetList oneline matchgroup=shSet start="\<\%(local\)\>\ze[/]\@!" end="$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+[#=]" contains=@shIdList + syn region shSetList oneline matchgroup=shSet start="\<\%(local\)\>\ze[/]\@!" end="$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+[#=]" contains=@shIdList endif - syn region shSetList oneline matchgroup=shSet start="\<\(export\)\>\ze[/]\@!" end="$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+[#=]" contains=@shIdList + syn region shSetList oneline matchgroup=shSet start="\<\(export\)\>\ze[/]\@!" end="$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+[#=]" contains=@shIdList syn region shSetList oneline matchgroup=shSet start="\<\%(set\|unset\>\)\ze[/a-zA-Z_]\@!" end="\ze[;|#)]\|$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+[#=]" contains=@shIdList nextgroup=shComment else syn region shSetList oneline matchgroup=shSet start="\<\(set\|export\|unset\)\>\ze[/a-zA-Z_]\@!" end="\ze[;|#)]\|$" matchgroup=shSetListDelim end="\ze[}|);&]" matchgroup=NONE end="\ze\s\+[#=]" contains=@shIdList endif +" KornShell namespace: {{{1 +if exists("b:is_kornshell") + syn keyword shFunctionKey namespace skipwhite skipnl nextgroup=shFunctionTwo +endif + " Functions: {{{1 if !exists("b:is_posix") syn keyword shFunctionKey function skipwhite skipnl nextgroup=shFunctionTwo @@ -473,7 +486,7 @@ endif " Parameter Dereferencing: {{{1 " ======================== -if !exists("g:sh_no_error") +if !exists("g:sh_no_error") && !(exists("b:is_bash") || exists("b:is_kornshell") || exists("b:is_posix")) syn match shDerefWordError "[^}$[~]" contained endif syn match shDerefSimple "\$\%(\h\w*\|\d\)" nextgroup=@shNoZSList @@ -486,6 +499,13 @@ if exists("b:is_bash") || exists("b:is_kornshell") || exists("b:is_posix") syn region shDeref matchgroup=PreProc start="\${\$\$" end="}" contains=@shDerefList nextgroup=@shSpecialNoZS,shSpecialStart endif +" ksh: ${.sh.*} variables: {{{1 +" ======================================== +if exists("b:is_kornshell") +" syn match shDerefVar contained "[.]*" nextgroup=@shDerefVarList + syn match shDerefVar contained "\.\+" nextgroup=@shDerefVarList +endif + " ksh: ${!var[*]} array index list syntax: {{{1 " ======================================== if exists("b:is_kornshell") || exists("b:is_posix") diff --git a/runtime/syntax/sml.vim b/runtime/syntax/sml.vim index 53ff12a859..8f1af3f9bd 100644 --- a/runtime/syntax/sml.vim +++ b/runtime/syntax/sml.vim @@ -1,9 +1,10 @@ " Vim syntax file " Language: SML " Filenames: *.sml *.sig -" Maintainers: Markus Mottl <markus.mottl@gmail.com> -" Fabrizio Zeno Cornelli <zeno@filibusta.crema.unimi.it> -" Last Change: 2021 Oct 04 +" Maintainer: Markus Mottl <markus.mottl@gmail.com> +" Previous Maintainer: Fabrizio Zeno Cornelli +" <zeno@filibusta.crema.unimi.it> (invalid) +" Last Change: 2022 Apr 01 " 2015 Aug 31 - Fixed opening of modules (Ramana Kumar) " 2006 Oct 23 - Fixed character highlighting bug (MM) diff --git a/runtime/syntax/strace.vim b/runtime/syntax/strace.vim index 206c58919e..20516a1853 100644 --- a/runtime/syntax/strace.vim +++ b/runtime/syntax/strace.vim @@ -1,8 +1,7 @@ " Vim syntax file -" This is a GENERATED FILE. Please always refer to source file at the URI below. " Language: strace output " Maintainer: David Necas (Yeti) <yeti@physics.muni.cz> -" Last Change: 2015-01-16 +" Last Change: 2022 Jan 29 " Setup " quit when a syntax file was already loaded diff --git a/runtime/syntax/structurizr.vim b/runtime/syntax/structurizr.vim index 73629b1495..ab9e4ee609 100644 --- a/runtime/syntax/structurizr.vim +++ b/runtime/syntax/structurizr.vim @@ -1,7 +1,7 @@ " Vim syntax file " Language: Structurizr DSL " Maintainer: Bastian Venthur <venthur@debian.org> -" Last Change: 2021-08-16 +" Last Change: 2022-02-15 " Remark: For a language reference, see " https://github.com/structurizr/dsl @@ -30,6 +30,7 @@ syn keyword skeyword deployment syn keyword skeyword deploymentenvironment syn keyword skeyword deploymentgroup syn keyword skeyword deploymentnode +syn keyword skeyword description syn keyword skeyword dynamic syn keyword skeyword element syn keyword skeyword enterprise @@ -37,7 +38,6 @@ syn keyword skeyword exclude syn keyword skeyword filtered syn keyword skeyword group syn keyword skeyword healthcheck -syn keyword skeyword impliedrelationships syn keyword skeyword include syn keyword skeyword infrastructurenode syn keyword skeyword model @@ -51,6 +51,7 @@ syn keyword skeyword styles syn keyword skeyword systemcontext syn keyword skeyword systemlandscape syn keyword skeyword tags +syn keyword skeyword technology syn keyword skeyword terminology syn keyword skeyword theme syn keyword skeyword title @@ -63,7 +64,11 @@ syn match skeyword "\!adrs\s\+" syn match skeyword "\!constant\s\+" syn match skeyword "\!docs\s\+" syn match skeyword "\!identifiers\s\+" +syn match skeyword "\!impliedrelationships\s\+" syn match skeyword "\!include\s\+" +syn match skeyword "\!plugin\s\+" +syn match skeyword "\!ref\s\+" +syn match skeyword "\!script\s\+" syn region sstring oneline start='"' end='"' diff --git a/runtime/syntax/synload.vim b/runtime/syntax/synload.vim index bfcd3b06da..b88cd95103 100644 --- a/runtime/syntax/synload.vim +++ b/runtime/syntax/synload.vim @@ -1,6 +1,6 @@ " Vim syntax support file " Maintainer: Bram Moolenaar <Bram@vim.org> -" Last Change: 2020 Apr 13 +" Last Change: 2022 Apr 12 " This file sets up for syntax highlighting. " It is loaded from "syntax.vim" and "manual.vim". diff --git a/runtime/syntax/syntax.vim b/runtime/syntax/syntax.vim index f274d93f4f..ac7dc314b9 100644 --- a/runtime/syntax/syntax.vim +++ b/runtime/syntax/syntax.vim @@ -1,6 +1,6 @@ " Vim syntax support file " Maintainer: Bram Moolenaar <Bram@vim.org> -" Last Change: 2001 Sep 04 +" Last Change: 2022 Apr 12 " This file is used for ":syntax on". " It installs the autocommands and starts highlighting for all buffers. diff --git a/runtime/syntax/tap.vim b/runtime/syntax/tap.vim index db37bb8980..6b00b1d588 100644 --- a/runtime/syntax/tap.vim +++ b/runtime/syntax/tap.vim @@ -2,9 +2,9 @@ " Language: Verbose TAP Output " Maintainer: Rufus Cable <rufus@threebytesfull.com> " Remark: Simple syntax highlighting for TAP output -" License: +" License: Vim License (see :help license) " Copyright: (c) 2008-2013 Rufus Cable -" Last Change: 2014-12-13 +" Last Change: 2020 Mar 15 if exists("b:current_syntax") finish @@ -29,12 +29,12 @@ syn match tapTestStatusOK /ok/ contained syn match tapTestStatusNotOK /not ok/ contained " highlight todo tests -syn match tapTestTodo /\(# TODO\|Failed (TODO)\) .*$/ contained contains=tapTestTodoRev -syn match tapTestTodoRev /\<TODO\>/ contained +syn match tapTestTodo /\c\(# TODO\|Failed (TODO)\) .*$/ contained contains=tapTestTodoRev +syn match tapTestTodoRev /\c\<TODO\>/ contained " highlight skipped tests -syn match tapTestSkip /# skip .*$/ contained contains=tapTestSkipTag -syn match tapTestSkipTag /\(# \)\@<=skip\>/ contained +syn match tapTestSkip /\c# skip .*$/ contained contains=tapTestSkipTag +syn match tapTestSkipTag /\c\(# \)\@<=skip\>/ contained " look behind so "ok 123" and "not ok 124" match test number syn match tapTestNumber /\(ok \)\@<=\d\d*/ contained @@ -51,17 +51,6 @@ syn region tapTestResultsSummaryNotOK start=/TODO passed:/ end=/$/ contained syn region tapTestInstructionsRegion start=/\%1l/ end=/^$/ -set foldtext=TAPTestLine_foldtext() -function! TAPTestLine_foldtext() - let line = getline(v:foldstart) - let sub = substitute(line, '/\*\|\*/\|{{{\d\=', '', 'g') - return sub -endfunction - -set foldminlines=5 -set foldcolumn=2 -set foldenable -set foldmethod=syntax syn sync fromstart if !exists("did_tapverboseoutput_syntax_inits") diff --git a/runtime/syntax/tar.vim b/runtime/syntax/tar.vim index 497683a186..815c2219cb 100644 --- a/runtime/syntax/tar.vim +++ b/runtime/syntax/tar.vim @@ -14,4 +14,6 @@ hi def link tarComment Comment hi def link tarFilename Constant hi def link tarDirectory Type +let b:current_syntax = 'tar' + " vim: ts=8 diff --git a/runtime/syntax/tex.vim b/runtime/syntax/tex.vim index ec0f7b99bd..5544fb63fc 100644 --- a/runtime/syntax/tex.vim +++ b/runtime/syntax/tex.vim @@ -1,8 +1,8 @@ " Vim syntax file " Language: TeX " Maintainer: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM> -" Last Change: Jun 29, 2020 -" Version: 119 +" Last Change: Apr 22, 2022 +" Version: 121 " URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_TEX " " Notes: {{{1 @@ -173,13 +173,25 @@ if !s:tex_excludematcher syn cluster texItalGroup add=texMatcher endif if !s:tex_nospell - syn cluster texMatchGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texMatcher,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texBoldStyle,texBoldItalStyle,texItalStyle,texItalBoldStyle,texZone,texInputFile,texOption,@Spell - syn cluster texMatchNMGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texMatcherNM,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texBoldStyle,texBoldItalStyle,texItalStyle,texItalBoldStyle,texZone,texInputFile,texOption,@Spell - syn cluster texStyleGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texBoldStyle,texBoldItalStyle,texItalStyle,texItalBoldStyle,texZone,texInputFile,texOption,texStyleStatement,texStyleMatcher,@Spell + if !s:tex_no_error + syn cluster texMatchGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texError,texInput,texLength,texLigature,texMatcher,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texBoldStyle,texBoldItalStyle,texItalStyle,texItalBoldStyle,texZone,texInputFile,texOption,@Spell + syn cluster texMatchNMGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texError,texInput,texLength,texLigature,texMatcherNM,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texBoldStyle,texBoldItalStyle,texItalStyle,texItalBoldStyle,texZone,texInputFile,texOption,@Spell + syn cluster texStyleGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texError,texInput,texLength,texLigature,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texBoldStyle,texBoldItalStyle,texItalStyle,texItalBoldStyle,texZone,texInputFile,texOption,texStyleStatement,texStyleMatcher,@Spell + else + syn cluster texMatchGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texMatcher,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texBoldStyle,texBoldItalStyle,texItalStyle,texItalBoldStyle,texZone,texInputFile,texOption,@Spell + syn cluster texMatchNMGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texMatcherNM,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texBoldStyle,texBoldItalStyle,texItalStyle,texItalBoldStyle,texZone,texInputFile,texOption,@Spell + syn cluster texStyleGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texBoldStyle,texBoldItalStyle,texItalStyle,texItalBoldStyle,texZone,texInputFile,texOption,texStyleStatement,texStyleMatcher,@Spell + endif else - syn cluster texMatchGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texMatcher,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,texInputFile,texOption - syn cluster texMatchNMGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texMatcherNM,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,texInputFile,texOption - syn cluster texStyleGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,texInputFile,texOption,texStyleStatement,texStyleMatcher + if !s:tex_no_error + syn cluster texMatchGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texError,texInput,texLength,texLigature,texMatcher,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,texInputFile,texOption + syn cluster texMatchNMGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texError,texInput,texLength,texLigature,texMatcherNM,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,texInputFile,texOption + syn cluster texStyleGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texError,texInput,texLength,texLigature,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,texInputFile,texOption,texStyleStatement,texStyleMatcher + else + syn cluster texMatchGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texMatcher,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,texInputFile,texOption + syn cluster texMatchNMGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texMatcherNM,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,texInputFile,texOption + syn cluster texStyleGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,texInputFile,texOption,texStyleStatement,texStyleMatcher + endif endif syn cluster texPreambleMatchGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texMatcherNM,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTitle,texTypeSize,texTypeStyle,texZone,texInputFile,texOption,texMathZoneZ syn cluster texRefGroup contains=texMatcher,texComment,texDelimiter @@ -189,7 +201,7 @@ if !exists("g:tex_no_math") syn cluster texMatchGroup add=@texMathZones syn cluster texMathDelimGroup contains=texMathDelimBad,texMathDelimKey,texMathDelimSet1,texMathDelimSet2 syn cluster texMathMatchGroup contains=@texMathZones,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texMathDelim,texMathMatcher,texMathOper,texNewCmd,texNewEnv,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone - syn cluster texMathZoneGroup contains=texComment,texDelimiter,texLength,texMathDelim,texMathMatcher,texMathOper,texMathSymbol,texMathText,texRefZone,texSpecialChar,texStatement,texTypeSize,texTypeStyle + syn cluster texMathZoneGroup contains=texBadPar,texComment,texDelimiter,texLength,texMathDelim,texMathMatcher,texMathOper,texMathSymbol,texMathText,texRefZone,texSpecialChar,texStatement,texTypeSize,texTypeStyle if !s:tex_no_error syn cluster texMathMatchGroup add=texMathError syn cluster texMathZoneGroup add=texMathError @@ -214,21 +226,21 @@ endif if s:tex_fast =~# 'm' if !s:tex_no_error if s:tex_matchcheck =~ '{' - syn region texMatcher matchgroup=Delimiter start="{" skip="\\\\\|\\[{}]" end="}" transparent contains=@texMatchGroup,texError - syn region texMatcherNM matchgroup=Delimiter start="{" skip="\\\\\|\\[{}]" end="}" transparent contains=@texMatchNMGroup,texError + syn region texMatcher matchgroup=texDelimiter start="{" skip="\\\\\|\\[{}]" end="}" transparent contains=@texMatchGroup,texError + syn region texMatcherNM matchgroup=texDelimiter start="{" skip="\\\\\|\\[{}]" end="}" transparent contains=@texMatchNMGroup,texError endif if s:tex_matchcheck =~ '\[' - syn region texMatcher matchgroup=Delimiter start="\[" end="]" transparent contains=@texMatchGroup,texError,@NoSpell - syn region texMatcherNM matchgroup=Delimiter start="\[" end="]" transparent contains=@texMatchNMGroup,texError,@NoSpell + syn region texMatcher matchgroup=texDelimiter start="\[" end="]" transparent contains=@texMatchGroup,texError,@NoSpell + syn region texMatcherNM matchgroup=texDelimiter start="\[" end="]" transparent contains=@texMatchNMGroup,texError,@NoSpell endif else if s:tex_matchcheck =~ '{' - syn region texMatcher matchgroup=Delimiter start="{" skip="\\\\\|\\[{}]" end="}" transparent contains=@texMatchGroup - syn region texMatcherNM matchgroup=Delimiter start="{" skip="\\\\\|\\[{}]" end="}" transparent contains=@texMatchNMGroup + syn region texMatcher matchgroup=texDelimiter start="{" skip="\\\\\|\\[{}]" end="}" transparent contains=@texMatchGroup + syn region texMatcherNM matchgroup=texDelimiter start="{" skip="\\\\\|\\[{}]" end="}" transparent contains=@texMatchNMGroup endif if s:tex_matchcheck =~ '\[' - syn region texMatcher matchgroup=Delimiter start="\[" end="]" transparent contains=@texMatchGroup - syn region texMatcherNM matchgroup=Delimiter start="\[" end="]" transparent contains=@texMatchNMGroup + syn region texMatcher matchgroup=texDelimiter start="\[" end="]" transparent contains=@texMatchGroup + syn region texMatcherNM matchgroup=texDelimiter start="\[" end="]" transparent contains=@texMatchNMGroup endif endif if s:tex_matchcheck =~ '(' @@ -251,7 +263,7 @@ if s:tex_fast =~# 'M' if !s:tex_no_error syn match texMathError "}" contained endif - syn region texMathMatcher matchgroup=Delimiter start="{" skip="\%(\\\\\)*\\}" end="}" end="%stopzone\>" contained contains=@texMathMatchGroup + syn region texMathMatcher matchgroup=texDelimiter start="{" skip="\%(\\\\\)*\\}" end="}" end="%stopzone\>" contained contains=@texMathMatchGroup endif endif @@ -291,14 +303,14 @@ syn match texLigature "\\\([ijolL]\|ae\|oe\|ss\|AA\|AE\|OE\)$" " \begin{}/\end{} section markers: {{{1 syn match texBeginEnd "\\begin\>\|\\end\>" nextgroup=texBeginEndName if s:tex_fast =~# 'm' - syn region texBeginEndName matchgroup=Delimiter start="{" end="}" contained nextgroup=texBeginEndModifier contains=texComment - syn region texBeginEndModifier matchgroup=Delimiter start="\[" end="]" contained contains=texComment,@texMathZones,@NoSpell + syn region texBeginEndName matchgroup=texDelimiter start="{" end="}" contained nextgroup=texBeginEndModifier contains=texComment + syn region texBeginEndModifier matchgroup=texDelimiter start="\[" end="]" contained contains=texComment,@texMathZones,@NoSpell endif " \documentclass, \documentstyle, \usepackage: {{{1 syn match texDocType "\\documentclass\>\|\\documentstyle\>\|\\usepackage\>" nextgroup=texBeginEndName,texDocTypeArgs if s:tex_fast =~# 'm' - syn region texDocTypeArgs matchgroup=Delimiter start="\[" end="]" contained nextgroup=texBeginEndName contains=texComment,@NoSpell + syn region texDocTypeArgs matchgroup=texDelimiter start="\[" end="]" contained nextgroup=texBeginEndName contains=texComment,@NoSpell endif " Preamble syntax-based folding support: {{{1 @@ -312,7 +324,7 @@ syn match texInputFile "\\include\(graphics\|list\)\=\(\[.\{-}\]\)\=\s*{.\{-}}" syn match texInputFile "\\\(epsfig\|input\|usepackage\)\s*\(\[.*\]\)\={.\{-}}" contains=texStatement,texInputCurlies,texInputFileOpt syn match texInputCurlies "[{}]" contained if s:tex_fast =~# 'm' - syn region texInputFileOpt matchgroup=Delimiter start="\[" end="\]" contained contains=texComment + syn region texInputFileOpt matchgroup=texDelimiter start="\[" end="\]" contained contains=texComment endif " Type Styles (LaTeX 2.09): {{{1 @@ -334,10 +346,8 @@ endif syn match texTypeStyle "\\textmd\>" syn match texTypeStyle "\\textrm\>" -syn match texTypeStyle "\\mathbb\>" syn match texTypeStyle "\\mathbf\>" syn match texTypeStyle "\\mathcal\>" -syn match texTypeStyle "\\mathfrak\>" syn match texTypeStyle "\\mathit\>" syn match texTypeStyle "\\mathnormal\>" syn match texTypeStyle "\\mathrm\>" @@ -430,6 +440,7 @@ if !exists("g:tex_no_math") && !s:tex_no_error syn match texBadMath "\\end\s*{\s*\(array\|[bBpvV]matrix\|split\|smallmatrix\)\s*}" syn match texBadMath "\\end\s*{\s*\(displaymath\|equation\|eqnarray\|math\)\*\=\s*}" syn match texBadMath "\\[\])]" + syn match texBadPar contained "\%(\\par\>\|^\s*\n.\)" endif " Math Zones: {{{1 @@ -475,15 +486,15 @@ if !exists("g:tex_no_math") " Inline Math Zones: {{{2 if s:tex_fast =~# 'M' if has("conceal") && &enc == 'utf-8' && s:tex_conceal =~# 'd' - syn region texMathZoneV matchgroup=Delimiter start="\\(" matchgroup=Delimiter end="\\)\|%stopzone\>" keepend concealends contains=@texMathZoneGroup - syn region texMathZoneW matchgroup=Delimiter start="\\\[" matchgroup=Delimiter end="\\]\|%stopzone\>" keepend concealends contains=@texMathZoneGroup - syn region texMathZoneX matchgroup=Delimiter start="\$" skip="\\\\\|\\\$" matchgroup=Delimiter end="\$" end="%stopzone\>" concealends contains=@texMathZoneGroup - syn region texMathZoneY matchgroup=Delimiter start="\$\$" matchgroup=Delimiter end="\$\$" end="%stopzone\>" keepend concealends contains=@texMathZoneGroup + syn region texMathZoneV matchgroup=texDelimiter start="\\(" matchgroup=texDelimiter end="\\)\|%stopzone\>" keepend concealends contains=@texMathZoneGroup + syn region texMathZoneW matchgroup=texDelimiter start="\\\[" matchgroup=texDelimiter end="\\]\|%stopzone\>" keepend concealends contains=@texMathZoneGroup + syn region texMathZoneX matchgroup=texDelimiter start="\$" skip="\\\\\|\\\$" matchgroup=texDelimiter end="\$" end="%stopzone\>" concealends contains=@texMathZoneGroup + syn region texMathZoneY matchgroup=texDelimiter start="\$\$" matchgroup=texDelimiter end="\$\$" end="%stopzone\>" keepend concealends contains=@texMathZoneGroup else - syn region texMathZoneV matchgroup=Delimiter start="\\(" matchgroup=Delimiter end="\\)\|%stopzone\>" keepend contains=@texMathZoneGroup - syn region texMathZoneW matchgroup=Delimiter start="\\\[" matchgroup=Delimiter end="\\]\|%stopzone\>" keepend contains=@texMathZoneGroup - syn region texMathZoneX matchgroup=Delimiter start="\$" skip="\%(\\\\\)*\\\$" matchgroup=Delimiter end="\$" end="%stopzone\>" contains=@texMathZoneGroup - syn region texMathZoneY matchgroup=Delimiter start="\$\$" matchgroup=Delimiter end="\$\$" end="%stopzone\>" keepend contains=@texMathZoneGroup + syn region texMathZoneV matchgroup=texDelimiter start="\\(" matchgroup=texDelimiter end="\\)\|%stopzone\>" keepend contains=@texMathZoneGroup + syn region texMathZoneW matchgroup=texDelimiter start="\\\[" matchgroup=texDelimiter end="\\]\|%stopzone\>" keepend contains=@texMathZoneGroup + syn region texMathZoneX matchgroup=texDelimiter start="\$" skip="\%(\\\\\)*\\\$" matchgroup=texDelimiter end="\$" end="%stopzone\>" contains=@texMathZoneGroup + syn region texMathZoneY matchgroup=texDelimiter start="\$\$" matchgroup=texDelimiter end="\$\$" end="%stopzone\>" keepend contains=@texMathZoneGroup endif syn region texMathZoneZ matchgroup=texStatement start="\\ensuremath\s*{" matchgroup=texStatement end="}" end="%stopzone\>" contains=@texMathZoneGroup endif @@ -650,23 +661,23 @@ if s:tex_fast =~# 'r' syn region texRefZone matchgroup=texStatement start="\\label{" end="}\|%stopzone\>" contains=@texRefGroup syn region texRefZone matchgroup=texStatement start="\\\(page\|eq\)ref{" end="}\|%stopzone\>" contains=@texRefGroup syn region texRefZone matchgroup=texStatement start="\\v\=ref{" end="}\|%stopzone\>" contains=@texRefGroup - syn region texRefOption contained matchgroup=Delimiter start='\[' end=']' contains=@texRefGroup,texRefZone nextgroup=texRefOption,texCite - syn region texCite contained matchgroup=Delimiter start='{' end='}' contains=@texRefGroup,texRefZone,texCite + syn region texRefOption contained matchgroup=texDelimiter start='\[' end=']' contains=@texRefGroup,texRefZone nextgroup=texRefOption,texCite + syn region texCite contained matchgroup=texDelimiter start='{' end='}' contains=@texRefGroup,texRefZone,texCite endif syn match texRefZone '\\cite\%([tp]\*\=\)\=\>' nextgroup=texRefOption,texCite -" Handle newcommand, newenvironment : {{{1 -syn match texNewCmd "\\newcommand\>" nextgroup=texCmdName skipwhite skipnl +" Handle (re)newcommand, (re)newenvironment : {{{1 +syn match texNewCmd "\\\%(re\)\=newcommand\>" nextgroup=texCmdName skipwhite skipnl if s:tex_fast =~# 'V' - syn region texCmdName contained matchgroup=Delimiter start="{"rs=s+1 end="}" nextgroup=texCmdArgs,texCmdBody skipwhite skipnl - syn region texCmdArgs contained matchgroup=Delimiter start="\["rs=s+1 end="]" nextgroup=texCmdBody skipwhite skipnl - syn region texCmdBody contained matchgroup=Delimiter start="{"rs=s+1 skip="\\\\\|\\[{}]" matchgroup=Delimiter end="}" contains=@texCmdGroup + syn region texCmdName contained matchgroup=texDelimiter start="{"rs=s+1 end="}" nextgroup=texCmdArgs,texCmdBody skipwhite skipnl + syn region texCmdArgs contained matchgroup=texDelimiter start="\["rs=s+1 end="]" nextgroup=texCmdBody skipwhite skipnl + syn region texCmdBody contained matchgroup=texDelimiter start="{"rs=s+1 skip="\\\\\|\\[{}]" matchgroup=texDelimiter end="}" contains=@texCmdGroup endif -syn match texNewEnv "\\newenvironment\>" nextgroup=texEnvName skipwhite skipnl +syn match texNewEnv "\\\%(re\)\=newenvironment\>" nextgroup=texEnvName skipwhite skipnl if s:tex_fast =~# 'V' - syn region texEnvName contained matchgroup=Delimiter start="{"rs=s+1 end="}" nextgroup=texEnvBgn skipwhite skipnl - syn region texEnvBgn contained matchgroup=Delimiter start="{"rs=s+1 end="}" nextgroup=texEnvEnd skipwhite skipnl contains=@texEnvGroup - syn region texEnvEnd contained matchgroup=Delimiter start="{"rs=s+1 end="}" skipwhite skipnl contains=@texEnvGroup + syn region texEnvName contained matchgroup=texDelimiter start="{"rs=s+1 end="}" nextgroup=texEnvBgn skipwhite skipnl + syn region texEnvBgn contained matchgroup=texDelimiter start="{"rs=s+1 end="}" nextgroup=texEnvEnd skipwhite skipnl contains=@texEnvGroup + syn region texEnvEnd contained matchgroup=texDelimiter start="{"rs=s+1 end="}" skipwhite skipnl contains=@texEnvGroup endif " Definitions/Commands: {{{1 @@ -694,8 +705,8 @@ if !s:tex_no_error endif syn match texStyleStatement "\\[a-zA-Z@]\+" contained if s:tex_fast =~# 'S' - syn region texStyleMatcher matchgroup=Delimiter start="{" skip="\\\\\|\\[{}]" end="}" contains=@texStyleGroup,texError contained - syn region texStyleMatcher matchgroup=Delimiter start="\[" end="]" contains=@texStyleGroup,texError contained + syn region texStyleMatcher matchgroup=texDelimiter start="{" skip="\\\\\|\\[{}]" end="}" contains=@texStyleGroup,texError contained + syn region texStyleMatcher matchgroup=texDelimiter start="\[" end="]" contains=@texStyleGroup,texError contained endif endif @@ -1017,8 +1028,8 @@ if has("conceal") && &enc == 'utf-8' " Superscripts/Subscripts {{{2 if s:tex_conceal =~# 's' if s:tex_fast =~# 's' - syn region texSuperscript matchgroup=Delimiter start='\^{' skip="\\\\\|\\[{}]" end='}' contained concealends contains=texSpecialChar,texSuperscripts,texStatement,texSubscript,texSuperscript,texMathMatcher - syn region texSubscript matchgroup=Delimiter start='_{' skip="\\\\\|\\[{}]" end='}' contained concealends contains=texSpecialChar,texSubscripts,texStatement,texSubscript,texSuperscript,texMathMatcher + syn region texSuperscript matchgroup=texDelimiter start='\^{' skip="\\\\\|\\[{}]" end='}' contained concealends contains=texSpecialChar,texSuperscripts,texStatement,texSubscript,texSuperscript,texMathMatcher + syn region texSubscript matchgroup=texDelimiter start='_{' skip="\\\\\|\\[{}]" end='}' contained concealends contains=texSpecialChar,texSubscripts,texStatement,texSubscript,texSuperscript,texMathMatcher endif " s:SuperSub: fun! s:SuperSub(group,leader,pat,cchar) @@ -1255,6 +1266,7 @@ if !exists("skip_tex_syntax_inits") if !exists("g:tex_no_error") if !exists("g:tex_no_math") hi def link texBadMath texError + hi def link texBadPar texBadMath hi def link texMathDelimBad texError hi def link texMathError texError if !b:tex_stylish diff --git a/runtime/syntax/tmux.vim b/runtime/syntax/tmux.vim index 867c033cb5..042b96e872 100644 --- a/runtime/syntax/tmux.vim +++ b/runtime/syntax/tmux.vim @@ -1,5 +1,5 @@ " Language: tmux(1) configuration file -" Version: 3.2a (git-44ada9cd) +" Version: 3.3-rc (git-964deae4) " URL: https://github.com/ericpruitt/tmux.vim/ " Maintainer: Eric Pruitt <eric.pruitt@gmail.com> " License: 2-Clause BSD (http://opensource.org/licenses/BSD-2-Clause) @@ -18,40 +18,49 @@ syntax iskeyword @,48-57,_,192-255,- syntax case match syn keyword tmuxAction none any current other -syn keyword tmuxBoolean off on +syn keyword tmuxBoolean off on yes no syn keyword tmuxTodo FIXME NOTE TODO XXX contained -syn match tmuxColour /\<colour[0-9]\+/ display +syn match tmuxColour /\<colou\?r[0-9]\+\>/ display syn match tmuxKey /\(C-\|M-\|\^\)\+\S\+/ display syn match tmuxNumber /\<\d\+\>/ display syn match tmuxFlags /\s-\a\+/ display -syn match tmuxVariable /\w\+=/ display -syn match tmuxVariableExpansion /\${\=\w\+}\=/ display -syn match tmuxControl /%\(if\|elif\|else\|endif\)/ +syn match tmuxVariableExpansion /\$\({[A-Za-z_]\w*}\|[A-Za-z_]\w*\)/ display +syn match tmuxControl /^\s*%\(if\|elif\|else\|endif\)\>/ +syn match tmuxEscape /\\\(u\x\{4\}\|U\x\{8\}\|\o\{3\}\|[\\ernt$]\)/ display syn region tmuxComment start=/#/ skip=/\\\@<!\\$/ end=/$/ contains=tmuxTodo,@Spell -syn region tmuxString start=+"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=tmuxFormatString,@Spell -syn region tmuxString start=+'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end='$' contains=tmuxFormatString,@Spell +syn region tmuxString start=+"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=tmuxFormatString,tmuxEscape,tmuxVariableExpansion,@Spell +syn region tmuxUninterpolatedString start=+'+ skip=+\\$+ excludenl end=+'+ end='$' contains=tmuxFormatString,@Spell " TODO: Figure out how escaping works inside of #(...) and #{...} blocks. syn region tmuxFormatString start=/#[#DFhHIPSTW]/ end=// contained keepend syn region tmuxFormatString start=/#{/ skip=/#{.\{-}}/ end=/}/ keepend syn region tmuxFormatString start=/#(/ skip=/#(.\{-})/ end=/)/ contained keepend +" At the time of this writing, the latest tmux release will parse a line +" reading "abc=xyz set-option ..." as an assignment followed by a command +" hence the presence of "\s" in the "end" argument. +syn region tmuxAssignment matchgroup=tmuxVariable start=/^\s*[A-Za-z_]\w*=\@=/ skip=/\\$\|\\\s/ end=/\s\|$/ contains=tmuxString,tmuxUninterpolatedString,tmuxVariableExpansion,tmuxControl,tmuxEscape + hi def link tmuxFormatString Identifier hi def link tmuxAction Boolean hi def link tmuxBoolean Boolean hi def link tmuxCommands Keyword -hi def link tmuxControl Keyword +hi def link tmuxControl PreCondit hi def link tmuxComment Comment +hi def link tmuxEscape Special +hi def link tmuxEscapeUnquoted Special hi def link tmuxKey Special hi def link tmuxNumber Number hi def link tmuxFlags Identifier hi def link tmuxOptions Function hi def link tmuxString String hi def link tmuxTodo Todo +hi def link tmuxUninterpolatedString +\ String hi def link tmuxVariable Identifier hi def link tmuxVariableExpansion Identifier @@ -61,63 +70,85 @@ hi def link tmuxVariableExpansion Identifier if get(g:, "tmux_syntax_colors", 1) for s:i in range(0, 255) let s:bg = (!s:i || s:i == 16 || (s:i > 231 && s:i < 235)) ? 15 : "none" - exec "syn match tmuxColour" . s:i . " /\\<colour" . s:i . "\\>/ display" + exec "syn match tmuxColour" . s:i . " /\\<colou\\?r" . s:i . "\\>/ display" \ " | highlight tmuxColour" . s:i . " ctermfg=" . s:i . " ctermbg=" . s:bg endfor endif syn keyword tmuxOptions -\ backspace buffer-limit command-alias copy-command default-terminal editor -\ escape-time exit-empty activity-action assume-paste-time base-index -\ bell-action default-command default-shell default-size destroy-unattached +\ activity-action after-bind-key after-capture-pane after-copy-mode +\ after-display-message after-display-panes after-kill-pane +\ after-list-buffers after-list-clients after-list-keys after-list-panes +\ after-list-sessions after-list-windows after-load-buffer after-lock-server +\ after-new-session after-new-window after-paste-buffer after-pipe-pane +\ after-queue after-refresh-client after-rename-session after-rename-window +\ after-resize-pane after-resize-window after-save-buffer +\ after-select-layout after-select-pane after-select-window after-send-keys +\ after-set-buffer after-set-environment after-set-hook after-set-option +\ after-show-environment after-show-messages after-show-options +\ after-split-window after-unbind-key aggressive-resize alert-activity +\ alert-bell alert-silence allow-passthrough allow-rename alternate-screen +\ assume-paste-time automatic-rename automatic-rename-format backspace +\ base-index bell-action buffer-limit client-active client-attached +\ client-detached client-focus-in client-focus-out client-resized +\ client-session-changed clock-mode-colour clock-mode-style command-alias +\ copy-command copy-mode-current-match-style copy-mode-mark-style +\ copy-mode-match-style cursor-colour cursor-style default-command +\ default-shell default-size default-terminal destroy-unattached \ detach-on-destroy display-panes-active-colour display-panes-colour -\ display-panes-time display-time exit-unattached extended-keys focus-events -\ history-file history-limit key-table lock-after-time lock-command -\ message-command-style message-limit message-style aggressive-resize -\ allow-rename alternate-screen automatic-rename automatic-rename-format -\ clock-mode-colour clock-mode-style copy-mode-current-match-style -\ copy-mode-mark-style copy-mode-match-style main-pane-height -\ main-pane-width mode-keys mode-style monitor-activity monitor-bell -\ monitor-silence mouse other-pane-height other-pane-width -\ pane-active-border-style pane-base-index pane-border-format -\ pane-border-lines pane-border-status pane-border-style pane-colours prefix -\ prefix2 prompt-history-limit remain-on-exit renumber-windows repeat-time -\ set-clipboard set-titles set-titles-string silence-action status status-bg -\ status-fg status-format status-interval status-justify status-keys -\ status-left status-left-length status-left-style status-position -\ status-right status-right-length status-right-style status-style -\ synchronize-panes terminal-features terminal-overrides update-environment -\ user-keys visual-activity visual-bell visual-silence window-active-style +\ display-panes-time display-time editor escape-time exit-empty +\ exit-unattached extended-keys fill-character focus-events history-file +\ history-limit key-table lock-after-time lock-command main-pane-height +\ main-pane-width message-command-style message-limit message-style +\ mode-keys mode-style monitor-activity monitor-bell monitor-silence mouse +\ other-pane-height other-pane-width pane-active-border-style +\ pane-base-index pane-border-format pane-border-indicators +\ pane-border-lines pane-border-status pane-border-style pane-colours +\ pane-died pane-exited pane-focus-in pane-focus-out pane-mode-changed +\ pane-set-clipboard pane-title-changed popup-border-lines +\ popup-border-style popup-style prefix prefix2 prompt-history-limit +\ remain-on-exit remain-on-exit-format renumber-windows repeat-time +\ scroll-on-clear session-closed session-created session-renamed +\ session-window-changed set-clipboard set-titles set-titles-string +\ silence-action status status-bg status-fg status-format status-interval +\ status-justify status-keys status-left status-left-length +\ status-left-style status-position status-right status-right-length +\ status-right-style status-style synchronize-panes terminal-features +\ terminal-overrides update-environment user-keys visual-activity +\ visual-bell visual-silence window-active-style window-layout-changed +\ window-linked window-pane-changed window-renamed window-resized \ window-size window-status-activity-style window-status-bell-style \ window-status-current-format window-status-current-style \ window-status-format window-status-last-style window-status-separator -\ window-status-style window-style word-separators wrap-search +\ window-status-style window-style window-unlinked word-separators +\ wrap-search xterm-keys syn keyword tmuxCommands \ attach attach-session bind bind-key break-pane breakp capture-pane -\ capturep choose-buffer choose-client choose-tree clear-history clearhist +\ capturep choose-buffer choose-client choose-session choose-tree +\ choose-window clear-history clear-prompt-history clearhist clearphist \ clock-mode command-prompt confirm confirm-before copy-mode customize-mode -\ detach detach-client display display-menu display-message display-panes -\ display-popup displayp find-window findw if if-shell join-pane joinp -\ kill-pane kill-server kill-session kill-window killp has has-session killw +\ delete-buffer deleteb detach detach-client display display-menu +\ display-message display-panes display-popup displayp find-window findw has +\ has-session if if-shell info join-pane joinp kill-pane kill-server +\ kill-session kill-window killp killw last last-pane last-window lastp \ link-window linkw list-buffers list-clients list-commands list-keys \ list-panes list-sessions list-windows load-buffer loadb lock lock-client -\ lock-server lock-session lockc last-pane lastp locks ls last last-window -\ lsb delete-buffer deleteb lsc lscm lsk lsp lsw menu move-pane move-window -\ clear-prompt-history clearphist movep movew new new-session new-window -\ neww next next-layout next-window nextl paste-buffer pasteb pipe-pane -\ pipep popup prev previous-layout previous-window prevl refresh -\ refresh-client rename rename-session rename-window renamew resize-pane -\ resize-window resizep resizew respawn-pane respawn-window respawnp -\ respawnw rotate-window rotatew run run-shell save-buffer saveb -\ select-layout select-pane select-window selectl selectp selectw send -\ send-keys send-prefix set set-buffer set-environment set-hook set-option +\ lock-server lock-session lockc locks ls lsb lsc lscm lsk lsp lsw menu +\ move-pane move-window movep movew new new-session new-window neww next +\ next-layout next-window nextl paste-buffer pasteb pipe-pane pipep popup +\ prev previous-layout previous-window prevl refresh refresh-client rename +\ rename-session rename-window renamew resize-pane resize-window resizep +\ resizew respawn-pane respawn-window respawnp respawnw rotate-window +\ rotatew run run-shell save-buffer saveb select-layout select-pane +\ select-window selectl selectp selectw send send-keys send-prefix +\ server-info set set-buffer set-environment set-hook set-option \ set-window-option setb setenv setw show show-buffer show-environment \ show-hooks show-messages show-options show-prompt-history \ show-window-options showb showenv showmsgs showphist showw source -\ source-file split-window splitw start start-server suspend-client suspendc -\ swap-pane swap-window swapp swapw switch-client switchc unbind unbind-key -\ unlink-window unlinkw wait wait-for +\ source-file split-pane split-window splitp splitw start start-server +\ suspend-client suspendc swap-pane swap-window swapp swapw switch-client +\ switchc unbind unbind-key unlink-window unlinkw wait wait-for let &cpo = s:original_cpo unlet! s:original_cpo s:bg s:i diff --git a/runtime/syntax/trustees.vim b/runtime/syntax/trustees.vim index 6c58d3983d..3a7d26e896 100644 --- a/runtime/syntax/trustees.vim +++ b/runtime/syntax/trustees.vim @@ -1,7 +1,7 @@ " Vim syntax file " Language: trustees " Maintainer: Nima Talebi <nima@it.net.au> -" Last Change: 2005-10-12 +" Last Change: 2022 Jun 14 " quit when a syntax file was already loaded if exists("b:current_syntax") @@ -40,3 +40,5 @@ syntax match tfsRuleWho ~\(\*\|[+]\{0,1\}[a-zA-Z0-9/]\+\)~ contained contains=tf highlight link tfsRuleWho Identifier syntax match tfsRuleWhat ~[RWEBXODCU!]\+~ contained contains=tfsSpecialChar highlight link tfsRuleWhat Structure + +let b:current_syntax = 'trustees' diff --git a/runtime/syntax/tt2.vim b/runtime/syntax/tt2.vim index 6432b85a05..6826fb1581 100644 --- a/runtime/syntax/tt2.vim +++ b/runtime/syntax/tt2.vim @@ -1,9 +1,11 @@ +" Vim syntax file " Language: TT2 (Perl Template Toolkit) " Maintainer: vim-perl <vim-perl@googlegroups.com> " Author: Moriki, Atsushi <4woods+vim@gmail.com> -" Homepage: http://github.com/vim-perl/vim-perl -" Bugs/requests: http://github.com/vim-perl/vim-perl/issues -" Last Change: 2015-04-25 +" Homepage: https://github.com/vim-perl/vim-perl +" Bugs/requests: https://github.com/vim-perl/vim-perl/issues +" License: Vim License (see :help license) +" Last Change: 2018 Mar 28 " " Installation: " put tt2.vim and tt2html.vim in to your syntax directory. @@ -42,9 +44,6 @@ " Release " 0.1.0 " Internal -" -" License: follow Vim :help uganda -" if !exists("b:tt2_syn_tags") let b:tt2_syn_tags = '\[% %]' @@ -95,7 +94,7 @@ if exists("b:tt2_syn_tags") "Include Perl syntax when 'PERL' 'RAWPERL' block if b:tt2_syn_inc_perl - syn include @Perl $VIMRUNTIME/syntax/perl.vim + syn include @Perl syntax/perl.vim exec 'syn region tt2_perlcode '. \ 'start=+\(\(RAW\)\=PERL\s*[-]\=' . s:ed . '\(\n\)\=\)\@<=+ ' . \ 'end=+' . s:st . '[-]\=\s*END+me=s-1 contains=@Perl keepend' @@ -122,7 +121,7 @@ else "Include Perl syntax when 'PERL' 'RAWPERL' block if b:tt2_syn_inc_perl - syn include @Perl $VIMRUNTIME/syntax/perl.vim + syn include @Perl syntax/perl.vim syn region tt2_perlcode \ start=+\(\(RAW\)\=PERL\s*[-]\=%]\(\n\)\=\)\@<=+ \ end=+\[%[-]\=\s*END+me=s-1 @@ -155,7 +154,7 @@ syn match tt2_operator "[!=<>]=\=\|&&\|||" contained syn match tt2_operator "\(\s\)\@<=_\(\s\)\@=" contained syn match tt2_operator "=>\|," contained syn match tt2_deref "\([[:alnum:]_)\]}]\s*\)\@<=\." contained -syn match tt2_comment +#.*$+ contained extend +syn match tt2_comment +#.*$+ contained syn match tt2_func +\<\I\w*\(\s*(\)\@=+ contained nextgroup=tt2_bracket_r skipempty skipwhite " syn region tt2_bracket_r start=+(+ end=+)+ contained contains=@tt2_statement_cluster keepend extend diff --git a/runtime/syntax/tt2html.vim b/runtime/syntax/tt2html.vim index ac5744f39d..8c223be707 100644 --- a/runtime/syntax/tt2html.vim +++ b/runtime/syntax/tt2html.vim @@ -1,9 +1,11 @@ +" Vim syntax file " Language: TT2 embedded with HTML " Maintainer: vim-perl <vim-perl@googlegroups.com> " Author: Moriki, Atsushi <4woods+vim@gmail.com> -" Homepage: http://github.com/vim-perl/vim-perl -" Bugs/requests: http://github.com/vim-perl/vim-perl/issues -" Last Change: 2013-07-21 +" Homepage: https://github.com/vim-perl/vim-perl +" Bugs/requests: https://github.com/vim-perl/vim-perl/issues +" License: Vim License (see :help license) +" Last Change: 2018 Mar 28 if exists("b:current_syntax") finish diff --git a/runtime/syntax/tt2js.vim b/runtime/syntax/tt2js.vim index 350df57d4c..52e5a3c54a 100644 --- a/runtime/syntax/tt2js.vim +++ b/runtime/syntax/tt2js.vim @@ -1,9 +1,11 @@ +" Vim syntax file " Language: TT2 embedded with Javascript " Maintainer: Andy Lester <andy@petdance.com> " Author: Yates, Peter <pd.yates@gmail.com> -" Homepage: http://github.com/vim-perl/vim-perl -" Bugs/requests: http://github.com/vim-perl/vim-perl/issues -" Last Change: 2013-07-21 +" Homepage: https://github.com/vim-perl/vim-perl +" Bugs/requests: https://github.com/vim-perl/vim-perl/issues +" License: Vim License (see :help license) +" Last Change: 2018 Mar 28 if exists("b:current_syntax") finish diff --git a/runtime/syntax/vim.vim b/runtime/syntax/vim.vim index 41993b65b0..2b1c58c449 100644 --- a/runtime/syntax/vim.vim +++ b/runtime/syntax/vim.vim @@ -23,7 +23,7 @@ syn cluster vimCommentGroup contains=vimTodo,@Spell " Special and plugin vim commands {{{2 syn match vimCommand contained "\<z[-+^.=]\=\>" syn keyword vimOnlyCommand contained fix[del] op[en] sh[ell] P[rint] -syn keyword vimStdPlugin contained DiffOrig Man N[ext] S TOhtml XMLent XMLns +syn keyword vimStdPlugin contained Arguments Asm Break Cfilter Clear Continue DiffOrig Evaluate Finish Gdb Lfilter Man N[ext] Over P[rint] Program Run S Source Step Stop Termdebug TermdebugCommand TOhtml Until Winbar XMLent XMLns " Vim-specific options {{{2 syn keyword vimOnlyOption contained biosk bioskey cp compatible consk conskey cm cryptmethod edcompatible guipty key macatsui mzq mzquantum osfiletype oft renderoptions rop st shelltype sn shortname tenc termencoding ta textauto tx textmode tf ttyfast ttym ttymouse tbi ttybuiltin wiv weirdinvert @@ -34,8 +34,8 @@ syn keyword vimOnlyOption contained nobiosk nobioskey noconsk noconskey nocp noc " Invertible setting variants syn keyword vimOnlyOption contained invbiosk invbioskey invconsk invconskey invcp invcompatible invguipty invmacatsui invsn invshortname invta invtextauto invtx invtextmode invtf invttyfast invtbi invttybuiltin invwiv invweirdinvert " termcap codes (which can also be set) {{{2 -syn keyword vimTermOption contained t_8b t_AB t_al t_bc t_ce t_cl t_Co t_Cs t_CV t_db t_DL t_F1 t_F2 t_F3 t_F4 t_F5 t_F6 t_F7 t_F8 t_F9 t_fs t_IE t_IS t_k1 t_K1 t_k2 t_k3 t_K3 t_k4 t_K4 t_k5 t_K5 t_k6 t_K6 t_k7 t_K7 t_k8 t_K8 t_k9 t_K9 t_KA t_kb t_kB t_KB t_KC t_kd t_kD t_KD t_ke t_KE t_KF t_KG t_kh t_KH t_kI t_KI t_KJ t_KK t_kl t_KL t_kN t_kP t_kr t_ks t_ku t_le t_mb t_md t_me t_mr t_ms t_nd t_op t_RB t_RI t_RV t_Sb t_se t_Sf t_SI t_so t_sr t_SR t_te t_ti t_ts t_u7 t_ue t_us t_ut t_vb t_ve t_vi t_vs t_WP t_WS t_xn t_xs t_ZH t_ZR -syn keyword vimTermOption contained t_8f t_AF t_AL t_cd t_Ce t_cm t_cs t_CS t_da t_dl t_EI +syn keyword vimTermOption contained t_8b t_AB t_al t_bc t_ce t_cl t_Co t_Cs t_CV t_db t_DL t_Ds t_F1 t_F2 t_F3 t_F4 t_F5 t_F6 t_F7 t_F8 t_F9 t_fs t_IE t_IS t_k1 t_K1 t_k2 t_k3 t_K3 t_k4 t_K4 t_k5 t_K5 t_k6 t_K6 t_k7 t_K7 t_k8 t_K8 t_k9 t_K9 t_KA t_kb t_kB t_KB t_KC t_kd t_kD t_KD t_ke t_KE t_KF t_KG t_KH t_KI t_KJ t_KK t_kl t_KL t_kN t_kP t_kr t_ks t_ku t_le t_mb t_md t_me t_mr t_ms t_nd t_op t_RB t_RI t_RV t_Sb t_se t_Sf t_SI t_so t_sr t_SR t_te t_ti t_ts t_u7 t_ue t_us t_Us t_ut t_vb t_ve t_vi t_vs t_WP t_WS t_xn t_xs t_ZH t_ZR +syn keyword vimTermOption contained t_8f t_AF t_AL t_cd t_Ce t_cm t_cs t_CS t_da t_dl t_ds t_EI t_kh t_kI syn match vimTermOption contained "t_%1" syn match vimTermOption contained "t_#2" syn match vimTermOption contained "t_#4" @@ -46,14 +46,14 @@ syn match vimTermOption contained "t_%i" syn match vimTermOption contained "t_k;" " unsupported settings: these are supported by vi but don't do anything in vim {{{2 -syn keyword vimErrSetting contained hardtabs ht w1200 w300 w9600 +syn keyword vimErrSetting contained hardtabs ht w1200 w300 w9600 "}}}2 syn case ignore " Highlight commonly used Groupnames {{{2 -syn keyword vimGroup contained Comment Constant String Character Number Boolean Float Identifier Function Statement Conditional Repeat Label Operator Keyword Exception PreProc Include Define Macro PreCondit Type StorageClass Structure Typedef Special SpecialChar Tag Delimiter SpecialComment Debug Underlined Ignore Error Todo +syn keyword vimGroup contained Comment Constant String Character Number Boolean Float Identifier Function Statement Conditional Repeat Label Operator Keyword Exception PreProc Include Define Macro PreCondit Type StorageClass Structure Typedef Special SpecialChar Tag Delimiter SpecialComment Debug Underlined Ignore Error Todo " Default highlighting groups {{{2 -syn keyword vimHLGroup contained ColorColumn Cursor CursorColumn CursorIM CursorLine CursorLineFold CursorLineNr CursorLineSign DiffAdd DiffChange DiffDelete DiffText Directory EndOfBuffer ErrorMsg FoldColumn Folded IncSearch LineNr MatchParen Menu ModeMsg MoreMsg NonText Normal Pmenu PmenuSbar PmenuSel PmenuThumb Question QuickFixLine Scrollbar Search SignColumn SpecialKey SpellBad SpellCap SpellLocal SpellRare StatusLine StatusLineNC TabLine TabLineFill TabLineSel Title Tooltip VertSplit Visual WarningMsg WildMenu +syn keyword vimHLGroup contained ColorColumn Cursor CursorColumn CursorIM CursorLine CursorLineFold CursorLineNr CursorLineSign DiffAdd DiffChange DiffDelete DiffText Directory EndOfBuffer ErrorMsg FoldColumn Folded IncSearch LineNr MatchParen Menu ModeMsg MoreMsg NonText Normal Pmenu PmenuSbar PmenuSel PmenuThumb Question QuickFixLine Scrollbar Search SignColumn SpecialKey SpellBad SpellCap SpellLocal SpellRare StatusLine StatusLineNC TabLine TabLineFill TabLineSel Title Tooltip VertSplit Visual WarningMsg WildMenu syn match vimHLGroup contained "Conceal" syn keyword vimOnlyHLGroup contained LineNrAbove LineNrBelow StatusLineTerm Terminal VisualNOS syn keyword nvimHLGroup contained Substitute TermCursor TermCursorNC @@ -88,10 +88,10 @@ if exists("g:vimsyn_folding") && g:vimsyn_folding =~# '[afhlmpPrt]' else com! -nargs=* VimFoldm <args> endif - if g:vimsyn_folding =~# 'p' - com! -nargs=* VimFoldp <args> fold - else - com! -nargs=* VimFoldp <args> + if g:vimsyn_folding =~# 'p' + com! -nargs=* VimFoldp <args> fold + else + com! -nargs=* VimFoldp <args> endif if g:vimsyn_folding =~# 'P' com! -nargs=* VimFoldP <args> fold @@ -120,9 +120,6 @@ else com! -nargs=* VimFoldt <args> endif -" commands not picked up by the generator (due to non-standard format) {{{2 -syn keyword vimCommand contained py3 - " Deprecated variable options {{{2 if exists("g:vim_minlines") let g:vimsyn_minlines= g:vim_minlines @@ -148,8 +145,8 @@ syn match vimNumber '-\d\+\%(\.\d\+\%([eE][+-]\=\d\+\)\=\)\=' skipwhite nextgro syn match vimNumber '\<0[xX]\x\+' skipwhite nextgroup=vimGlobal,vimSubst,vimCommand,vimComment,vim9Comment syn match vimNumber '\%(^\|\A\)\zs#\x\{6}' skipwhite nextgroup=vimGlobal,vimSubst,vimCommand,vimComment,vim9Comment syn match vimNumber '\<0[zZ][a-zA-Z0-9.]\+' skipwhite nextgroup=vimGlobal,vimSubst,vimCommand,vimComment,vim9Comment -syn match vimNumber '0[0-7]\+' skipwhite nextgroup=vimGlobal,vimSubst,vimCommand,vimComment,vim9Comment -syn match vimNumber '0[bB][01]\+' skipwhite nextgroup=vimGlobal,vimSubst,vimCommand,vimComment,vim9Comment +syn match vimNumber '0[0-7]\+' skipwhite nextgroup=vimGlobal,vimSubst,vimCommand,vimComment,vim9Comment +syn match vimNumber '0[bB][01]\+' skipwhite nextgroup=vimGlobal,vimSubst,vimCommand,vimComment,vim9Comment " All vimCommands are contained by vimIsCommand. {{{2 syn match vimCmdSep "[:|]\+" skipwhite nextgroup=vimAddress,vimAutoCmd,vimEcho,vimIsCommand,vimExtCmd,vimFilter,vimLet,vimMap,vimMark,vimSet,vimSyntax,vimUserCmd @@ -202,7 +199,7 @@ syn keyword vimAugroupKey contained aug[roup] " Operators: {{{2 " ========= -syn cluster vimOperGroup contains=vimEnvvar,vimFunc,vimFuncVar,vimOper,vimOperParen,vimNumber,vimString,vimType,vimRegister,vimContinue,vim9Comment +syn cluster vimOperGroup contains=vimEnvvar,vimFunc,vimFuncVar,vimOper,vimOperParen,vimNumber,vimString,vimType,vimRegister,vimContinue,vim9Comment,vimVar syn match vimOper "||\|&&\|[-+.!]" skipwhite nextgroup=vimString,vimSpecFile syn match vimOper "\%#=1\(==\|!=\|>=\|<=\|=\~\|!\~\|>\|<\|=\|!\~#\)[?#]\{0,2}" skipwhite nextgroup=vimString,vimSpecFile syn match vimOper "\(\<is\|\<isnot\)[?#]\{0,2}\>" skipwhite nextgroup=vimString,vimSpecFile @@ -299,7 +296,7 @@ syn match vimPatSep contained "\\|" syn region vimPatSepZone oneline contained matchgroup=vimPatSepZ start="\\%\=\ze(" skip="\\\\" end="\\)\|[^\\]['"]" contains=@vimStringGroup syn region vimPatRegion contained transparent matchgroup=vimPatSepR start="\\[z%]\=(" end="\\)" contains=@vimSubstList oneline syn match vimNotPatSep contained "\\\\" -syn cluster vimStringGroup contains=vimEscapeBrace,vimPatSep,vimNotPatSep,vimPatSepErr,vimPatSepZone,@Spell +syn cluster vimStringGroup contains=vimEscape,vimEscapeBrace,vimPatSep,vimNotPatSep,vimPatSepErr,vimPatSepZone,@Spell syn region vimString oneline keepend start=+[^a-zA-Z>!\\@]"+lc=1 skip=+\\\\\|\\"+ matchgroup=vimStringEnd end=+"+ contains=@vimStringGroup syn region vimString oneline keepend start=+[^a-zA-Z>!\\@]'+lc=1 end=+'+ syn region vimString oneline start=+=!+lc=1 skip=+\\\\\|\\!+ end=+!+ contains=@vimStringGroup @@ -307,6 +304,7 @@ syn region vimString oneline start="=+"lc=1 skip="\\\\\|\\+" end="+" contains=@v "syn region vimString oneline start="\s/\s*\A"lc=1 skip="\\\\\|\\+" end="/" contains=@vimStringGroup " see tst45.vim syn match vimString contained +"[^"]*\\$+ skipnl nextgroup=vimStringCont syn match vimStringCont contained +\(\\\\\|.\)\{-}[^\\]"+ +syn match vimEscape contained "\\." " Substitutions: {{{2 " ============= @@ -370,7 +368,7 @@ syn match vimSetMod contained "&vim\=\|[!&?<]\|all&" " Let: {{{2 " === syn keyword vimLet let unl[et] skipwhite nextgroup=vimVar,vimFuncVar,vimLetHereDoc -VimFoldh syn region vimLetHereDoc matchgroup=vimLetHereDocStart start='=<<\s\+\%(trim\>\)\=\s*\z(\L\S*\)' matchgroup=vimLetHereDocStop end='^\s*\z1\s*$' +VimFoldh syn region vimLetHereDoc matchgroup=vimLetHereDocStart start='=<<\s\+\%(trim\|eval\>\)\=\s*\z(\L\S*\)' matchgroup=vimLetHereDocStop end='^\s*\z1\s*$' " Abbreviations: {{{2 " ============= @@ -413,7 +411,7 @@ syn case match " Menus: {{{2 " ===== syn cluster vimMenuList contains=vimMenuBang,vimMenuPriority,vimMenuName,vimMenuMod -syn keyword vimCommand am[enu] an[oremenu] aun[menu] cme[nu] cnoreme[nu] cunme[nu] ime[nu] inoreme[nu] iunme[nu] me[nu] nme[nu] nnoreme[nu] noreme[nu] nunme[nu] ome[nu] onoreme[nu] ounme[nu] unme[nu] vme[nu] vnoreme[nu] vunme[nu] skipwhite nextgroup=@vimMenuList +syn keyword vimCommand am[enu] an[oremenu] aun[menu] cme[nu] cnoreme[nu] cunme[nu] ime[nu] inoreme[nu] iunme[nu] me[nu] nme[nu] nnoreme[nu] noreme[nu] nunme[nu] ome[nu] onoreme[nu] ounme[nu] tlm[enu] tln[oremenu] tlu[nmenu] unme[nu] vme[nu] vnoreme[nu] vunme[nu] skipwhite nextgroup=@vimMenuList syn match vimMenuName "[^ \t\\<]\+" contained nextgroup=vimMenuNameMore,vimMenuMap syn match vimMenuPriority "\d\+\(\.\d\+\)*" contained skipwhite nextgroup=vimMenuName syn match vimMenuNameMore "\c\\\s\|<tab>\|\\\." contained nextgroup=vimMenuName,vimMenuNameMore contains=vimNotation @@ -437,11 +435,11 @@ syn case match " User Function Highlighting: {{{2 " (following Gautam Iyer's suggestion) " ========================== -syn match vimFunc "\%(\%([sSgGbBwWtTlL]:\|<[sS][iI][dD]>\)\=\%(\w\+\.\)*\I[a-zA-Z0-9_.]*\)\ze\s*(" contains=vimFuncName,vimUserFunc,vimExecute +syn match vimFunc "\%(\%([sSgGbBwWtTlL]:\|<[sS][iI][dD]>\)\=\%(\w\+\.\)*\I[a-zA-Z0-9_.]*\)\ze\s*(" contains=vimFuncEcho,vimFuncName,vimUserFunc,vimExecute syn match vimUserFunc contained "\%(\%([sSgGbBwWtTlL]:\|<[sS][iI][dD]>\)\=\%(\w\+\.\)*\I[a-zA-Z0-9_.]*\)\|\<\u[a-zA-Z0-9.]*\>\|\<if\>" contains=vimNotation +syn keyword vimFuncEcho contained ec ech echo " User Command Highlighting: {{{2 -"syn match vimUsrCmd '^\s*\zs\u\w*.*$' syn match vimUsrCmd '^\s*\zs\u\%(\w*\)\@>\%([(#[]\|\s\+\%([-+*/%]\=\|\.\.\)=\)\@!' " Errors And Warnings: {{{2 @@ -574,7 +572,7 @@ syn match vimHiBang contained "!" skipwhite nextgroup=@vimHighlightCluster syn match vimHiGroup contained "\i\+" syn case ignore -syn keyword vimHiAttrib contained none bold inverse italic nocombine reverse standout strikethrough underline undercurl +syn keyword vimHiAttrib contained none bold inverse italic nocombine reverse standout strikethrough underline undercurl underdouble underdotted underdashed syn keyword vimFgBgAttrib contained none bg background fg foreground syn case match syn match vimHiAttribList contained "\i\+" contains=vimHiAttrib @@ -873,8 +871,10 @@ if !exists("skip_vim_syntax_inits") hi def link vimElseif vimCondHL hi def link vimEnvvar PreProc hi def link vimError Error + hi def link vimEscape Special hi def link vimFBVar vimVar hi def link vimFgBgAttrib vimHiAttrib + hi def link vimFuncEcho vimCommand hi def link vimHiCtermul vimHiTerm hi def link vimFold Folded hi def link vimFTCmd vimCommand 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 "[{}]" diff --git a/runtime/syntax/wget.vim b/runtime/syntax/wget.vim index 2587022f2e..8178d02bad 100644 --- a/runtime/syntax/wget.vim +++ b/runtime/syntax/wget.vim @@ -1,7 +1,9 @@ " Vim syntax file " Language: Wget configuration file (/etc/wgetrc ~/.wgetrc) " Maintainer: Doug Kearns <dougkearns@gmail.com> -" Last Change: 2013 Jun 1 +" Last Change: 2022 Apr 28 + +" GNU Wget 1.21 built on linux-gnu. if exists("b:current_syntax") finish @@ -18,155 +20,206 @@ syn region wgetString start=+"+ skip=+\\\\\|\\"+ end=+"+ contained oneline syn region wgetString start=+'+ skip=+\\\\\|\\'+ end=+'+ contained oneline syn case ignore -syn keyword wgetBoolean on off contained -syn keyword wgetNumber inf contained -syn case match -syn match wgetNumber "\<\%(\d\+\|inf\)\>" contained -syn match wgetQuota "\<\d\+[kKmM]\>" contained -syn match wgetTime "\<\d\+[smhdw]\>" contained +syn keyword wgetBoolean on off yes no contained +syn keyword wgetNumber inf contained + +syn match wgetNumber "\<\d\+>" contained +syn match wgetQuota "\<\d\+[kmgt]\>" contained +syn match wgetTime "\<\d\+[smhdw]\>" contained "{{{ Commands -let s:commands = map([ - \ "accept", - \ "add_hostdir", - \ "adjust_extension", - \ "always_rest", - \ "ask_password", - \ "auth_no_challenge", - \ "background", - \ "backup_converted", - \ "backups", - \ "base", - \ "bind_address", - \ "ca_certificate", - \ "ca_directory", - \ "cache", - \ "certificate", - \ "certificate_type", - \ "check_certificate", - \ "connect_timeout", - \ "content_disposition", - \ "continue", - \ "convert_links", - \ "cookies", - \ "cut_dirs", - \ "debug", - \ "default_page", - \ "delete_after", - \ "dns_cache", - \ "dns_timeout", - \ "dir_prefix", - \ "dir_struct", - \ "domains", - \ "dot_bytes", - \ "dots_in_line", - \ "dot_spacing", - \ "dot_style", - \ "egd_file", - \ "exclude_directories", - \ "exclude_domains", - \ "follow_ftp", - \ "follow_tags", - \ "force_html", - \ "ftp_passwd", - \ "ftp_password", - \ "ftp_user", - \ "ftp_proxy", - \ "glob", - \ "header", - \ "html_extension", - \ "htmlify", - \ "http_keep_alive", - \ "http_passwd", - \ "http_password", - \ "http_proxy", - \ "https_proxy", - \ "http_user", - \ "ignore_case", - \ "ignore_length", - \ "ignore_tags", - \ "include_directories", - \ "inet4_only", - \ "inet6_only", - \ "input", - \ "iri", - \ "keep_session_cookies", - \ "kill_longer", - \ "limit_rate", - \ "load_cookies", - \ "locale", - \ "local_encoding", - \ "logfile", - \ "login", - \ "max_redirect", - \ "mirror", - \ "netrc", - \ "no_clobber", - \ "no_parent", - \ "no_proxy", - \ "numtries", - \ "output_document", - \ "page_requisites", - \ "passive_ftp", - \ "passwd", - \ "password", - \ "post_data", - \ "post_file", - \ "prefer_family", - \ "preserve_permissions", - \ "private_key", - \ "private_key_type", - \ "progress", - \ "protocol_directories", - \ "proxy_passwd", - \ "proxy_password", - \ "proxy_user", - \ "quiet", - \ "quota", - \ "random_file", - \ "random_wait", - \ "read_timeout", - \ "reclevel", - \ "recursive", - \ "referer", - \ "reject", - \ "relative_only", - \ "remote_encoding", - \ "remove_listing", - \ "restrict_file_names", - \ "retr_symlinks", - \ "retry_connrefused", - \ "robots", - \ "save_cookies", - \ "save_headers", - \ "secure_protocol", - \ "server_response", - \ "show_all_dns_entries", - \ "simple_host_check", - \ "span_hosts", - \ "spider", - \ "strict_comments", - \ "sslcertfile", - \ "sslcertkey", - \ "timeout", - \ "time_stamping", - \ "use_server_timestamps", - \ "tries", - \ "trust_server_names", - \ "user", - \ "use_proxy", - \ "user_agent", - \ "verbose", - \ "wait", - \ "wait_retry"], - \ "substitute(v:val, '_', '[-_]\\\\=', 'g')") +let s:commands =<< trim EOL + accept + accept_regex + add_host_dir + adjust_extension + always_rest + ask_password + auth_no_challenge + background + backup_converted + backups + base + bind_address + bind_dns_address + body_data + body_file + ca_certificate + ca_directory + cache + certificate + certificate_type + check_certificate + choose_config + ciphers + compression + connect_timeout + content_disposition + content_on_error + continue + convert_file_only + convert_links + cookies + crl_file + cut_dirs + debug + default_page + delete_after + dns_cache + dns_servers + dns_timeout + dir_prefix + dir_struct + domains + dot_bytes + dots_in_line + dot_spacing + dot_style + egd_file + exclude_directories + exclude_domains + follow_ftp + follow_tags + force_html + ftp_passwd + ftp_password + ftp_user + ftp_proxy + ftps_clear_data_connection + ftps_fallback_to_ftp + ftps_implicit + ftps_resume_ssl + hsts + hsts_file + ftp_stmlf + glob + header + html_extension + htmlify + http_keep_alive + http_passwd + http_password + http_proxy + https_proxy + https_only + http_user + if_modified_since + ignore_case + ignore_length + ignore_tags + include_directories + inet4_only + inet6_only + input + input_meta_link + iri + keep_bad_hash + keep_session_cookies + kill_longer + limit_rate + load_cookies + locale + local_encoding + logfile + login + max_redirect + metalink_index + metalink_over_http + method + mirror + netrc + no_clobber + no_config + no_parent + no_proxy + numtries + output_document + page_requisites + passive_ftp + passwd + password + pinned_pubkey + post_data + post_file + prefer_family + preferred_location + preserve_permissions + private_key + private_key_type + progress + protocol_directories + proxy_passwd + proxy_password + proxy_user + quiet + quota + random_file + random_wait + read_timeout + rec_level + recursive + referer + regex_type + reject + rejected_log + reject_regex + relative_only + remote_encoding + remove_listing + report_speed + restrict_file_names + retr_symlinks + retry_connrefused + retry_on_host_error + retry_on_http_error + robots + save_cookies + save_headers + secure_protocol + server_response + show_all_dns_entries + show_progress + simple_host_check + span_hosts + spider + start_pos + strict_comments + sslcertfile + sslcertkey + timeout + timestamping + use_server_timestamps + tries + trust_server_names + unlink + use_askpass + user + use_proxy + user_agent + verbose + wait + wait_retry + warc_cdx + warc_cdx_dedup + warc_compression + warc_digests + warc_file + warc_header + warc_keep_log + warc_max_size + warc_temp_dir + wdebug + xattr +EOL "}}} -syn case ignore +call map(s:commands, "substitute(v:val, '_', '[-_]\\\\=', 'g')") + for cmd in s:commands - exe 'syn match wgetCommand "' . cmd . '" nextgroup=wgetAssignmentOperator skipwhite contained' + exe 'syn match wgetCommand "\<' . cmd . '\>" nextgroup=wgetAssignmentOperator skipwhite contained' endfor + syn case match syn match wgetStart "^" nextgroup=wgetCommand,wgetComment skipwhite @@ -179,6 +232,7 @@ hi def link wgetComment Comment hi def link wgetNumber Number hi def link wgetQuota Number hi def link wgetString String +hi def link wgetTime Number hi def link wgetTodo Todo let b:current_syntax = "wget" diff --git a/runtime/syntax/wget2.vim b/runtime/syntax/wget2.vim new file mode 100644 index 0000000000..a63c336f06 --- /dev/null +++ b/runtime/syntax/wget2.vim @@ -0,0 +1,250 @@ +" Vim syntax file +" Language: Wget2 configuration file (/etc/wget2rc ~/.wget2rc) +" Maintainer: Doug Kearns <dougkearns@gmail.com> +" Last Change: 2022 Apr 28 + +" GNU Wget2 2.0.0 - multithreaded metalink/file/website downloader + +if exists("b:current_syntax") + finish +endif + +let s:cpo_save = &cpo +set cpo&vim + +syn match wgetComment "#.*$" contains=wgetTodo contained + +syn keyword wgetTodo TODO NOTE FIXME XXX contained + +syn region wgetString start=+"+ skip=+\\\\\|\\"+ end=+"+ contained oneline +syn region wgetString start=+'+ skip=+\\\\\|\\'+ end=+'+ contained oneline + +syn case ignore + +syn keyword wgetBoolean on off yes no y n contained +syn keyword wgetNumber infinity inf contained + +syn match wgetNumber "\<\d\+>" contained +syn match wgetQuota "\<\d\+[kmgt]\>" contained +syn match wgetTime "\<\d\+[smhd]\>" contained + +"{{{ Commands +let s:commands =<< trim EOL + accept + accept-regex + adjust-extension + append-output + ask-password + auth-no-challenge + background + backup-converted + backups + base + bind-address + bind-interface + body-data + body-file + ca-certificate + ca-directory + cache + certificate + certificate-type + check-certificate + check-hostname + chunk-size + clobber + compression + config + connect-timeout + content-disposition + content-on-error + continue + convert-file-only + convert-links + cookie-suffixes + cookies + crl-file + cut-dirs + cut-file-get-vars + cut-url-get-vars + debug + default-http-port + default-https-port + default-page + delete-after + directories + directory-prefix + dns-cache + dns-cache-preload + dns-timeout + domains + download-attr + egd-file + exclude-directories + exclude-domains + execute + filter-mime-type + filter-urls + follow-tags + force-atom + force-css + force-directories + force-html + force-metalink + force-progress + force-rss + force-sitemap + fsync-policy + gnupg-homedir + header + help + host-directories + hpkp + hpkp-file + hsts + hsts-file + hsts-preload + hsts-preload-file + html-extension + http-keep-alive + http-password + http-proxy + http-proxy-password + http-proxy-user + http-user + http2 + http2-only + http2-request-window + https-enforce + https-only + https-proxy + hyperlink + if-modified-since + ignore-case + ignore-length + ignore-tags + include-directories + inet4-only + inet6-only + input-encoding + input-file + keep-extension + keep-session-cookies + level + limit-rate + list-plugins + load-cookies + local-db + local-encoding + local-plugin + max-redirect + max-threads + metalink + method + mirror + netrc + netrc-file + ocsp + ocsp-date + ocsp-file + ocsp-nonce + ocsp-server + ocsp-stapling + output-document + output-file + page-requisites + parent + password + plugin + plugin-dirs + plugin-help + plugin-opt + post-data + post-file + prefer-family + private-key + private-key-type + progress + protocol-directories + proxy + quiet + quota + random-file + random-wait + read-timeout + recursive + referer + regex-type + reject + reject-regex + remote-encoding + report-speed + restrict-file-names + retry-connrefused + retry-on-http-error + robots + save-content-on + save-cookies + save-headers + secure-protocol + server-response + signature-extensions + span-hosts + spider + start-pos + stats-dns + stats-ocsp + stats-server + stats-site + stats-tls + strict-comments + tcp-fastopen + timeout + timestamping + tls-false-start + tls-resume + tls-session-file + tries + trust-server-names + unlink + use-askpass + use-server-timestamps + user + user-agent + verbose + verify-save-failed + verify-sig + version + wait + waitretry + xattr +EOL +"}}} + +call map(s:commands, "substitute(v:val, '_', '[-_]\\\\=', 'g')") + +for cmd in s:commands + exe 'syn match wgetCommand "\<' . cmd . '\>" nextgroup=wgetAssignmentOperator skipwhite contained' +endfor + +syn case match + +syn match wgetStart "^" nextgroup=wgetCommand,wgetComment skipwhite +syn match wgetAssignmentOperator "=" nextgroup=wgetString,wgetBoolean,wgetNumber,wgetQuota,wgetTime skipwhite contained + +hi def link wgetAssignmentOperator Special +hi def link wgetBoolean Boolean +hi def link wgetCommand Identifier +hi def link wgetComment Comment +hi def link wgetNumber Number +hi def link wgetQuota Number +hi def link wgetString String +hi def link wgetTime Number +hi def link wgetTodo Todo + +let b:current_syntax = "wget" + +let &cpo = s:cpo_save +unlet s:cpo_save + +" vim: ts=8 fdm=marker: diff --git a/runtime/syntax/xs.vim b/runtime/syntax/xs.vim index 3e658b4a83..2145ede2dd 100644 --- a/runtime/syntax/xs.vim +++ b/runtime/syntax/xs.vim @@ -1,9 +1,12 @@ " Vim syntax file -" Language: XS (Perl extension interface language) -" Author: Autogenerated from perl headers, on an original basis of Michael W. Dodge <sarge@pobox.com> -" Maintainer: vim-perl <vim-perl@googlegroups.com> -" Previous: Vincent Pit <perl@profvince.com> -" Last Change: 2017-09-12 +" Language: XS (Perl extension interface language) +" Author: Autogenerated from perl headers, on an original basis of Michael W. Dodge <sarge@pobox.com> +" Maintainer: vim-perl <vim-perl@googlegroups.com> +" Previous: Vincent Pit <perl@profvince.com> +" Homepage: https://github.com/vim-perl/vim-perl +" Bugs/requests: https://github.com/vim-perl/vim-perl/issues +" License: Vim License (see :help license) +" Last Change: 2018 Mar 28 if exists("b:current_syntax") finish |