d07009f27f
UltiSnips snippets are taken from UltiSnips repo. Putting them nearby the engine seems to be the wrong thing to do. One reason is that there are two forks now.
89 lines
2.2 KiB
Plaintext
89 lines
2.2 KiB
Plaintext
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", "sh", "kornshell"]:
|
|
if testShell(scope, shell) == "1":
|
|
if shell == "kornshell":
|
|
return "ksh"
|
|
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 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:
|