236 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
			
		
		
	
	
			236 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
 |