123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275 |
- " Vim syntax file
- " Language: Tcl/Tk
- " Maintainer: Taylor Venable <taylor@metasyntax.net>
- " (previously 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: 2021 Nov 16
- " Version: 1.14 plus improvements from PR #8948
- " URL: (removed, no longer worked)
- " quit when a syntax file was already loaded
- if exists("b:current_syntax")
- finish
- endif
- " Basic Tcl commands: http://www.tcl.tk/man/tcl8.6/TclCmd/contents.htm
- syn keyword tclCommand after append array bgerror binary cd chan clock close concat
- syn keyword tclCommand dde dict encoding eof error eval exec exit expr fblocked
- syn keyword tclCommand fconfigure fcopy file fileevent flush format gets glob
- syn keyword tclCommand global history http incr info interp join lappend lassign
- syn keyword tclCommand lindex linsert list llength lmap load lrange lrepeat
- syn keyword tclCommand lreplace lreverse lsearch lset lsort memory my namespace
- syn keyword tclCommand next nextto open package pid puts pwd read refchan regexp
- syn keyword tclCommand registry regsub rename scan seek self set socket source
- syn keyword tclCommand split string subst tell time trace unknown unload unset
- syn keyword tclCommand update uplevel upvar variable vwait
- " The 'Tcl Standard Library' commands: http://www.tcl.tk/man/tcl8.6/TclCmd/library.htm
- syn keyword tclCommand auto_execok auto_import auto_load auto_mkindex auto_reset
- syn keyword tclCommand auto_qualify tcl_findLibrary parray tcl_endOfWord
- syn keyword tclCommand tcl_startOfNextWord tcl_startOfPreviousWord
- syn keyword tclCommand tcl_wordBreakAfter tcl_wordBreakBefore
- " Global variables used by Tcl: http://www.tcl.tk/man/tcl8.6/TclCmd/tclvars.htm
- syn keyword tclVars auto_path env errorCode errorInfo tcl_library tcl_patchLevel
- syn keyword tclVars tcl_pkgPath tcl_platform tcl_precision tcl_rcFileName
- syn keyword tclVars tcl_traceCompile tcl_traceExec tcl_wordchars
- syn keyword tclVars tcl_nonwordchars tcl_version argc argv argv0 tcl_interactive
- " Strings which expr accepts as boolean values, aside from zero / non-zero.
- syn keyword tclBoolean true false on off yes no
- syn keyword tclProcCommand apply coroutine proc return tailcall yield yieldto
- syn keyword tclConditional if then else elseif switch
- syn keyword tclConditional catch try throw finally
- syn keyword tclLabel default
- 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[[:alnum:]_]*"
- " ${...} may contain any character except '}'
- syn match tclVarRef "${[^}]*}"
- " Used to facilitate hack to utilize string background for certain color
- " schemes, e.g. inkpot and lettuce.
- syn cluster tclVarRefC add=tclVarRef
- syn cluster tclSpecialC add=tclSpecial
- " The syntactic unquote-splicing replacement for [expand].
- syn match tclExpand '\s{\*}'
- syn match tclExpand '^{\*}'
- " 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 abs acos asin atan atan2 bool ceil cos cosh double entier
- syn keyword tcltkMaths contained exp floor fmod hypot int isqrt log log10 max min pow rand
- syn keyword tcltkMaths contained round sin sinh sqrt srand tan tanh wide
- 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 propagate 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
- " Sequences which are backslash-escaped: http://www.tcl.tk/man/tcl8.5/TclCmd/Tcl.htm#M16
- " Octal, hexadecimal, Unicode codepoints, and the classics.
- " Tcl takes as many valid characters in a row as it can, so \xAZ in a string is newline followed by 'Z'.
- syn match tclSpecial contained '\\\(\o\{1,3}\|x\x\{1,2}\|u\x\{1,4}\|[abfnrtv]\)'
- syn match tclSpecial contained '\\[\[\]\{\}\"\$]'
- " Command appearing inside another command or inside a string.
- syn region tclEmbeddedStatement start='\[' end='\]' contained contains=tclCommand,tclNumber,tclLineContinue,tclString,tclVarRef,tclEmbeddedStatement
- " A string needs the skip argument as it may legitimately contain \".
- " Match at start of line
- syn region tclString start=+^"+ end=+"+ contains=@tclSpecialC,@Spell skip=+\\\\\|\\"+
- "Match all other legal strings.
- syn region tclString start=+[^\\]"+ms=s+1 end=+"+ contains=@tclSpecialC,@tclVarRefC,tclEmbeddedStatement,@Spell skip=+\\\\\|\\"+
- " Line continuation is backslash immediately followed by newline.
- syn match tclLineContinue '\\$'
- if exists('g:tcl_warn_continuation')
- syn match tclNotLineContinue '\\\s\+$'
- endif
- "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\x\+\(u\=l\=\|lu\)\>"
- "syn match tclIdentifier "\<\h\w*\>"
- syn case match
- syn region tclComment start="^\s*\#" skip="\\$" end="$" contains=tclTodo,@Spell
- syn region tclComment start=/;\s*\#/hs=s+1 skip="\\$" end="$" contains=tclTodo,@Spell
- "syn match tclComment /^\s*\#.*$/
- "syn match tclComment /;\s*\#.*$/hs=s+1
- "syn sync ccomment tclComment
- " Define the default highlighting.
- " Only when an item doesn't have highlighting yet
- hi def link tcltkSwitch Special
- hi def link tclExpand Special
- hi def link tclLabel Label
- hi def link tclConditional Conditional
- hi def link tclRepeat Repeat
- hi def link tclNumber Number
- hi def link tclError Error
- hi def link tclCommand Statement
- hi def link tclProcCommand Type
- hi def link tclString String
- hi def link tclComment Comment
- hi def link tclSpecial Special
- hi def link tclTodo Todo
- " Below here are the commands and their options.
- hi def link tcltkCommandColor Statement
- hi def link tcltkWidgetColor Structure
- hi def link tclLineContinue WarningMsg
- if exists('g:tcl_warn_continuation')
- hi def link tclNotLineContinue ErrorMsg
- endif
- hi def link tcltkStringSwitch Special
- hi def link tcltkArraySwitch Special
- hi def link tcltkLsortSwitch Special
- hi def link tcltkPackSwitch Special
- hi def link tcltkPackConfSwitch Special
- hi def link tcltkMaths Special
- hi def link tcltkNamespaceSwitch Special
- hi def link tcltkWidgetSwitch Special
- hi def link tcltkPackConfColor Identifier
- hi def link tclVarRef Identifier
- let b:current_syntax = "tcl"
- " vim: ts=8 noet nolist
|