ref: 4d4fcc4d64f9d3266aa355bb89d484c95c014724
dir: /lib/vimfiles/syntax/tcl.vim/
" Vim syntax file " Language: TCL/TK " Maintainer: Brett Cannon <brett@python.org> " (previously Dean Copsey <copsey@cs.ucdavis.edu>) " (previously Matt Neumann <mattneu@purpleturtle.com>) " (previously Allan Kelly <allan@fruitloaf.co.uk>) " Original: Robin Becker <robin@jessikat.demon.co.uk> " Last Change: 2006 Nov 17 " " Keywords TODO: format clock click anchor " For version 5.x: Clear all syntax items " For version 6.x: Quit when a syntax file was already loaded if version < 600 syntax clear elseif exists("b:current_syntax") finish endif " A bunch of useful keywords syn keyword tclStatement tell socket subst open eof pwd glob list exec pid syn keyword tclStatement auto_load_index time unknown eval lrange fblocked syn keyword tclStatement lsearch auto_import gets lappend proc variable llength syn keyword tclStatement auto_execok return linsert error catch clock info syn keyword tclStatement split array fconfigure concat join lreplace source syn keyword tclStatement fcopy global auto_qualify update close cd auto_load syn keyword tclStatement file append format read package set binary namespace syn keyword tclStatement scan trace seek flush after vwait uplevel lset rename syn keyword tclStatement fileevent regexp upvar unset encoding expr load regsub syn keyword tclStatement interp exit puts incr lindex lsort tclLog string syn keyword tclLabel case default syn keyword tclConditional if then else elseif switch syn keyword tclRepeat while for foreach break continue syn keyword tcltkSwitch contained insert create polygon fill outline tag " WIDGETS " commands associated with widgets syn keyword tcltkWidgetSwitch contained background highlightbackground insertontime cget syn keyword tcltkWidgetSwitch contained selectborderwidth borderwidth highlightcolor insertwidth syn keyword tcltkWidgetSwitch contained selectforeground cursor highlightthickness padx setgrid syn keyword tcltkWidgetSwitch contained exportselection insertbackground pady takefocus syn keyword tcltkWidgetSwitch contained font insertborderwidth relief xscrollcommand syn keyword tcltkWidgetSwitch contained foreground insertofftime selectbackground yscrollcommand syn keyword tcltkWidgetSwitch contained height spacing1 spacing2 spacing3 syn keyword tcltkWidgetSwitch contained state tabs width wrap " button syn keyword tcltkWidgetSwitch contained command default " canvas syn keyword tcltkWidgetSwitch contained closeenough confine scrollregion xscrollincrement yscrollincrement orient " checkbutton, radiobutton syn keyword tcltkWidgetSwitch contained indicatoron offvalue onvalue selectcolor selectimage state variable " entry, frame syn keyword tcltkWidgetSwitch contained show class colormap container visual " listbox, menu syn keyword tcltkWidgetSwitch contained selectmode postcommand selectcolor tearoff tearoffcommand title type " menubutton, message syn keyword tcltkWidgetSwitch contained direction aspect justify " scale syn keyword tcltkWidgetSwitch contained bigincrement digits from length resolution showvalue sliderlength sliderrelief tickinterval to " scrollbar syn keyword tcltkWidgetSwitch contained activerelief elementborderwidth " image syn keyword tcltkWidgetSwitch contained delete names types create " variable reference " ::optional::namespaces syn match tclVarRef "$\(\(::\)\?\([[:alnum:]_.]*::\)*\)\a[a-zA-Z0-9_.]*" " ${...} may contain any character except '}' syn match tclVarRef "${[^}]*}" " menu, mane add syn keyword tcltkWidgetSwitch contained active end last none cascade checkbutton command radiobutton separator syn keyword tcltkWidgetSwitch contained activebackground actveforeground accelerator background bitmap columnbreak syn keyword tcltkWidgetSwitch contained font foreground hidemargin image indicatoron label menu offvalue onvalue syn keyword tcltkWidgetSwitch contained selectcolor selectimage state underline value variable syn keyword tcltkWidgetSwitch contained add clone configure delete entrycget entryconfigure index insert invoke syn keyword tcltkWidgetSwitch contained post postcascade type unpost yposition activate "syn keyword tcltkWidgetSwitch contained "syn match tcltkWidgetSwitch contained syn region tcltkWidget matchgroup=tcltkWidgetColor start="\<button\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef syn region tcltkWidget matchgroup=tcltkWidgetColor start="\<scale\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef syn region tcltkWidget matchgroup=tcltkWidgetColor start="\<canvas\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef syn region tcltkWidget matchgroup=tcltkWidgetColor start="\<checkbutton\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef syn region tcltkWidget matchgroup=tcltkWidgetColor start="\<entry\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef syn region tcltkWidget matchgroup=tcltkWidgetColor start="\<frame\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef syn region tcltkWidget matchgroup=tcltkWidgetColor start="\<image\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef syn region tcltkWidget matchgroup=tcltkWidgetColor start="\<listbox\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef syn region tcltkWidget matchgroup=tcltkWidgetColor start="\<menubutton\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef syn region tcltkWidget matchgroup=tcltkWidgetColor start="\<message\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef syn region tcltkWidget matchgroup=tcltkWidgetColor start="\<radiobutton\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef syn region tcltkWidget matchgroup=tcltkWidgetColor start="\<scrollbar\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef " These words are dual purpose. " match switches "syn match tcltkWidgetSwitch contained "-text"hs=s+1 syn match tcltkWidgetSwitch contained "-text\(var\)\?"hs=s+1 syn match tcltkWidgetSwitch contained "-menu"hs=s+1 syn match tcltkWidgetSwitch contained "-label"hs=s+1 " match commands - 2 lines for pretty match. "variable " Special case - If a number follows a variable region, it must be at the end of " the pattern, by definition. Therefore, (1) either include a number as the region " end and exclude tclNumber from the contains list, or (2) make variable " keepend. As (1) would put variable out of step with everything else, use (2). syn region tcltkCommand matchgroup=tcltkCommandColor start="^\<variable\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tclString,tclNumber,tclVarRef,tcltkCommand syn 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 " menu syn region tcltkWidget matchgroup=tcltkWidgetColor start="^\<menu\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef syn 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 " label syn region tcltkWidget matchgroup=tcltkWidgetColor start="^\<label\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef syn 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 " text syn region tcltkWidget matchgroup=tcltkWidgetColor start="^\<text\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidget,tcltkWidgetSwitch,tcltkSwitch,tclNumber,tclVarRef,tclString syn 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 " This isn't contained (I don't think) so it's OK to just associate with the Color group. " TODO: This could be wrong. syn keyword tcltkWidgetColor toplevel syn region tcltkPackConf matchgroup=tcltkPackConfColor start="\<configure\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tcltkPackConfSwitch,tclNumber,tclVarRef keepend syn region tcltkPackConf matchgroup=tcltkPackConfColor start="\<cget\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"me=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tcltkPackConfSwitch,tclNumber,tclVarRef " NAMESPACE " commands associated with namespace syn keyword tcltkNamespaceSwitch contained children code current delete eval syn keyword tcltkNamespaceSwitch contained export forget import inscope origin syn keyword tcltkNamespaceSwitch contained parent qualifiers tail which command variable syn region tcltkCommand matchgroup=tcltkCommandColor start="\<namespace\>" matchgroup=NONE skip="^\s*$" end="{\|}\|]\|\"\|[^\\]*\s*$"me=e-1 contains=tclLineContinue,tcltkNamespaceSwitch " EXPR " commands associated with expr syn keyword tcltkMaths contained acos cos hypot sinh syn keyword tcltkMaths contained asin cosh log sqrt syn keyword tcltkMaths contained atan exp log10 tan syn keyword tcltkMaths contained atan2 floor pow tanh syn keyword tcltkMaths contained ceil fmod sin syn region tcltkCommand matchgroup=tcltkCommandColor start="\<expr\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"me=e-1 contains=tclLineContinue,tcltkMaths,tclNumber,tclVarRef,tclString,tcltlWidgetSwitch,tcltkCommand,tcltkPackConf " format syn region tcltkCommand matchgroup=tcltkCommandColor start="\<format\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"me=e-1 contains=tclLineContinue,tcltkMaths,tclNumber,tclVarRef,tclString,tcltlWidgetSwitch,tcltkCommand,tcltkPackConf " PACK " commands associated with pack syn keyword tcltkPackSwitch contained forget info propogate slaves syn keyword tcltkPackConfSwitch contained after anchor before expand fill in ipadx ipady padx pady side syn 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 " STRING " commands associated with string syn keyword tcltkStringSwitch contained compare first index last length match range tolower toupper trim trimleft trimright wordstart wordend syn region tcltkCommand matchgroup=tcltkCommandColor start="\<string\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkStringSwitch,tclNumber,tclVarRef,tclString,tcltkCommand " ARRAY " commands associated with array syn keyword tcltkArraySwitch contained anymore donesearch exists get names nextelement size startsearch set " match from command name to ] or EOL syn region tcltkCommand matchgroup=tcltkCommandColor start="\<array\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkArraySwitch,tclNumber,tclVarRef,tclString,tcltkCommand " LSORT " switches for lsort syn keyword tcltkLsortSwitch contained ascii dictionary integer real command increasing decreasing index " match from command name to ] or EOL syn region tcltkCommand matchgroup=tcltkCommandColor start="\<lsort\>" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkLsortSwitch,tclNumber,tclVarRef,tclString,tcltkCommand syn keyword tclTodo contained TODO " String and Character contstants " Highlight special characters (those which have a backslash) differently syn match tclSpecial contained "\\\d\d\d\=\|\\." " A string needs the skip argument as it may legitimately contain \". " Match at start of line syn region tclString start=+^"+ end=+"+ contains=tclSpecial skip=+\\\\\|\\"+ "Match all other legal strings. syn region tclString start=+[^\\]"+ms=s+1 end=+"+ contains=tclSpecial skip=+\\\\\|\\"+ syn match tclLineContinue "\\\s*$" "integer number, or floating point number without a dot and with "f". syn case ignore syn match tclNumber "\<\d\+\(u\=l\=\|lu\|f\)\>" "floating point number, with dot, optional exponent syn match tclNumber "\<\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=\>" "floating point number, starting with a dot, optional exponent syn match tclNumber "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>" "floating point number, without dot, with exponent syn match tclNumber "\<\d\+e[-+]\=\d\+[fl]\=\>" "hex number syn match tclNumber "0x[0-9a-f]\+\(u\=l\=\|lu\)\>" "syn match tclIdentifier "\<[a-z_][a-z0-9_]*\>" syn case match syn region tclComment start="^\s*\#" skip="\\$" end="$" contains=tclTodo syn region tclComment start=/;\s*\#/hs=s+1 skip="\\$" end="$" contains=tclTodo "syn sync ccomment tclComment " Define the default highlighting. " For version 5.7 and earlier: only when not done already " For version 5.8 and later: only when an item doesn't have highlighting yet if version >= 508 || !exists("did_tcl_syntax_inits") if version < 508 let did_tcl_syntax_inits = 1 command -nargs=+ HiLink hi link <args> else command -nargs=+ HiLink hi def link <args> endif HiLink tcltkSwitch Special HiLink tclLabel Label HiLink tclConditional Conditional HiLink tclRepeat Repeat HiLink tclNumber Number HiLink tclError Error HiLink tclStatement Statement "HiLink tclStatementColor Statement HiLink tclString String HiLink tclComment Comment HiLink tclSpecial Special HiLink tclTodo Todo " Below here are the commands and their options. HiLink tcltkCommandColor Statement HiLink tcltkWidgetColor Structure HiLink tclLineContinue WarningMsg HiLink tcltkStringSwitch Special HiLink tcltkArraySwitch Special HiLink tcltkLsortSwitch Special HiLink tcltkPackSwitch Special HiLink tcltkPackConfSwitch Special HiLink tcltkMaths Special HiLink tcltkNamespaceSwitch Special HiLink tcltkWidgetSwitch Special HiLink tcltkPackConfColor Identifier "HiLink tcltkLsort Statement HiLink tclVarRef Identifier delcommand HiLink endif let b:current_syntax = "tcl" " vim: ts=8