Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/vim71/syntax/tcl.vim
diff options
context:
space:
mode:
Diffstat (limited to 'vim71/syntax/tcl.vim')
-rw-r--r--vim71/syntax/tcl.vim243
1 files changed, 243 insertions, 0 deletions
diff --git a/vim71/syntax/tcl.vim b/vim71/syntax/tcl.vim
new file mode 100644
index 0000000..e9562d6
--- /dev/null
+++ b/vim71/syntax/tcl.vim
@@ -0,0 +1,243 @@
+" Vim syntax file
+" Language: TCL/TK
+" Maintainer: 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: 2006 Nov 17
+"
+" 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 tell socket subst open eof pwd glob list exec pid
+syn keyword tclStatement auto_load_index time unknown eval lrange fblocked
+syn keyword tclStatement lsearch auto_import gets lappend proc variable llength
+syn keyword tclStatement auto_execok return linsert error catch clock info
+syn keyword tclStatement split array fconfigure concat join lreplace source
+syn keyword tclStatement fcopy global auto_qualify update close cd auto_load
+syn keyword tclStatement file append format read package set binary namespace
+syn keyword tclStatement scan trace seek flush after vwait uplevel lset rename
+syn keyword tclStatement fileevent regexp upvar unset encoding expr load regsub
+syn keyword tclStatement interp exit puts incr lindex lsort tclLog string
+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