36 lines
870 B
Text
36 lines
870 B
Text
|
|
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
|
||
|
|
|
||
|
|
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 if "If Condition" b
|
||
|
|
if [ $1 ]; then
|
||
|
|
$0
|
||
|
|
fi
|
||
|
|
endsnippet
|