Use list type for command in s:spawn()
This commit is contained in:
parent
d8699755d4
commit
9aadabf179
31
plug.vim
31
plug.vim
|
@ -1290,7 +1290,7 @@ function! s:spawn(name, cmd, opts)
|
||||||
if has_key(a:opts, 'dir')
|
if has_key(a:opts, 'dir')
|
||||||
let job.cwd = a:opts.dir
|
let job.cwd = a:opts.dir
|
||||||
endif
|
endif
|
||||||
let argv = s:is_win ? ['cmd', '/s', '/c', '"'.a:cmd.'"'] : ['sh', '-c', a:cmd]
|
let argv = a:cmd
|
||||||
call extend(job, {
|
call extend(job, {
|
||||||
\ 'on_stdout': function('s:nvim_cb'),
|
\ 'on_stdout': function('s:nvim_cb'),
|
||||||
\ 'on_stderr': function('s:nvim_cb'),
|
\ 'on_stderr': function('s:nvim_cb'),
|
||||||
|
@ -1306,7 +1306,10 @@ function! s:spawn(name, cmd, opts)
|
||||||
\ 'Invalid arguments (or job table is full)']
|
\ 'Invalid arguments (or job table is full)']
|
||||||
endif
|
endif
|
||||||
elseif s:vim8
|
elseif s:vim8
|
||||||
let cmd = has_key(a:opts, 'dir') ? s:with_cd(a:cmd, a:opts.dir, 0) : a:cmd
|
let cmd = join(map(copy(a:cmd), 'plug#shellescape(v:val, {"script": 0})'))
|
||||||
|
if has_key(a:opts, 'dir')
|
||||||
|
let cmd = s:with_cd(cmd, a:opts.dir, 0)
|
||||||
|
endif
|
||||||
let argv = s:is_win ? ['cmd', '/s', '/c', '"'.cmd.'"'] : ['sh', '-c', cmd]
|
let argv = s:is_win ? ['cmd', '/s', '/c', '"'.cmd.'"'] : ['sh', '-c', cmd]
|
||||||
let jid = job_start(s:is_win ? join(argv, ' ') : argv, {
|
let jid = job_start(s:is_win ? join(argv, ' ') : argv, {
|
||||||
\ 'out_cb': function('s:job_cb', ['s:job_out_cb', job]),
|
\ 'out_cb': function('s:job_cb', ['s:job_out_cb', job]),
|
||||||
|
@ -1420,8 +1423,14 @@ while 1 " Without TCO, Vim stack is bound to explode
|
||||||
let [error, _] = s:git_validate(spec, 0)
|
let [error, _] = s:git_validate(spec, 0)
|
||||||
if empty(error)
|
if empty(error)
|
||||||
if pull
|
if pull
|
||||||
let fetch_opt = (has_tag && !empty(globpath(spec.dir, '.git/shallow'))) ? '--depth 99999999' : ''
|
let cmd = ['git', 'fetch']
|
||||||
call s:spawn(name, printf('git fetch %s %s', fetch_opt, prog), { 'dir': spec.dir })
|
if has_tag && !empty(globpath(spec.dir, '.git/shallow'))
|
||||||
|
call extend(cmd, ['--depth', '99999999'])
|
||||||
|
endif
|
||||||
|
if !empty(prog)
|
||||||
|
call add(cmd, prog)
|
||||||
|
endif
|
||||||
|
call s:spawn(name, cmd, { 'dir': spec.dir })
|
||||||
else
|
else
|
||||||
let s:jobs[name] = { 'running': 0, 'lines': ['Already installed'], 'error': 0 }
|
let s:jobs[name] = { 'running': 0, 'lines': ['Already installed'], 'error': 0 }
|
||||||
endif
|
endif
|
||||||
|
@ -1429,12 +1438,14 @@ while 1 " Without TCO, Vim stack is bound to explode
|
||||||
let s:jobs[name] = { 'running': 0, 'lines': s:lines(error), 'error': 1 }
|
let s:jobs[name] = { 'running': 0, 'lines': s:lines(error), 'error': 1 }
|
||||||
endif
|
endif
|
||||||
else
|
else
|
||||||
call s:spawn(name,
|
let cmd = ['git', 'clone']
|
||||||
\ printf('git clone %s %s %s %s',
|
if !has_tag
|
||||||
\ has_tag ? '' : join(s:clone_opt, ' '),
|
call extend(cmd, s:clone_opt)
|
||||||
\ prog,
|
endif
|
||||||
\ plug#shellescape(spec.uri, {'script': 0}),
|
if !empty(prog)
|
||||||
\ plug#shellescape(s:trim(spec.dir), {'script': 0})), { 'new': 1 })
|
call add(cmd, prog)
|
||||||
|
endif
|
||||||
|
call s:spawn(name, extend(cmd, [spec.uri, s:trim(spec.dir)]), { 'new': 1 })
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if !s:jobs[name].running
|
if !s:jobs[name].running
|
||||||
|
|
Loading…
Reference in New Issue
Block a user