" Vim syntax file " Language: TCL/TK " Maintainer: Allan Kelly " Original: Robin Becker " Version: 5.1(synched), 1998 June 29 " " Keywords TODO: format clock click anchor " Remove any old syntax stuff hanging around syn clear set comments=:# " A bunch of useful keywords syn keyword tclStatement proc global return lindex syn keyword tclStatement llength lappend lreplace lrange list concat incr syn keyword tclStatement upvar set 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 syn match tclVarRef "$\a[a-zA-Z0-9_.]*" syn match tclVarRef "${\a[a-zA-Z0-9_.]*}" " 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="\" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef syn region tcltkWidget matchgroup=tcltkWidgetColor start="\" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef syn region tcltkWidget matchgroup=tcltkWidgetColor start="\" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef syn region tcltkWidget matchgroup=tcltkWidgetColor start="\" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef syn region tcltkWidget matchgroup=tcltkWidgetColor start="\" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef syn region tcltkWidget matchgroup=tcltkWidgetColor start="\" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef syn region tcltkWidget matchgroup=tcltkWidgetColor start="\" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef syn region tcltkWidget matchgroup=tcltkWidgetColor start="\" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef syn region tcltkWidget matchgroup=tcltkWidgetColor start="\" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef syn region tcltkWidget matchgroup=tcltkWidgetColor start="\" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef syn region tcltkWidget matchgroup=tcltkWidgetColor start="\" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef syn region tcltkWidget matchgroup=tcltkWidgetColor start="\" 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 "-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="^\" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tclString,tclNumber,tclVarRef,tcltkCommand syn region tcltkCommand matchgroup=tcltkCommandColor start="\s\\|\[\"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="^\" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef syn region tcltkWidget matchgroup=tcltkWidgetColor start="\s\\|\[\"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="^\" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tclNumber,tclVarRef syn region tcltkWidget matchgroup=tcltkWidgetColor start="\s\\|\[\"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="^\" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidget,tcltkWidgetSwitch,tcltkSwitch,tclNumber,tclVarRef,tclString syn region tcltkWidget matchgroup=tcltkWidgetColor start="\s\\|\[\"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="\" matchgroup=NONE skip="^\s*$" end="]\|[^\\]*\s*$"he=e-1 contains=tclLineContinue,tcltkWidgetSwitch,tclString,tcltkSwitch,tcltkPackConfSwitch,tclNumber,tclVarRef keepend syn region tcltkPackConf matchgroup=tcltkPackConfColor start="\" 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="\" 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="\" 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="\" 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="\" 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="\" 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="\" 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="\" 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*\#" end="$" contains=tclTodo syn region tclComment start=/;\s*\#/hs=s+1 end="$" contains=tclTodo "syn sync ccomment tclComment if !exists("did_tcl_syntax_inits") let did_tcl_syntax_inits = 1 " The default methods for highlighting. Can be overridden later hi link tcltkSwitch Special hi link tclLabel Label hi link tclConditional Conditional hi link tclRepeat Repeat hi link tclNumber Number hi link tclError Error hi link tclStatement Statement " hi link tclStatementColor Statement hi link tclString String hi link tclComment Comment hi link tclSpecial Special hi link tclTodo Todo " Below here are the commands and their options. hi link tcltkCommandColor Statement hi link tcltkWidgetColor Structure hi link tclLineContinue WarningMsg hi link tcltkStringSwitch Special hi link tcltkArraySwitch Special hi link tcltkLsortSwitch Special hi link tcltkPackSwitch Special hi link tcltkPackConfSwitch Special hi link tcltkMaths Special hi link tcltkNamespaceSwitch Special hi link tcltkWidgetSwitch Special hi link tcltkPackConfColor Identifier "hi link tcltkLsort Statement hi link tclVarRef Identifier endif let b:current_syntax = "tcl" " vim: ts=8