define("ace/snippets/tcl",["require","exports","module"], function(require, exports, module) {
"use strict";

exports.snippetText = "# #!/usr/bin/env tclsh\n\
snippet #!\n\
	#!/usr/bin/env tclsh\n\
	\n\
# Process\n\
snippet pro\n\
	proc ${1:function_name} {${2:args}} {\n\
		${3:#body ...}\n\
	}\n\
#xif\n\
snippet xif\n\
	${1:expr}? ${2:true} : ${3:false}\n\
# Conditional\n\
snippet if\n\
	if {${1}} {\n\
		${2:# body...}\n\
	}\n\
# Conditional if..else\n\
snippet ife\n\
	if {${1}} {\n\
		${2:# body...}\n\
	} else {\n\
		${3:# else...}\n\
	}\n\
# Conditional if..elsif..else\n\
snippet ifee\n\
	if {${1}} {\n\
		${2:# body...}\n\
	} elseif {${3}} {\n\
		${4:# elsif...}\n\
	} else {\n\
		${5:# else...}\n\
	}\n\
# If catch then\n\
snippet ifc\n\
	if { [catch {${1:#do something...}} ${2:err}] } {\n\
		${3:# handle failure...}\n\
	}\n\
# Catch\n\
snippet catch\n\
	catch {${1}} ${2:err} ${3:options}\n\
# While Loop\n\
snippet wh\n\
	while {${1}} {\n\
		${2:# body...}\n\
	}\n\
# For Loop\n\
snippet for\n\
	for {set ${2:var} 0} {$$2 < ${1:count}} {${3:incr} $2} {\n\
		${4:# body...}\n\
	}\n\
# Foreach Loop\n\
snippet fore\n\
	foreach ${1:x} {${2:#list}} {\n\
		${3:# body...}\n\
	}\n\
# after ms script...\n\
snippet af\n\
	after ${1:ms} ${2:#do something}\n\
# after cancel id\n\
snippet afc\n\
	after cancel ${1:id or script}\n\
# after idle\n\
snippet afi\n\
	after idle ${1:script}\n\
# after info id\n\
snippet afin\n\
	after info ${1:id}\n\
# Expr\n\
snippet exp\n\
	expr {${1:#expression here}}\n\
# Switch\n\
snippet sw\n\
	switch ${1:var} {\n\
		${3:pattern 1} {\n\
			${4:#do something}\n\
		}\n\
		default {\n\
			${2:#do something}\n\
		}\n\
	}\n\
# Case\n\
snippet ca\n\
	${1:pattern} {\n\
		${2:#do something}\n\
	}${3}\n\
# Namespace eval\n\
snippet ns\n\
	namespace eval ${1:path} {${2:#script...}}\n\
# Namespace current\n\
snippet nsc\n\
	namespace current\n\
";
exports.scope = "tcl";

});
