1071d4279SBram Moolenaar" Vim syntax file 25c73622aSBram Moolenaar" Language: Tcl/Tk 35c73622aSBram Moolenaar" Maintainer: Taylor Venable <[email protected]> 45c73622aSBram Moolenaar" (previously Brett Cannon <[email protected]>) 5c81e5e79SBram Moolenaar" (previously Dean Copsey <[email protected]>) 6071d4279SBram Moolenaar" (previously Matt Neumann <[email protected]>) 7071d4279SBram Moolenaar" (previously Allan Kelly <[email protected]>) 8071d4279SBram Moolenaar" Original: Robin Becker <[email protected]> 9*519cc559SBram Moolenaar" Last Change: 2021 Nov 16 10*519cc559SBram Moolenaar" Version: 1.14 plus improvements from PR #8948 116e649224SBram Moolenaar" URL: (removed, no longer worked) 12071d4279SBram Moolenaar 1389bcfda6SBram Moolenaar" quit when a syntax file was already loaded 1489bcfda6SBram Moolenaarif exists("b:current_syntax") 15071d4279SBram Moolenaar finish 16071d4279SBram Moolenaarendif 17071d4279SBram Moolenaar 18251835e1SBram Moolenaar" Basic Tcl commands: http://www.tcl.tk/man/tcl8.6/TclCmd/contents.htm 19251835e1SBram Moolenaarsyn keyword tclCommand after append array bgerror binary cd chan clock close concat 20251835e1SBram Moolenaarsyn keyword tclCommand dde dict encoding eof error eval exec exit expr fblocked 21251835e1SBram Moolenaarsyn keyword tclCommand fconfigure fcopy file fileevent flush format gets glob 22251835e1SBram Moolenaarsyn keyword tclCommand global history http incr info interp join lappend lassign 23251835e1SBram Moolenaarsyn keyword tclCommand lindex linsert list llength lmap load lrange lrepeat 24251835e1SBram Moolenaarsyn keyword tclCommand lreplace lreverse lsearch lset lsort memory my namespace 25251835e1SBram Moolenaarsyn keyword tclCommand next nextto open package pid puts pwd read refchan regexp 26251835e1SBram Moolenaarsyn keyword tclCommand registry regsub rename scan seek self set socket source 27251835e1SBram Moolenaarsyn keyword tclCommand split string subst tell time trace unknown unload unset 28251835e1SBram Moolenaarsyn keyword tclCommand update uplevel upvar variable vwait 295c73622aSBram Moolenaar 30251835e1SBram Moolenaar" The 'Tcl Standard Library' commands: http://www.tcl.tk/man/tcl8.6/TclCmd/library.htm 31251835e1SBram Moolenaarsyn keyword tclCommand auto_execok auto_import auto_load auto_mkindex auto_reset 32251835e1SBram Moolenaarsyn keyword tclCommand auto_qualify tcl_findLibrary parray tcl_endOfWord 33251835e1SBram Moolenaarsyn keyword tclCommand tcl_startOfNextWord tcl_startOfPreviousWord 34251835e1SBram Moolenaarsyn keyword tclCommand tcl_wordBreakAfter tcl_wordBreakBefore 355c73622aSBram Moolenaar 36251835e1SBram Moolenaar" Global variables used by Tcl: http://www.tcl.tk/man/tcl8.6/TclCmd/tclvars.htm 37251835e1SBram Moolenaarsyn keyword tclVars auto_path env errorCode errorInfo tcl_library tcl_patchLevel 38251835e1SBram Moolenaarsyn keyword tclVars tcl_pkgPath tcl_platform tcl_precision tcl_rcFileName 39251835e1SBram Moolenaarsyn keyword tclVars tcl_traceCompile tcl_traceExec tcl_wordchars 40251835e1SBram Moolenaarsyn keyword tclVars tcl_nonwordchars tcl_version argc argv argv0 tcl_interactive 415c73622aSBram Moolenaar 425c73622aSBram Moolenaar" Strings which expr accepts as boolean values, aside from zero / non-zero. 435c73622aSBram Moolenaarsyn keyword tclBoolean true false on off yes no 445c73622aSBram Moolenaar 45251835e1SBram Moolenaarsyn keyword tclProcCommand apply coroutine proc return tailcall yield yieldto 46071d4279SBram Moolenaarsyn keyword tclConditional if then else elseif switch 47251835e1SBram Moolenaarsyn keyword tclConditional catch try throw finally 48251835e1SBram Moolenaarsyn keyword tclLabel default 49071d4279SBram Moolenaarsyn keyword tclRepeat while for foreach break continue 50251835e1SBram Moolenaar 51071d4279SBram Moolenaarsyn keyword tcltkSwitch contained insert create polygon fill outline tag 52071d4279SBram Moolenaar 53071d4279SBram Moolenaar" WIDGETS 54071d4279SBram Moolenaar" commands associated with widgets 55071d4279SBram Moolenaarsyn keyword tcltkWidgetSwitch contained background highlightbackground insertontime cget 56071d4279SBram Moolenaarsyn keyword tcltkWidgetSwitch contained selectborderwidth borderwidth highlightcolor insertwidth 57071d4279SBram Moolenaarsyn keyword tcltkWidgetSwitch contained selectforeground cursor highlightthickness padx setgrid 58071d4279SBram Moolenaarsyn keyword tcltkWidgetSwitch contained exportselection insertbackground pady takefocus 59071d4279SBram Moolenaarsyn keyword tcltkWidgetSwitch contained font insertborderwidth relief xscrollcommand 60071d4279SBram Moolenaarsyn keyword tcltkWidgetSwitch contained foreground insertofftime selectbackground yscrollcommand 61071d4279SBram Moolenaarsyn keyword tcltkWidgetSwitch contained height spacing1 spacing2 spacing3 62071d4279SBram Moolenaarsyn keyword tcltkWidgetSwitch contained state tabs width wrap 63071d4279SBram Moolenaar" button 64071d4279SBram Moolenaarsyn keyword tcltkWidgetSwitch contained command default 65071d4279SBram Moolenaar" canvas 66071d4279SBram Moolenaarsyn keyword tcltkWidgetSwitch contained closeenough confine scrollregion xscrollincrement yscrollincrement orient 67071d4279SBram Moolenaar" checkbutton, radiobutton 68071d4279SBram Moolenaarsyn keyword tcltkWidgetSwitch contained indicatoron offvalue onvalue selectcolor selectimage state variable 69071d4279SBram Moolenaar" entry, frame 70071d4279SBram Moolenaarsyn keyword tcltkWidgetSwitch contained show class colormap container visual 71071d4279SBram Moolenaar" listbox, menu 72071d4279SBram Moolenaarsyn keyword tcltkWidgetSwitch contained selectmode postcommand selectcolor tearoff tearoffcommand title type 73071d4279SBram Moolenaar" menubutton, message 74071d4279SBram Moolenaarsyn keyword tcltkWidgetSwitch contained direction aspect justify 75071d4279SBram Moolenaar" scale 76071d4279SBram Moolenaarsyn keyword tcltkWidgetSwitch contained bigincrement digits from length resolution showvalue sliderlength sliderrelief tickinterval to 77071d4279SBram Moolenaar" scrollbar 78071d4279SBram Moolenaarsyn keyword tcltkWidgetSwitch contained activerelief elementborderwidth 79071d4279SBram Moolenaar" image 80071d4279SBram Moolenaarsyn keyword tcltkWidgetSwitch contained delete names types create 81071d4279SBram Moolenaar" variable reference 82071d4279SBram Moolenaar " ::optional::namespaces 835c73622aSBram Moolenaarsyn match tclVarRef "$\(\(::\)\?\([[:alnum:]_]*::\)*\)\a[[:alnum:]_]*" 84071d4279SBram Moolenaar " ${...} may contain any character except '}' 85071d4279SBram Moolenaarsyn match tclVarRef "${[^}]*}" 865c73622aSBram Moolenaar 87251835e1SBram Moolenaar" Used to facilitate hack to utilize string background for certain color 88251835e1SBram Moolenaar" schemes, e.g. inkpot and lettuce. 89251835e1SBram Moolenaarsyn cluster tclVarRefC add=tclVarRef 90251835e1SBram Moolenaarsyn cluster tclSpecialC add=tclSpecial 91251835e1SBram Moolenaar 925c73622aSBram Moolenaar" The syntactic unquote-splicing replacement for [expand]. 935c73622aSBram Moolenaarsyn match tclExpand '\s{\*}' 945c73622aSBram Moolenaarsyn match tclExpand '^{\*}' 955c73622aSBram Moolenaar 96071d4279SBram Moolenaar" menu, mane add 97071d4279SBram Moolenaarsyn keyword tcltkWidgetSwitch contained active end last none cascade checkbutton command radiobutton separator 98071d4279SBram Moolenaarsyn keyword tcltkWidgetSwitch contained activebackground actveforeground accelerator background bitmap columnbreak 99071d4279SBram Moolenaarsyn keyword tcltkWidgetSwitch contained font foreground hidemargin image indicatoron label menu offvalue onvalue 100071d4279SBram Moolenaarsyn keyword tcltkWidgetSwitch contained selectcolor selectimage state underline value variable 101071d4279SBram Moolenaarsyn keyword tcltkWidgetSwitch contained add clone configure delete entrycget entryconfigure index insert invoke 102071d4279SBram Moolenaarsyn keyword tcltkWidgetSwitch contained post postcascade type unpost yposition activate 103071d4279SBram Moolenaar"syn keyword tcltkWidgetSwitch contained 104071d4279SBram Moolenaar"syn match tcltkWidgetSwitch contained 105071d4279SBram Moolenaarsyn region tcltkWidget matchgroup=tcltkWidgetColor start="\<button\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef 106071d4279SBram Moolenaarsyn region tcltkWidget matchgroup=tcltkWidgetColor start="\<scale\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef 107071d4279SBram Moolenaar 108071d4279SBram Moolenaarsyn region tcltkWidget matchgroup=tcltkWidgetColor start="\<canvas\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef 109071d4279SBram Moolenaarsyn region tcltkWidget matchgroup=tcltkWidgetColor start="\<checkbutton\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef 110071d4279SBram Moolenaarsyn region tcltkWidget matchgroup=tcltkWidgetColor start="\<entry\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef 111071d4279SBram Moolenaarsyn region tcltkWidget matchgroup=tcltkWidgetColor start="\<frame\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef 112071d4279SBram Moolenaarsyn region tcltkWidget matchgroup=tcltkWidgetColor start="\<image\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef 113071d4279SBram Moolenaarsyn region tcltkWidget matchgroup=tcltkWidgetColor start="\<listbox\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef 114071d4279SBram Moolenaarsyn region tcltkWidget matchgroup=tcltkWidgetColor start="\<menubutton\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef 115071d4279SBram Moolenaarsyn region tcltkWidget matchgroup=tcltkWidgetColor start="\<message\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef 116071d4279SBram Moolenaarsyn region tcltkWidget matchgroup=tcltkWidgetColor start="\<radiobutton\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef 117071d4279SBram Moolenaarsyn region tcltkWidget matchgroup=tcltkWidgetColor start="\<scrollbar\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef 118071d4279SBram Moolenaar" These words are dual purpose. 119071d4279SBram Moolenaar" match switches 120071d4279SBram Moolenaar"syn match tcltkWidgetSwitch contained "-text"hs=s+1 121071d4279SBram Moolenaarsyn match tcltkWidgetSwitch contained "-text\(var\)\?"hs=s+1 122071d4279SBram Moolenaarsyn match tcltkWidgetSwitch contained "-menu"hs=s+1 123071d4279SBram Moolenaarsyn match tcltkWidgetSwitch contained "-label"hs=s+1 124071d4279SBram Moolenaar" match commands - 2 lines for pretty match. 125071d4279SBram Moolenaar"variable 126071d4279SBram Moolenaar" Special case - If a number follows a variable region, it must be at the end of 127071d4279SBram Moolenaar" the pattern, by definition. Therefore, (1) either include a number as the region 128071d4279SBram Moolenaar" end and exclude tclNumber from the contains list, or (2) make variable 129071d4279SBram Moolenaar" keepend. As (1) would put variable out of step with everything else, use (2). 130071d4279SBram Moolenaarsyn region tcltkCommand matchgroup=tcltkCommandColor start="^\<variable\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tclString,tclNumber,tclVarRef,tcltkCommand 131071d4279SBram Moolenaarsyn region tcltkCommand matchgroup=tcltkCommandColor start="\s\<variable\>\|\[\<variable\>"hs=s+1 matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tclString,tclNumber,tclVarRef,tcltkCommand 132071d4279SBram Moolenaar" menu 133071d4279SBram Moolenaarsyn region tcltkWidget matchgroup=tcltkWidgetColor start="^\<menu\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef 134071d4279SBram Moolenaarsyn region tcltkWidget matchgroup=tcltkWidgetColor start="\s\<menu\>\|\[\<menu\>"hs=s+1 matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef 135071d4279SBram Moolenaar" label 136071d4279SBram Moolenaarsyn region tcltkWidget matchgroup=tcltkWidgetColor start="^\<label\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef 137071d4279SBram Moolenaarsyn region tcltkWidget matchgroup=tcltkWidgetColor start="\s\<label\>\|\[\<label\>"hs=s+1 matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef 138071d4279SBram Moolenaar" text 139071d4279SBram Moolenaarsyn region tcltkWidget matchgroup=tcltkWidgetColor start="^\<text\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidget,tcltkWidgetSwitch,tcltkSwitch,tclNumber,tclVarRef,tclString 140071d4279SBram Moolenaarsyn region tcltkWidget matchgroup=tcltkWidgetColor start="\s\<text\>\|\[\<text\>"hs=s+1 matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidget,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef 141071d4279SBram Moolenaar 142071d4279SBram Moolenaar" This isn't contained (I don't think) so it's OK to just associate with the Color group. 143071d4279SBram Moolenaar" TODO: This could be wrong. 144071d4279SBram Moolenaarsyn keyword tcltkWidgetColor toplevel 145071d4279SBram Moolenaar 146071d4279SBram Moolenaar 147071d4279SBram Moolenaarsyn region tcltkPackConf matchgroup=tcltkPackConfColor start="\<configure\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tcltkPackConfSwitch,tclNumber,tclVarRef keepend 148071d4279SBram Moolenaarsyn region tcltkPackConf matchgroup=tcltkPackConfColor start="\<cget\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"me=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tcltkPackConfSwitch,tclNumber,tclVarRef 149071d4279SBram Moolenaar 150071d4279SBram Moolenaar 151071d4279SBram Moolenaar" NAMESPACE 152071d4279SBram Moolenaar" commands associated with namespace 153071d4279SBram Moolenaarsyn keyword tcltkNamespaceSwitch contained children code current delete eval 154071d4279SBram Moolenaarsyn keyword tcltkNamespaceSwitch contained export forget import inscope origin 155071d4279SBram Moolenaarsyn keyword tcltkNamespaceSwitch contained parent qualifiers tail which command variable 156071d4279SBram Moolenaarsyn region tcltkCommand matchgroup=tcltkCommandColor start="\<namespace\>" matchgroup=NONE skip="^\s*$" end="{\|}\|]\|\"\|[^\\]*\s*$"me=e-1 contains=tclLineContinue,tcltkNamespaceSwitch 157071d4279SBram Moolenaar 158071d4279SBram Moolenaar" EXPR 159071d4279SBram Moolenaar" commands associated with expr 1605c73622aSBram Moolenaarsyn keyword tcltkMaths contained abs acos asin atan atan2 bool ceil cos cosh double entier 1615c73622aSBram Moolenaarsyn keyword tcltkMaths contained exp floor fmod hypot int isqrt log log10 max min pow rand 1625c73622aSBram Moolenaarsyn keyword tcltkMaths contained round sin sinh sqrt srand tan tanh wide 1635c73622aSBram Moolenaar 164071d4279SBram Moolenaarsyn region tcltkCommand matchgroup=tcltkCommandColor start="\<expr\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"me=e-1 contains=tclLineContinue,tcltkMaths,tclNumber,tclVarRef,tclString,tcltlWidgetSwitch,tcltkCommand,tcltkPackConf 165071d4279SBram Moolenaar 166071d4279SBram Moolenaar" format 167071d4279SBram Moolenaarsyn region tcltkCommand matchgroup=tcltkCommandColor start="\<format\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"me=e-1 contains=tclLineContinue,tcltkMaths,tclNumber,tclVarRef,tclString,tcltlWidgetSwitch,tcltkCommand,tcltkPackConf 168071d4279SBram Moolenaar 169071d4279SBram Moolenaar" PACK 170071d4279SBram Moolenaar" commands associated with pack 1716c391a74SBram Moolenaarsyn keyword tcltkPackSwitch contained forget info propagate slaves 172071d4279SBram Moolenaarsyn keyword tcltkPackConfSwitch contained after anchor before expand fill in ipadx ipady padx pady side 173071d4279SBram Moolenaarsyn region tcltkCommand matchgroup=tcltkCommandColor start="\<pack\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkPackSwitch,tcltkPackConf,tcltkPackConfSwitch,tclNumber,tclVarRef,tclString,tcltkCommand keepend 174071d4279SBram Moolenaar 175071d4279SBram Moolenaar" STRING 176071d4279SBram Moolenaar" commands associated with string 177071d4279SBram Moolenaarsyn keyword tcltkStringSwitch contained compare first index last length match range tolower toupper trim trimleft trimright wordstart wordend 178071d4279SBram Moolenaarsyn region tcltkCommand matchgroup=tcltkCommandColor start="\<string\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkStringSwitch,tclNumber,tclVarRef,tclString,tcltkCommand 179071d4279SBram Moolenaar 180071d4279SBram Moolenaar" ARRAY 181071d4279SBram Moolenaar" commands associated with array 182071d4279SBram Moolenaarsyn keyword tcltkArraySwitch contained anymore donesearch exists get names nextelement size startsearch set 183071d4279SBram Moolenaar" match from command name to ] or EOL 184071d4279SBram Moolenaarsyn region tcltkCommand matchgroup=tcltkCommandColor start="\<array\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkArraySwitch,tclNumber,tclVarRef,tclString,tcltkCommand 185071d4279SBram Moolenaar 186071d4279SBram Moolenaar" LSORT 187071d4279SBram Moolenaar" switches for lsort 188071d4279SBram Moolenaarsyn keyword tcltkLsortSwitch contained ascii dictionary integer real command increasing decreasing index 189071d4279SBram Moolenaar" match from command name to ] or EOL 190071d4279SBram Moolenaarsyn region tcltkCommand matchgroup=tcltkCommandColor start="\<lsort\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkLsortSwitch,tclNumber,tclVarRef,tclString,tcltkCommand 191071d4279SBram Moolenaar 192071d4279SBram Moolenaarsyn keyword tclTodo contained TODO 193071d4279SBram Moolenaar 1945c73622aSBram Moolenaar" Sequences which are backslash-escaped: http://www.tcl.tk/man/tcl8.5/TclCmd/Tcl.htm#M16 195*519cc559SBram Moolenaar" Octal, hexadecimal, Unicode codepoints, and the classics. 1965c73622aSBram Moolenaar" Tcl takes as many valid characters in a row as it can, so \xAZ in a string is newline followed by 'Z'. 197*519cc559SBram Moolenaarsyn match tclSpecial contained '\\\(\o\{1,3}\|x\x\{1,2}\|u\x\{1,4}\|[abfnrtv]\)' 1985c73622aSBram Moolenaarsyn match tclSpecial contained '\\[\[\]\{\}\"\$]' 199071d4279SBram Moolenaar 2005c73622aSBram Moolenaar" Command appearing inside another command or inside a string. 2015c73622aSBram Moolenaarsyn region tclEmbeddedStatement start='\[' end='\]' contained contains=tclCommand,tclNumber,tclLineContinue,tclString,tclVarRef,tclEmbeddedStatement 202071d4279SBram Moolenaar" A string needs the skip argument as it may legitimately contain \". 203071d4279SBram Moolenaar" Match at start of line 204*519cc559SBram Moolenaarsyn region tclString start=+^"+ end=+"+ contains=@tclSpecialC,@Spell skip=+\\\\\|\\"+ 205071d4279SBram Moolenaar"Match all other legal strings. 206*519cc559SBram Moolenaarsyn region tclString start=+[^\\]"+ms=s+1 end=+"+ contains=@tclSpecialC,@tclVarRefC,tclEmbeddedStatement,@Spell skip=+\\\\\|\\"+ 207071d4279SBram Moolenaar 2085c73622aSBram Moolenaar" Line continuation is backslash immediately followed by newline. 2095c73622aSBram Moolenaarsyn match tclLineContinue '\\$' 2105c73622aSBram Moolenaar 2115c73622aSBram Moolenaarif exists('g:tcl_warn_continuation') 2125c73622aSBram Moolenaar syn match tclNotLineContinue '\\\s\+$' 2135c73622aSBram Moolenaarendif 214071d4279SBram Moolenaar 215071d4279SBram Moolenaar"integer number, or floating point number without a dot and with "f". 216071d4279SBram Moolenaarsyn case ignore 217071d4279SBram Moolenaarsyn match tclNumber "\<\d\+\(u\=l\=\|lu\|f\)\>" 218071d4279SBram Moolenaar"floating point number, with dot, optional exponent 219071d4279SBram Moolenaarsyn match tclNumber "\<\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=\>" 220071d4279SBram Moolenaar"floating point number, starting with a dot, optional exponent 221071d4279SBram Moolenaarsyn match tclNumber "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>" 222071d4279SBram Moolenaar"floating point number, without dot, with exponent 223071d4279SBram Moolenaarsyn match tclNumber "\<\d\+e[-+]\=\d\+[fl]\=\>" 224071d4279SBram Moolenaar"hex number 225*519cc559SBram Moolenaarsyn match tclNumber "0x\x\+\(u\=l\=\|lu\)\>" 226*519cc559SBram Moolenaar"syn match tclIdentifier "\<\h\w*\>" 227071d4279SBram Moolenaarsyn case match 228071d4279SBram Moolenaar 229*519cc559SBram Moolenaarsyn region tclComment start="^\s*\#" skip="\\$" end="$" contains=tclTodo,@Spell 230*519cc559SBram Moolenaarsyn region tclComment start=/;\s*\#/hs=s+1 skip="\\$" end="$" contains=tclTodo,@Spell 231071d4279SBram Moolenaar 232251835e1SBram Moolenaar"syn match tclComment /^\s*\#.*$/ 233251835e1SBram Moolenaar"syn match tclComment /;\s*\#.*$/hs=s+1 234251835e1SBram Moolenaar 235071d4279SBram Moolenaar"syn sync ccomment tclComment 236071d4279SBram Moolenaar 237071d4279SBram Moolenaar" Define the default highlighting. 23889bcfda6SBram Moolenaar" Only when an item doesn't have highlighting yet 239071d4279SBram Moolenaar 240f37506f6SBram Moolenaarhi def link tcltkSwitch Special 241f37506f6SBram Moolenaarhi def link tclExpand Special 242f37506f6SBram Moolenaarhi def link tclLabel Label 243f37506f6SBram Moolenaarhi def link tclConditional Conditional 244f37506f6SBram Moolenaarhi def link tclRepeat Repeat 245f37506f6SBram Moolenaarhi def link tclNumber Number 246f37506f6SBram Moolenaarhi def link tclError Error 247f37506f6SBram Moolenaarhi def link tclCommand Statement 248f37506f6SBram Moolenaarhi def link tclProcCommand Type 249f37506f6SBram Moolenaarhi def link tclString String 250f37506f6SBram Moolenaarhi def link tclComment Comment 251f37506f6SBram Moolenaarhi def link tclSpecial Special 252f37506f6SBram Moolenaarhi def link tclTodo Todo 253071d4279SBram Moolenaar" Below here are the commands and their options. 254f37506f6SBram Moolenaarhi def link tcltkCommandColor Statement 255f37506f6SBram Moolenaarhi def link tcltkWidgetColor Structure 256f37506f6SBram Moolenaarhi def link tclLineContinue WarningMsg 2575c73622aSBram Moolenaarif exists('g:tcl_warn_continuation') 258f37506f6SBram Moolenaarhi def link tclNotLineContinue ErrorMsg 2595c73622aSBram Moolenaarendif 260f37506f6SBram Moolenaarhi def link tcltkStringSwitch Special 261f37506f6SBram Moolenaarhi def link tcltkArraySwitch Special 262f37506f6SBram Moolenaarhi def link tcltkLsortSwitch Special 263f37506f6SBram Moolenaarhi def link tcltkPackSwitch Special 264f37506f6SBram Moolenaarhi def link tcltkPackConfSwitch Special 265f37506f6SBram Moolenaarhi def link tcltkMaths Special 266f37506f6SBram Moolenaarhi def link tcltkNamespaceSwitch Special 267f37506f6SBram Moolenaarhi def link tcltkWidgetSwitch Special 268f37506f6SBram Moolenaarhi def link tcltkPackConfColor Identifier 269f37506f6SBram Moolenaarhi def link tclVarRef Identifier 270071d4279SBram Moolenaar 271071d4279SBram Moolenaar 272071d4279SBram Moolenaarlet b:current_syntax = "tcl" 273071d4279SBram Moolenaar 274251835e1SBram Moolenaar" vim: ts=8 noet nolist 275