From 764c17b4534672050dff801ae4df98c647807573 Mon Sep 17 00:00:00 2001 From: wsdjeg Date: Wed, 22 Feb 2017 20:07:19 +0800 Subject: [PATCH] Catch errors when open previous buffer --- README.md | 25 ++++++++++++++----------- autoload/SpaceVim/mapping.vim | 21 +++++++++++++++++++++ autoload/SpaceVim/mapping/leader.vim | 8 ++++---- autoload/SpaceVim/util.vim | 6 ++++++ 4 files changed, 45 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index ed9eed536..f17481a05 100644 --- a/README.md +++ b/README.md @@ -437,19 +437,22 @@ Key | Mode | Action ##### Window Management +default `[Window]` key is `s`, and it is setup by `g:spacevim_windows_leader`. + Key | Mode | Action ----- |:----:| ------------------ -`q` | Normal | Smart buffer close -`s`+`p` | Normal | Split nicely -`s`+`v` | Normal | :split -`s`+`g` | Normal | :vsplit -`s`+`t` | Normal | Open new tab (:tabnew) -`s`+`o` | Normal | Close other windows (:only) -`s`+`x` | Normal | Remove buffer, leave blank window -`s`+`q` | Normal | Closes current buffer (:close) -`s`+`Q` | Normal | Removes current buffer (:bdelete) -`Tab` | Normal | Next window or tab -`Shift`+`Tab` | Normal | Previous window or tab +`q` | Normal | Smart close current window +`[Window]`+`p` | Normal | Split nicely +`[Window]`+`v` | Normal | :split +`[Window]`+`g` | Normal | :vsplit +`[Window]`+`t` | Normal | Open new tab (:tabnew) +`[Window]`+`o` | Normal | Close other windows (:only) +`[Window]`+`x` | Normal | Remove buffer, leave blank window +`[Window]`+`q` | Normal | Closes current buffer (:close) +`[Widnow]`+`Q` | Normal | Removes current buffer (:bdelete) +`[Window]`+`c` | Normal | Clear up all of other buffers and windows +`Tab` | Normal | Next window or tab (:wincmd w) +`Shift`+`Tab` | Normal | Previous window or tab (:wincmd p) ``+`sv` | Normal | Split with previous buffer ``+`sg` | Normal | Vertical split with previous buffer diff --git a/autoload/SpaceVim/mapping.vim b/autoload/SpaceVim/mapping.vim index b6b0de091..c05f80216 100644 --- a/autoload/SpaceVim/mapping.vim +++ b/autoload/SpaceVim/mapping.vim @@ -75,3 +75,24 @@ function! SpaceVim#mapping#clearBuffers() abort endif endfor endfunction + +function! SpaceVim#mapping#split_previous_buffer() abort + if bufnr('#') == -1 + call SpaceVim#util#echoWarn('There is no previous buffer') + else + split + wincmd w + e# + endif + +endfunction + +function! SpaceVim#mapping#vertical_split_previous_buffer() abort + if bufnr('#') == -1 + call SpaceVim#util#echoWarn('There is no previous buffer') + else + vsplit + wincmd w + e# + endif +endfunction diff --git a/autoload/SpaceVim/mapping/leader.vim b/autoload/SpaceVim/mapping/leader.vim index 3e7115fca..3293b2e2c 100644 --- a/autoload/SpaceVim/mapping/leader.vim +++ b/autoload/SpaceVim/mapping/leader.vim @@ -66,10 +66,10 @@ function! SpaceVim#mapping#leader#defindglobalMappings() abort \ "echo 'Use S to sourced line.'") call SpaceVim#mapping#def('nnoremap ', 'qr', 'q', 'Toggle recording','') - call SpaceVim#mapping#def('nnoremap ', 'sv', ':split:wincmd p:e#', - \'Open previous buffer in split window' , 'split|wincmd p|e#') - call SpaceVim#mapping#def('nnoremap ', 'sg', ':vsplit:wincmd p:e#', - \'Open previous buffer in vsplit window' , 'vsplit|wincmd p|e#') + call SpaceVim#mapping#def('nnoremap ', 'sv', ':call SpaceVim#mapping#split_previous_buffer()', + \'Open previous buffer in split window' , 'call SpaceVim#mapping#split_previous_buffer()') + call SpaceVim#mapping#def('nnoremap ', 'sg', ':call SpaceVim#mapping#vertical_split_previous_buffer()', + \'Open previous buffer in vsplit window' , 'call SpaceVim#mapping#vertical_split_previous_buffer()') endfunction function! SpaceVim#mapping#leader#defindWindowsLeader(key) abort if !empty(a:key) diff --git a/autoload/SpaceVim/util.vim b/autoload/SpaceVim/util.vim index b6bfad708..d791da0bd 100644 --- a/autoload/SpaceVim/util.vim +++ b/autoload/SpaceVim/util.vim @@ -5,3 +5,9 @@ function! SpaceVim#util#globpath(path, expr) abort return split(globpath(a:path, a:expr), '\n') endif endfunction + +function! SpaceVim#util#echoWarn(msg) abort + echohl WarningMsg + echo a:msg + echohl None +endfunction