mirror of
https://github.com/neovim/neovim.git
synced 2024-12-26 14:11:15 -07:00
c0efe49e78
Update runtime files
519cc559b0
275 lines
17 KiB
VimL
275 lines
17 KiB
VimL
" 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
|