unify jobstart, termopen, and system interfaces

For any of these functions, if {cmd} is a string, execute
"&shell &shellcmdflag '{cmd}'", or simply {cmd} if it's a list.

In termopen(), if the 'name' option is not supplied, try to guess using
'{cmd}' (string) or {cmd}[0] (list).  Simplify ex_terminal to use the
string form of termopen().

termopen: get name from argument

Convert list_to_argv to tv_to_argv.

Helped-by: Björn Linse <@bfredl>
Helped-by: oni-link <knil.ino@gmail.com>
Helped-by: Thiago de Arruda <@tarruda>
This commit is contained in:
Scott Prager
2015-04-15 13:05:30 -04:00
parent 74aef89720
commit 1eb3396922
8 changed files with 139 additions and 96 deletions

View File

@@ -44,7 +44,7 @@ describe('system()', function()
eq(127, eval('v:shell_error'))
end)
describe('executes shell function', function()
describe('executes shell function if passed a string', function()
local screen
before_each(function()
@@ -192,6 +192,13 @@ describe('system()', function()
end)
end)
end
describe('command passed as a list', function()
it('does not execute &shell', function()
eq('* $NOTHING ~/file',
eval("system(['echo', '-n', '*', '$NOTHING', '~/file'])"))
end)
end)
end)
describe('systemlist()', function()