You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							99 lines
						
					
					
						
							2.3 KiB
						
					
					
				
			
		
		
	
	
							99 lines
						
					
					
						
							2.3 KiB
						
					
					
				priority -50 | 
						|
 | 
						|
global !p | 
						|
import vim | 
						|
 | 
						|
# Tests for the existence of a variable declared by Vim's filetype detection | 
						|
# suggesting the type of shell script of the current file | 
						|
def testShell(scope, shell): | 
						|
	return vim.eval("exists('" + scope + ":is_" + shell + "')") | 
						|
 | 
						|
# Loops over the possible variables, checking for global variables | 
						|
# first since they indicate an override by the user. | 
						|
def getShell(): | 
						|
	for scope in ["g", "b"]: | 
						|
		for shell in ["bash", "posix", "sh", "kornshell"]: | 
						|
			if testShell(scope, shell) == "1": | 
						|
				if shell == "kornshell": | 
						|
					return "ksh" | 
						|
				if shell == "posix": | 
						|
					return "sh" | 
						|
				return shell | 
						|
	return "sh" | 
						|
endglobal | 
						|
 | 
						|
########################################################################### | 
						|
#                            TextMate Snippets                            # | 
						|
########################################################################### | 
						|
snippet #! | 
						|
`!p snip.rv = '#!/bin/' + getShell() + "\n\n" ` | 
						|
endsnippet | 
						|
 | 
						|
snippet !env "#!/usr/bin/env (!env)" | 
						|
`!p snip.rv = '#!/usr/bin/env ' + getShell() + "\n\n" ` | 
						|
endsnippet | 
						|
 | 
						|
snippet sbash "safe bash options" | 
						|
#!/usr/bin/env bash | 
						|
set -euo pipefail | 
						|
IFS=$'\n\t' | 
						|
`!p snip.rv ='\n\n' ` | 
						|
endsnippet | 
						|
 | 
						|
snippet temp "Tempfile" | 
						|
${1:TMPFILE}="$(mktemp -t ${2:`!p | 
						|
snip.rv = re.sub(r'[^a-zA-Z]', '_', snip.fn) or "untitled" | 
						|
`})" | 
						|
${3:${4/(.+)/trap "/}${4:rm -f '$${1/.*\s//}'}${4/(.+)/" 0               # EXIT\n/}${5/(.+)/trap "/}${5:rm -f '$${1/.*\s//}'; exit 1}${5/(.+)/" 2       # INT\n/}${6/(.+)/trap "/}${6:rm -f '$${1/.*\s//}'; exit 1}${6/(.+)/" 1 15    # HUP TERM\n/}} | 
						|
 | 
						|
endsnippet | 
						|
 | 
						|
snippet case "case .. esac (case)" | 
						|
case ${1:word} in | 
						|
	${2:pattern} ) | 
						|
		$0;; | 
						|
esac | 
						|
endsnippet | 
						|
 | 
						|
snippet elif "elif .. (elif)" | 
						|
elif ${2:[[ ${1:condition} ]]}; then | 
						|
	${0:#statements} | 
						|
endsnippet | 
						|
 | 
						|
snippet for "for ... done (for)" | 
						|
for (( i = 0; i < ${1:10}; i++ )); do | 
						|
	${0:#statements} | 
						|
done | 
						|
endsnippet | 
						|
 | 
						|
snippet forin "for ... in ... done (forin)" | 
						|
for ${1:i}${2/.+/ in /}${2:words}; do | 
						|
	${0:#statements} | 
						|
done | 
						|
endsnippet | 
						|
 | 
						|
snippet here "here document (here)" | 
						|
<<-${2:'${1:TOKEN}'} | 
						|
	$0 | 
						|
${1/['"`](.+)['"`]/$1/} | 
						|
endsnippet | 
						|
 | 
						|
snippet if "if ... then (if)" | 
						|
if ${2:[[ ${1:condition} ]]}; then | 
						|
	${0:#statements} | 
						|
fi | 
						|
endsnippet | 
						|
 | 
						|
snippet until "until ... (done)" | 
						|
until ${2:[[ ${1:condition} ]]}; do | 
						|
	${0:#statements} | 
						|
done | 
						|
endsnippet | 
						|
 | 
						|
snippet while "while ... (done)" | 
						|
while ${2:[[ ${1:condition} ]]}; do | 
						|
	${0:#statements} | 
						|
done | 
						|
endsnippet | 
						|
 | 
						|
# vim:ft=snippets:
 | 
						|
 |