diff runtime/syntax/tcl.vim @ 7:3fc0f57ecb91 v7.0001

updated for version 7.0001
author vimboss
date Sun, 13 Jun 2004 20:20:40 +0000
parents
children 96cd8222a819
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/tcl.vim
@@ -0,0 +1,235 @@
+" 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