1
0
mirror of https://github.com/SpaceVim/SpaceVim.git synced 2025-02-09 16:30:05 +08:00
SpaceVim/bundle/gina.vim/autoload/gina/command/_shell.vim

32 lines
923 B
VimL
Vendored

function! gina#command#_shell#call(range, args, mods) abort
let git = gina#core#get()
let args = gina#process#build_raw_args(git, s:build_args(git, a:args))
let cmdline = join(map(args, 's:shellescape(v:val)'))
if has('nvim')
tabnew
execute ':terminal' cmdline
augroup gina_command__shell_internal
autocmd! * <buffer>
autocmd TermClose <buffer> call gina#core#emitter#emit('modified:delay')
augroup END
else
execute ':!' cmdline
call gina#core#emitter#emit('modified:delay')
endif
endfunction
" Private --------------------------------------------------------------------
function! s:build_args(git, args) abort
let args = a:args.clone()
if args.get(0) ==# '_shell'
" Remove leading '_shell' if exists
call args.pop(0)
endif
return args.lock()
endfunction
function! s:shellescape(val) abort
return a:val =~# '\s' ? shellescape(a:val) : a:val
endfunction