mirror of
https://github.com/vim/vim
synced 2025-03-16 14:57:52 +01:00
235 lines
14 KiB
VimL
235 lines
14 KiB
VimL
" Vim syntax file
|
|
" Language: TCL/TK
|
|
" Maintainer: 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: 2004 May 16
|
|
"
|
|
" 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 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
|
|
" ::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
|