<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>fileTypes</key>
	<array>
		<string>tcl</string>
	</array>
	<key>foldingStartMarker</key>
	<string>\{\s*$</string>
	<key>foldingStopMarker</key>
	<string>^\s*\}</string>
	<key>keyEquivalent</key>
	<string>^~T</string>
	<key>name</key>
	<string>Tcl</string>
	<key>patterns</key>
	<array>
		<dict>
			<key>begin</key>
			<string>(?&lt;=^|;)\s*((#))</string>
			<key>beginCaptures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>comment.line.number-sign.tcl</string>
				</dict>
				<key>2</key>
				<dict>
					<key>name</key>
					<string>punctuation.definition.comment.tcl</string>
				</dict>
			</dict>
			<key>contentName</key>
			<string>comment.line.number-sign.tcl</string>
			<key>end</key>
			<string>\n</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>match</key>
					<string>(\\\\|\\\n)</string>
				</dict>
			</array>
		</dict>
		<dict>
			<key>captures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>keyword.control.tcl</string>
				</dict>
			</dict>
			<key>match</key>
			<string>(?&lt;=^|[\[{;])\s*(if|while|for|catch|return|break|continue|switch|exit|foreach)\b</string>
		</dict>
		<dict>
			<key>captures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>keyword.control.tcl</string>
				</dict>
			</dict>
			<key>match</key>
			<string>(?&lt;=^|})\s*(then|elseif|else)\b</string>
		</dict>
		<dict>
			<key>captures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>keyword.other.tcl</string>
				</dict>
				<key>2</key>
				<dict>
					<key>name</key>
					<string>entity.name.function.tcl</string>
				</dict>
			</dict>
			<key>match</key>
			<string>^\s*(proc)\s+([^\s]+)</string>
		</dict>
		<dict>
			<key>captures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>keyword.other.tcl</string>
				</dict>
			</dict>
			<key>match</key>
			<string>(?&lt;=^|[\[{;])\s*(after|append|array|auto_execok|auto_import|auto_load|auto_mkindex|auto_mkindex_old|auto_qualify|auto_reset|bgerror|binary|cd|clock|close|concat|dde|encoding|eof|error|eval|exec|expr|fblocked|fconfigure|fcopy|file|fileevent|filename|flush|format|gets|glob|global|history|http|incr|info|interp|join|lappend|library|lindex|linsert|list|llength|load|lrange|lreplace|lsearch|lset|lsort|memory|msgcat|namespace|open|package|parray|pid|pkg::create|pkg_mkIndex|proc|puts|pwd|re_syntax|read|registry|rename|resource|scan|seek|set|socket|SafeBase|source|split|string|subst|Tcl|tcl_endOfWord|tcl_findLibrary|tcl_startOfNextWord|tcl_startOfPreviousWord|tcl_wordBreakAfter|tcl_wordBreakBefore|tcltest|tclvars|tell|time|trace|unknown|unset|update|uplevel|upvar|variable|vwait)\b</string>
		</dict>
		<dict>
			<key>begin</key>
			<string>(?&lt;=^|[\[{;])\s*(regexp|regsub)\b\s*</string>
			<key>beginCaptures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>keyword.other.tcl</string>
				</dict>
			</dict>
			<key>comment</key>
			<string>special-case regexp/regsub keyword in order to handle the expression</string>
			<key>end</key>
			<string>[\n;\]]</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>match</key>
					<string>\\(?:.|\n)</string>
					<key>name</key>
					<string>constant.character.escape.tcl</string>
				</dict>
				<dict>
					<key>comment</key>
					<string>switch for regexp</string>
					<key>match</key>
					<string>-\w+\s*</string>
				</dict>
				<dict>
					<key>applyEndPatternLast</key>
					<integer>1</integer>
					<key>begin</key>
					<string>--\s*</string>
					<key>comment</key>
					<string>end of switches</string>
					<key>end</key>
					<string></string>
					<key>patterns</key>
					<array>
						<dict>
							<key>include</key>
							<string>#regexp</string>
						</dict>
					</array>
				</dict>
				<dict>
					<key>include</key>
					<string>#regexp</string>
				</dict>
			</array>
		</dict>
		<dict>
			<key>include</key>
			<string>#escape</string>
		</dict>
		<dict>
			<key>include</key>
			<string>#variable</string>
		</dict>
		<dict>
			<key>begin</key>
			<string>"</string>
			<key>beginCaptures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>punctuation.definition.string.begin.tcl</string>
				</dict>
			</dict>
			<key>end</key>
			<string>"</string>
			<key>endCaptures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>punctuation.definition.string.end.tcl</string>
				</dict>
			</dict>
			<key>name</key>
			<string>string.quoted.double.tcl</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#escape</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#variable</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#embedded</string>
				</dict>
			</array>
		</dict>
	</array>
	<key>repository</key>
	<dict>
		<key>bare-string</key>
		<dict>
			<key>begin</key>
			<string>(?:^|(?&lt;=\s))"</string>
			<key>comment</key>
			<string>matches a single quote-enclosed word without scoping</string>
			<key>end</key>
			<string>"([^\s\]]*)</string>
			<key>endCaptures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>invalid.illegal.tcl</string>
				</dict>
			</dict>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#escape</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#variable</string>
				</dict>
			</array>
		</dict>
		<key>braces</key>
		<dict>
			<key>begin</key>
			<string>(?:^|(?&lt;=\s))\{</string>
			<key>comment</key>
			<string>matches a single brace-enclosed word</string>
			<key>end</key>
			<string>\}([^\s\]]*)</string>
			<key>endCaptures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>invalid.illegal.tcl</string>
				</dict>
			</dict>
			<key>patterns</key>
			<array>
				<dict>
					<key>match</key>
					<string>\\[{}\n]</string>
					<key>name</key>
					<string>constant.character.escape.tcl</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#inner-braces</string>
				</dict>
			</array>
		</dict>
		<key>embedded</key>
		<dict>
			<key>begin</key>
			<string>\[</string>
			<key>beginCaptures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>punctuation.section.embedded.begin.tcl</string>
				</dict>
			</dict>
			<key>end</key>
			<string>\]</string>
			<key>endCaptures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>punctuation.section.embedded.end.tcl</string>
				</dict>
			</dict>
			<key>name</key>
			<string>source.tcl.embedded</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>source.tcl</string>
				</dict>
			</array>
		</dict>
		<key>escape</key>
		<dict>
			<key>match</key>
			<string>\\(\d{1,3}|x[a-fA-F0-9]+|u[a-fA-F0-9]{1,4}|.|\n)</string>
			<key>name</key>
			<string>constant.character.escape.tcl</string>
		</dict>
		<key>inner-braces</key>
		<dict>
			<key>begin</key>
			<string>\{</string>
			<key>comment</key>
			<string>matches a nested brace in a brace-enclosed word</string>
			<key>end</key>
			<string>\}</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>match</key>
					<string>\\[{}\n]</string>
					<key>name</key>
					<string>constant.character.escape.tcl</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#inner-braces</string>
				</dict>
			</array>
		</dict>
		<key>regexp</key>
		<dict>
			<key>begin</key>
			<string>(?=\S)(?![\n;\]])</string>
			<key>comment</key>
			<string>matches a single word, named as a regexp, then swallows the rest of the command</string>
			<key>end</key>
			<string>(?=[\n;\]])</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>begin</key>
					<string>(?=[^ \t\n;])</string>
					<key>end</key>
					<string>(?=[ \t\n;])</string>
					<key>name</key>
					<string>string.regexp.tcl</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>include</key>
							<string>#braces</string>
						</dict>
						<dict>
							<key>include</key>
							<string>#bare-string</string>
						</dict>
						<dict>
							<key>include</key>
							<string>#escape</string>
						</dict>
						<dict>
							<key>include</key>
							<string>#variable</string>
						</dict>
					</array>
				</dict>
				<dict>
					<key>begin</key>
					<string>[ \t]</string>
					<key>comment</key>
					<string>swallow the rest of the command</string>
					<key>end</key>
					<string>(?=[\n;\]])</string>
					<key>patterns</key>
					<array>
						<dict>
							<key>include</key>
							<string>#variable</string>
						</dict>
						<dict>
							<key>include</key>
							<string>#embedded</string>
						</dict>
						<dict>
							<key>include</key>
							<string>#escape</string>
						</dict>
						<dict>
							<key>include</key>
							<string>#braces</string>
						</dict>
						<dict>
							<key>include</key>
							<string>#string</string>
						</dict>
					</array>
				</dict>
			</array>
		</dict>
		<key>string</key>
		<dict>
			<key>applyEndPatternLast</key>
			<integer>1</integer>
			<key>begin</key>
			<string>(?:^|(?&lt;=\s))(?=")</string>
			<key>comment</key>
			<string>matches a single quote-enclosed word with scoping</string>
			<key>end</key>
			<string></string>
			<key>name</key>
			<string>string.quoted.double.tcl</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#bare-string</string>
				</dict>
			</array>
		</dict>
		<key>variable</key>
		<dict>
			<key>captures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>punctuation.definition.variable.tcl</string>
				</dict>
			</dict>
			<key>match</key>
			<string>(\$)((?:[a-zA-Z0-9_]|::)+(\([^\)]+\))?|\{[^\}]*\})</string>
			<key>name</key>
			<string>variable.other.tcl</string>
		</dict>
	</dict>
	<key>scopeName</key>
	<string>source.tcl</string>
	<key>uuid</key>
	<string>F01F22AC-7CBB-11D9-9B10-000A95E13C98</string>
</dict>
</plist>
