diff --git a/autoload/SpaceVim/mapping.vim b/autoload/SpaceVim/mapping.vim index 72e033404..e5753013c 100644 --- a/autoload/SpaceVim/mapping.vim +++ b/autoload/SpaceVim/mapping.vim @@ -181,4 +181,30 @@ function! SpaceVim#mapping#close_current_buffer() abort endif endfunction +function! SpaceVim#mapping#close_term_buffer(...) abort + let buffers = g:_spacevim_list_buffers + let abuf = str2nr(g:_spacevim_termclose_abuf) + let index = index(buffers, abuf) + let g:wsd = [index, abuf, buffers] + if index != -1 + if index == 0 + if len(buffers) > 1 + exe 'b' . buffers[1] + exe 'bd!' . abuf + else + exe 'bd! ' . abuf + endif + elseif index > 0 + if index + 1 == len(buffers) + exe 'b' . buffers[index - 1] + exe 'bd!' . abuf + else + exe 'b' . buffers[index + 1] + exe 'bd!' . abuf + endif + endif + endif + +endfunction + " vim:set et sw=2 cc=80: diff --git a/config/neovim.vim b/config/neovim.vim index 6dadeec42..deadc1b9d 100644 --- a/config/neovim.vim +++ b/config/neovim.vim @@ -55,7 +55,7 @@ augroup Terminal au! au TermOpen * let g:last_terminal_job_id = b:terminal_job_id | IndentLinesDisable au BufWinEnter term://* startinsert | IndentLinesDisable - au TermClose * exe expand('').'bd!' + au TermClose * let g:_spacevim_termclose_abuf = expand('') | call SpaceVim#mapping#close_term_buffer() augroup END augroup nvimrc_aucmd autocmd!