From 5d49b133d93973e91e38fed86fb1c80b98304b53 Mon Sep 17 00:00:00 2001 From: wsdjeg Date: Fri, 2 Jun 2017 20:50:52 +0800 Subject: [PATCH 01/13] Add plugin: vim-over close #503 --- autoload/SpaceVim/layers/incsearch.vim | 1 + 1 file changed, 1 insertion(+) diff --git a/autoload/SpaceVim/layers/incsearch.vim b/autoload/SpaceVim/layers/incsearch.vim index b78e46de0..520c489c4 100644 --- a/autoload/SpaceVim/layers/incsearch.vim +++ b/autoload/SpaceVim/layers/incsearch.vim @@ -27,6 +27,7 @@ function! SpaceVim#layers#incsearch#plugins() abort call add(plugins, ['haya14busa/incsearch.vim', {'merged' : 0}]) call add(plugins, ['haya14busa/incsearch-fuzzy.vim', {'merged' : 0}]) call add(plugins, ['haya14busa/vim-asterisk', {'merged' : 0}]) + call add(plugins, ['osyo-manga/vim-over', {'merged' : 0}]) call add(plugins, ['haya14busa/incsearch-easymotion.vim', {'merged' : 0}]) return plugins endfunction From 432192e7393c77510820a7d63c9181b304d41c17 Mon Sep 17 00:00:00 2001 From: wsdjeg Date: Fri, 2 Jun 2017 22:33:19 +0800 Subject: [PATCH 02/13] Add mapping for jump to url --- autoload/SpaceVim/layers/default.vim | 11 +++++++++-- docs/documentation.md | 8 ++++---- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/autoload/SpaceVim/layers/default.vim b/autoload/SpaceVim/layers/default.vim index cd6681846..459a1bab8 100644 --- a/autoload/SpaceVim/layers/default.vim +++ b/autoload/SpaceVim/layers/default.vim @@ -72,9 +72,8 @@ function! SpaceVim#layers#default#config() abort call SpaceVim#mapping#space#def('nmap', ['j', 'J'], '(easymotion-s2)', 'jump to a suite of two characters', 0) call SpaceVim#mapping#space#def('nnoremap', ['j', 'k'], 'j==', 'go to next line and indent', 0) call SpaceVim#mapping#space#def('nmap', ['j', 'l'], '(easymotion-bd-jk)', 'jump to a line', 0) - call SpaceVim#mapping#space#def('nmap', ['j', 'u'], '(easymotion-bd-jk)', 'jump to a line', 0) call SpaceVim#mapping#space#def('nmap', ['j', 'v'], '(easymotion-bd-jk)', 'jump to a line', 0) - call SpaceVim#mapping#space#def('nmap', ['j', 'w'], '(easymotion-bd-jk)', 'jump to a line', 0) + call SpaceVim#mapping#space#def('nmap', ['j', 'w'], '(easymotion-bd-w)', 'jump to a word', 0) call SpaceVim#mapping#space#def('nmap', ['j', 'q'], '(easymotion-bd-jk)', 'jump to a line', 0) call SpaceVim#mapping#space#def('nnoremap', ['j', 'n'], "i\\", 'sp-newline', 0) call SpaceVim#mapping#space#def('nnoremap', ['j', 'o'], "i\\k$", 'open-line', 0) @@ -90,6 +89,9 @@ function! SpaceVim#layers#default#config() abort call SpaceVim#mapping#space#def('nnoremap', ['w', 'R'], 'call call(' \ . string(s:_function('s:previous_window')) . ', [])', \ 'rotate windows backward', 1) + call SpaceVim#mapping#space#def('nnoremap', ['j', 'u'], 'call call(' + \ . string(s:_function('s:jump_to_url')) . ', [])', + \ 'jump to url', 1) endfunction let s:file = SpaceVim#api#import('file') @@ -193,3 +195,8 @@ else return function(substitute(a:fstr, 's:', s:_s, 'g')) endfunction endif + +function! s:jump_to_url() abort + let g:EasyMotion_re_anywhere = 'http[s]*://' + call feedkeys("\(easymotion-jumptoanywhere)") +endfunction diff --git a/docs/documentation.md b/docs/documentation.md index 4c50eebce..74eab8d12 100644 --- a/docs/documentation.md +++ b/docs/documentation.md @@ -650,9 +650,9 @@ Key Binding | Description `SPC j k` | jump to next line and indent it using auto-indent rules `SPC j l` | jump to a line with avy (easymotion) `SPC j q` | show the dumb-jump quick look tooltip (TODO) -`SPC j u` | jump to a URL in the current buffer (TODO) +`SPC j u` | jump to a URL in the current window `SPC j v` | jump to the definition/declaration of an Emacs Lisp variable (TODO) -`SPC j w` | jump to a word in the current buffer (easymotion)(TODO) +`SPC j w` | jump to a word in the current buffer (easymotion) ##### Joining and splitting @@ -810,9 +810,9 @@ Key | Description ### c/c++ support 1. code completion: autocompletion and fuzzy match. -![2017-02-01_1359x720](https://cloud.githubusercontent.com/assets/13142418/22505960/df9068de-e8b8-11e6-943e-d79ceca095f1.png) +![completion-fuzzy-match](https://cloud.githubusercontent.com/assets/13142418/22505960/df9068de-e8b8-11e6-943e-d79ceca095f1.png) 2. syntax check: Asynchronous linting and make framework. -![2017-02-01_1359x722](https://cloud.githubusercontent.com/assets/13142418/22506340/e28b4782-e8ba-11e6-974b-ca29574dcc1f.png) +![syntax-check](https://cloud.githubusercontent.com/assets/13142418/22506340/e28b4782-e8ba-11e6-974b-ca29574dcc1f.png) ### go support From 58f7e31046381b7c8603848b469b907038856d7d Mon Sep 17 00:00:00 2001 From: wsdjeg Date: Sat, 3 Jun 2017 12:50:44 +0800 Subject: [PATCH 03/13] Undo tab windows --- autoload/SpaceVim/api/vim/tab.vim | 4 +++ autoload/SpaceVim/autocmds.vim | 1 + autoload/SpaceVim/mapping/space.vim | 2 ++ autoload/SpaceVim/plugins/windowsmanager.vim | 35 ++++++++++++++++++++ 4 files changed, 42 insertions(+) create mode 100644 autoload/SpaceVim/plugins/windowsmanager.vim diff --git a/autoload/SpaceVim/api/vim/tab.vim b/autoload/SpaceVim/api/vim/tab.vim index 61b44dc59..886522ef1 100644 --- a/autoload/SpaceVim/api/vim/tab.vim +++ b/autoload/SpaceVim/api/vim/tab.vim @@ -23,6 +23,10 @@ function! s:self.get_tree() abort return self._tree endfunction +function! s:self.realTabBuffers(id) abort + return filter(copy(tabpagebuflist(a:id)), 'buflisted(v:val) && getbufvar(v:val, "&buftype") == ""') +endfunction + function! SpaceVim#api#vim#tab#get() abort return deepcopy(s:self) endfunction diff --git a/autoload/SpaceVim/autocmds.vim b/autoload/SpaceVim/autocmds.vim index 81a571ec8..68da1a62a 100644 --- a/autoload/SpaceVim/autocmds.vim +++ b/autoload/SpaceVim/autocmds.vim @@ -16,6 +16,7 @@ function! SpaceVim#autocmds#init() abort \ bd| \ q | endif autocmd FileType jsp call JspFileTypeInit() + autocmd QuitPre * call SpaceVim#plugins#windowsmanager#UpdateRestoreWinInfo() autocmd FileType html,css,jsp EmmetInstall autocmd BufRead,BufNewFile *.pp setfiletype puppet if g:spacevim_enable_cursorline == 1 diff --git a/autoload/SpaceVim/mapping/space.vim b/autoload/SpaceVim/mapping/space.vim index 6a5ad89b1..ddbf85924 100644 --- a/autoload/SpaceVim/mapping/space.vim +++ b/autoload/SpaceVim/mapping/space.vim @@ -55,6 +55,8 @@ function! SpaceVim#mapping#space#init() abort call SpaceVim#mapping#space#def('nnoremap', ['w', '='], 'wincmd =', 'balance-windows', 1) call SpaceVim#mapping#space#def('nnoremap', ['w', 'w'], 'wincmd w', 'cycle and focus between windows', 1) call SpaceVim#mapping#space#def('nnoremap', ['w', 'W'], 'ChooseWin', 'select window', 1) + call SpaceVim#mapping#space#def('nnoremap', ['w', 'u'], 'call SpaceVim#plugins#windowsmanager#UndoQuitWin()', 'undo quieted window', 1) + call SpaceVim#mapping#space#def('nnoremap', ['w', 'U'], 'quit', 'redo quieted window', 1) nnoremap [SPC]bn :bnext let g:_spacevim_mappings_space.b.n = ['bnext', 'next buffer'] call SpaceVim#mapping#menu('Open next buffer', '[SPC]bn', 'bp') diff --git a/autoload/SpaceVim/plugins/windowsmanager.vim b/autoload/SpaceVim/plugins/windowsmanager.vim new file mode 100644 index 000000000..bd81cce99 --- /dev/null +++ b/autoload/SpaceVim/plugins/windowsmanager.vim @@ -0,0 +1,35 @@ +let s:TAB = SpaceVim#api#import('vim#tab') + +let s:restore_windows_stack = [] + + +function! s:get_window_restore_data() abort + let win_data = { + \ 'bufid': bufnr('%'), + \ 'tabpagenr': tabpagenr(), + \ 'view': winsaveview(), + \ } + return win_data +endfunction + +function! SpaceVim#plugins#windowsmanager#UpdateRestoreWinInfo() abort + if !&buflisted + return + endif + let win_data = s:get_window_restore_data() + if len(tabpagebuflist()) == 1 + let win_data.neighbour_buffer = '' + let win_data.open_command = (tabpagenr() - 1).'tabnew' + endif + call add(s:restore_windows_stack, win_data) +endfunction + +function! SpaceVim#plugins#windowsmanager#UndoQuitWin() + if empty(s:restore_windows_stack) + return + endif + let win_data = remove(s:restore_windows_stack, -1) + if win_data.neighbour_buffer != '' + endif + exe win_data.open_command . ' | b ' win_data.bufid +endfunction From 5c9d745935ad17277e493ab128632d187c14a1ea Mon Sep 17 00:00:00 2001 From: wsdjeg Date: Sat, 3 Jun 2017 13:37:51 +0800 Subject: [PATCH 04/13] Use small icon for buffer index --- autoload/SpaceVim/layers/core/tabline.vim | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/autoload/SpaceVim/layers/core/tabline.vim b/autoload/SpaceVim/layers/core/tabline.vim index 2f69bec71..8f281808f 100644 --- a/autoload/SpaceVim/layers/core/tabline.vim +++ b/autoload/SpaceVim/layers/core/tabline.vim @@ -67,7 +67,7 @@ function! SpaceVim#layers#core#tabline#get() abort elseif g:spacevim_buffer_index_type == 4 let id = i else - let id = s:messletters.bubble_num(i, g:spacevim_buffer_index_type) + let id = s:messletters.circled_num(i, g:spacevim_buffer_index_type) endif if g:spacevim_enable_tabline_filetype_icon let icon = s:file.fticon(name) @@ -112,7 +112,7 @@ function! SpaceVim#layers#core#tabline#get() abort elseif g:spacevim_buffer_index_type == 4 let id = index(s:buffers, i) + 1 else - let id = s:messletters.bubble_num(index(s:buffers, i) + 1, g:spacevim_buffer_index_type) + let id = s:messletters.circled_num(index(s:buffers, i) + 1, g:spacevim_buffer_index_type) endif if g:spacevim_enable_tabline_filetype_icon let icon = s:file.fticon(name) From d7a9ec1b7522e7f478f6b7101090a9a091d302c5 Mon Sep 17 00:00:00 2001 From: wsdjeg Date: Sat, 3 Jun 2017 15:07:09 +0800 Subject: [PATCH 05/13] Undo general quited window --- autoload/SpaceVim/autocmds.vim | 1 + autoload/SpaceVim/plugins/windowsmanager.vim | 43 ++++++++++++++++++-- 2 files changed, 40 insertions(+), 4 deletions(-) diff --git a/autoload/SpaceVim/autocmds.vim b/autoload/SpaceVim/autocmds.vim index 68da1a62a..042bc67f2 100644 --- a/autoload/SpaceVim/autocmds.vim +++ b/autoload/SpaceVim/autocmds.vim @@ -17,6 +17,7 @@ function! SpaceVim#autocmds#init() abort \ q | endif autocmd FileType jsp call JspFileTypeInit() autocmd QuitPre * call SpaceVim#plugins#windowsmanager#UpdateRestoreWinInfo() + autocmd WinEnter * call SpaceVim#plugins#windowsmanager#MarkBaseWin() autocmd FileType html,css,jsp EmmetInstall autocmd BufRead,BufNewFile *.pp setfiletype puppet if g:spacevim_enable_cursorline == 1 diff --git a/autoload/SpaceVim/plugins/windowsmanager.vim b/autoload/SpaceVim/plugins/windowsmanager.vim index bd81cce99..8b517719f 100644 --- a/autoload/SpaceVim/plugins/windowsmanager.vim +++ b/autoload/SpaceVim/plugins/windowsmanager.vim @@ -2,12 +2,17 @@ let s:TAB = SpaceVim#api#import('vim#tab') let s:restore_windows_stack = [] +let s:unmarked = 0 + function! s:get_window_restore_data() abort let win_data = { - \ 'bufid': bufnr('%'), + \ 'bufname': fnamemodify(bufname('%'), ':p'), \ 'tabpagenr': tabpagenr(), \ 'view': winsaveview(), + \ 'newtab':0, + \ 'oldwinid' : -1, + \ 'same_w' : 0, \ } return win_data endfunction @@ -16,10 +21,16 @@ function! SpaceVim#plugins#windowsmanager#UpdateRestoreWinInfo() abort if !&buflisted return endif + let s:unmarked = 1 let win_data = s:get_window_restore_data() if len(tabpagebuflist()) == 1 - let win_data.neighbour_buffer = '' + let win_data.newtab = 1 let win_data.open_command = (tabpagenr() - 1).'tabnew' + else + if winwidth(winnr()) == &columns + let win_data.same_w = 1 + endif + let win_data.oldwinid = winnr() endif call add(s:restore_windows_stack, win_data) endfunction @@ -29,7 +40,31 @@ function! SpaceVim#plugins#windowsmanager#UndoQuitWin() return endif let win_data = remove(s:restore_windows_stack, -1) - if win_data.neighbour_buffer != '' + if win_data.newtab + exe win_data.open_command . ' ' . win_data.bufname + else + exe win_data.open_command + endif +endfunction + +function! SpaceVim#plugins#windowsmanager#MarkBaseWin() + if s:unmarked + let win_data = s:restore_windows_stack[-1] + if win_data.same_w + " split + if win_data.oldwinid == winnr() + let win_data.open_command = 'topleft split ' . win_data.bufname + else + let win_data.open_command = 'rightbelow split ' . win_data.bufname + endif + else + " vsplit + if win_data.oldwinid == winnr() + let win_data.open_command = 'topleft vsplit ' . win_data.bufname + else + let win_data.open_command = 'rightbelow vsplit ' . win_data.bufname + endif + endif + let s:unmarked = 0 endif - exe win_data.open_command . ' | b ' win_data.bufid endfunction From f9d7c7d99eab34215cf40c1eea78b4b8f661ca80 Mon Sep 17 00:00:00 2001 From: wsdjeg Date: Sat, 3 Jun 2017 15:53:03 +0800 Subject: [PATCH 06/13] Fix redo window --- autoload/SpaceVim/mapping/space.vim | 2 +- autoload/SpaceVim/plugins/windowsmanager.vim | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/autoload/SpaceVim/mapping/space.vim b/autoload/SpaceVim/mapping/space.vim index ddbf85924..bbeefb738 100644 --- a/autoload/SpaceVim/mapping/space.vim +++ b/autoload/SpaceVim/mapping/space.vim @@ -56,7 +56,7 @@ function! SpaceVim#mapping#space#init() abort call SpaceVim#mapping#space#def('nnoremap', ['w', 'w'], 'wincmd w', 'cycle and focus between windows', 1) call SpaceVim#mapping#space#def('nnoremap', ['w', 'W'], 'ChooseWin', 'select window', 1) call SpaceVim#mapping#space#def('nnoremap', ['w', 'u'], 'call SpaceVim#plugins#windowsmanager#UndoQuitWin()', 'undo quieted window', 1) - call SpaceVim#mapping#space#def('nnoremap', ['w', 'U'], 'quit', 'redo quieted window', 1) + call SpaceVim#mapping#space#def('nnoremap', ['w', 'U'], 'call SpaceVim#plugins#windowsmanager#RedoQuitWin()', 'redo quieted window', 1) nnoremap [SPC]bn :bnext let g:_spacevim_mappings_space.b.n = ['bnext', 'next buffer'] call SpaceVim#mapping#menu('Open next buffer', '[SPC]bn', 'bp') diff --git a/autoload/SpaceVim/plugins/windowsmanager.vim b/autoload/SpaceVim/plugins/windowsmanager.vim index 8b517719f..21739e43e 100644 --- a/autoload/SpaceVim/plugins/windowsmanager.vim +++ b/autoload/SpaceVim/plugins/windowsmanager.vim @@ -2,6 +2,8 @@ let s:TAB = SpaceVim#api#import('vim#tab') let s:restore_windows_stack = [] +let s:redo_stack = [] + let s:unmarked = 0 @@ -33,6 +35,7 @@ function! SpaceVim#plugins#windowsmanager#UpdateRestoreWinInfo() abort let win_data.oldwinid = winnr() endif call add(s:restore_windows_stack, win_data) + let s:redo_stack = [] endfunction function! SpaceVim#plugins#windowsmanager#UndoQuitWin() @@ -45,6 +48,16 @@ function! SpaceVim#plugins#windowsmanager#UndoQuitWin() else exe win_data.open_command endif + call add(s:redo_stack, [tabpagenr(), winnr()]) +endfunction + +function! SpaceVim#plugins#windowsmanager#RedoQuitWin() + if !empty(s:redo_stack) + let [tabpage, winnr] = remove(s:redo_stack, -1) + exe 'tabnext' . tabpage + exe winnr . 'wincmd w' + quit + endif endfunction function! SpaceVim#plugins#windowsmanager#MarkBaseWin() From 89ce635d25259bab760fabf1dbf5809e5389a77c Mon Sep 17 00:00:00 2001 From: wsdjeg Date: Sat, 3 Jun 2017 16:11:55 +0800 Subject: [PATCH 07/13] Fix mapping guide event closing plugin buffer should not send event --- autoload/SpaceVim/mapping/guide.vim | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/autoload/SpaceVim/mapping/guide.vim b/autoload/SpaceVim/mapping/guide.vim index 3505993b8..99fb89581 100644 --- a/autoload/SpaceVim/mapping/guide.vim +++ b/autoload/SpaceVim/mapping/guide.vim @@ -337,7 +337,6 @@ function! s:handle_input(input) " {{{ call s:start_buffer() else let s:prefix_key_inp = '' - doautocmd WinEnter call feedkeys(s:vis.s:reg.s:count, 'ti') redraw! try @@ -428,7 +427,7 @@ endfunction function! s:winclose() " {{{ noautocmd execute s:gwin.'wincmd w' if s:gwin == winnr() - close + noautocmd close redraw! exe s:winres let s:gwin = -1 From 398e0ae6dbcbeb3f15bd4587af4b535a96e229d9 Mon Sep 17 00:00:00 2001 From: wsdjeg Date: Sat, 3 Jun 2017 19:57:57 +0800 Subject: [PATCH 08/13] Fix smart close window --- autoload/SpaceVim.vim | 2 +- autoload/zvim/util.vim | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/autoload/SpaceVim.vim b/autoload/SpaceVim.vim index 7fc9a69e6..899495f16 100644 --- a/autoload/SpaceVim.vim +++ b/autoload/SpaceVim.vim @@ -325,7 +325,7 @@ let g:spacevim_enable_vimfiler_gitstatus = 0 " Enable/Disable filetypeicon colum in vimfiler buffer, default is 0. let g:spacevim_enable_vimfiler_filetypeicon = 0 let g:spacevim_smartcloseignorewin = ['__Tagbar__' , 'vimfiler:default'] -let g:spacevim_smartcloseignoreft = ['help'] +let g:spacevim_smartcloseignoreft = ['help', 'tagbar', 'vimfiler'] let g:spacevim_altmoveignoreft = ['Tagbar' , 'vimfiler'] let g:spacevim_enable_javacomplete2_py = 0 let g:spacevim_src_root = 'E:\sources\' diff --git a/autoload/zvim/util.vim b/autoload/zvim/util.vim index 3f3c6f56a..11f79f554 100644 --- a/autoload/zvim/util.vim +++ b/autoload/zvim/util.vim @@ -46,7 +46,7 @@ fu! zvim#util#SmartClose() abort endfor if num == 1 else - close + quit endif endf From 026d0d713d7df93721d5b12a82d53ba4e240121b Mon Sep 17 00:00:00 2001 From: Wang Shidong Date: Sun, 4 Jun 2017 22:58:47 +0800 Subject: [PATCH 09/13] Buffer mappings (#600) * Add SPC b D * Fix SPC b D * Add SPC b C-d * Add SPC b * mappings * Fix buffer mappings --- autoload/SpaceVim/api/vim/message.vim | 41 ++++++++++++++---------- autoload/SpaceVim/layers/default.vim | 45 +++++++++++++++++++++++++++ autoload/SpaceVim/mapping.vim | 32 +++++++++++++------ docs/documentation.md | 23 ++++++++++++++ 4 files changed, 116 insertions(+), 25 deletions(-) diff --git a/autoload/SpaceVim/api/vim/message.vim b/autoload/SpaceVim/api/vim/message.vim index b707be869..0591b988b 100644 --- a/autoload/SpaceVim/api/vim/message.vim +++ b/autoload/SpaceVim/api/vim/message.vim @@ -10,18 +10,10 @@ " @section vim#message, api-vim-message " @parentsection api -function! SpaceVim#api#vim#compatible#get() abort - return map({ - \ 'echo' : '', - \ 'echomsg': '', - \ 'error': '', - \ 'warn': '', - \ }, - \ "function('s:' . v:key)" - \ ) -endfunction -function! s:echo(hl, msg) abort +let s:self = {} + +function! s:self.echo(hl, msg) abort execute 'echohl' a:hl try echo a:msg @@ -30,7 +22,7 @@ function! s:echo(hl, msg) abort endtry endfunction -function! s:echomsg(hl, msg) abort +function! s:self.echomsg(hl, msg) abort execute 'echohl' a:hl try for m in split(a:msg, "\n") @@ -41,10 +33,27 @@ function! s:echomsg(hl, msg) abort endtry endfunction -function! s:error(msg) abort - call s:echomsg('ErrorMsg', a:msg) +function! s:self.error(msg) abort + call self.echomsg('ErrorMsg', a:msg) endfunction -function! s:warn(msg) abort - call s:echomsg('WarningMsg', a:msg) +function! s:self.warn(msg) abort + call self.echomsg('WarningMsg', a:msg) +endfunction + +function! s:self.confirm(msg) abort + echohl WarningMsg + echon a:msg . '? (y or n) ' + echohl NONE + let rst = nr2char(getchar()) + if rst =~? 'y' || rst == nr2char(13) + return 1 + else + return 0 + endif +endfunction + + +function! SpaceVim#api#vim#message#get() abort + return deepcopy(s:self) endfunction diff --git a/autoload/SpaceVim/layers/default.vim b/autoload/SpaceVim/layers/default.vim index 459a1bab8..a81c8fbe3 100644 --- a/autoload/SpaceVim/layers/default.vim +++ b/autoload/SpaceVim/layers/default.vim @@ -92,9 +92,29 @@ function! SpaceVim#layers#default#config() abort call SpaceVim#mapping#space#def('nnoremap', ['j', 'u'], 'call call(' \ . string(s:_function('s:jump_to_url')) . ', [])', \ 'jump to url', 1) + call SpaceVim#mapping#space#def('nnoremap', [''], 'try | b# | catch | endtry', 'last buffer', 1) + call SpaceVim#mapping#space#def('nnoremap', ['b', 'd'], 'call SpaceVim#mapping#close_current_buffer()', 'kill-this-buffer', 1) + call SpaceVim#mapping#space#def('nnoremap', ['b', 'D'], + \ 'call SpaceVim#mapping#kill_visible_buffer_choosewin()', + \ 'kill-this-buffer', 1) + call SpaceVim#mapping#space#def('nnoremap', ['b', ''], 'call SpaceVim#mapping#clearBuffers()', 'kill-other-buffers', 1) + call SpaceVim#mapping#space#def('nnoremap', ['b', 'e'], 'call call(' + \ . string(s:_function('s:safe_erase_buffer')) . ', [])', + \ 'safe-erase-buffer', 1) + call SpaceVim#mapping#space#def('nnoremap', ['b', 'h'], 'Startify', 'home', 1) + call SpaceVim#mapping#space#def('nnoremap', ['b', 'm'], 'call call(' + \ . string(s:_function('s:open_message_buffer')) . ', [])', + \ 'open-message-buffer', 1) + call SpaceVim#mapping#space#def('nnoremap', ['b', 'P'], 'normal! ggdG"+P', 'copy-clipboard-to-whole-buffer', 1) + call SpaceVim#mapping#space#def('nnoremap', ['b', 'R'], 'call call(' + \ . string(s:_function('s:safe_revert_buffer')) . ', [])', + \ 'safe-revert-buffer', 1) + call SpaceVim#mapping#space#def('nnoremap', ['b', 'Y'], 'normal! ggVG"+y``', 'copy-whole-buffer-to-clipboard', 1) + call SpaceVim#mapping#space#def('nnoremap', ['b', 'w'], 'setl readonly!', 'read-only-mode', 1) endfunction let s:file = SpaceVim#api#import('file') +let s:MESSAGE = SpaceVim#api#import('vim#message') function! s:next_file() abort let dir = expand('%:p:h') @@ -200,3 +220,28 @@ function! s:jump_to_url() abort let g:EasyMotion_re_anywhere = 'http[s]*://' call feedkeys("\(easymotion-jumptoanywhere)") endfunction + +function! s:safe_erase_buffer() abort + if s:MESSAGE.confirm('Erase content of buffer ' . expand('%:t')) + normal! ggdG + endif + redraw! +endfunction + +function! s:open_message_buffer() abort + vertical topleft edit __Message_Buffer__ + setlocal buftype=nofile bufhidden=wipe nobuflisted nolist noswapfile nowrap cursorline nospell nonumber norelativenumber + setf message + normal! ggdG + silent put =execute(':message') + normal! G + setlocal nomodifiable + nnoremap q :silent bd +endfunction + +function! s:safe_revert_buffer() abort + if s:MESSAGE.confirm('Revert buffer form ' . expand('%:p')) + edit! + endif + redraw! +endfunction diff --git a/autoload/SpaceVim/mapping.vim b/autoload/SpaceVim/mapping.vim index 4059b5785..c3fef8ef1 100644 --- a/autoload/SpaceVim/mapping.vim +++ b/autoload/SpaceVim/mapping.vim @@ -129,15 +129,17 @@ function! SpaceVim#mapping#gd() abort endfunction function! SpaceVim#mapping#clearBuffers() abort - let blisted = filter(range(1, bufnr('$')), 'buflisted(v:val)') - for i in blisted - if i != bufnr('%') - try - exe 'bw ' . i - catch - endtry - endif - endfor + if confirm('Kill all other buffers?', "&Yes\n&No\n&Cancel") == 1 + let blisted = filter(range(1, bufnr('$')), 'buflisted(v:val)') + for i in blisted + if i != bufnr('%') + try + exe 'bw ' . i + catch + endtry + endif + endfor + endif endfunction function! SpaceVim#mapping#split_previous_buffer() abort @@ -209,6 +211,18 @@ function! SpaceVim#mapping#close_term_buffer(...) abort endif endfunction +function! SpaceVim#mapping#kill_visible_buffer_choosewin() abort + ChooseWin + let nr = bufnr('%') + for i in range(1, winnr('$')) + if winbufnr(i) == nr + exe i . 'wincmd w' + enew + endif + endfor + exe 'bwipeout ' . nr +endfunction + function! SpaceVim#mapping#menu(desc, key, cmd) abort let description = '➤ ' \. a:desc diff --git a/docs/documentation.md b/docs/documentation.md index 74eab8d12..c1fdae255 100644 --- a/docs/documentation.md +++ b/docs/documentation.md @@ -729,6 +729,29 @@ Key Binding | Description Buffer manipulation commands (start with `b`): +Key Binding | Description +----------- | ----------- +`SPC TAB` | switch to alternate buffer in the current window (switch back and forth) +`SPC b b` | switch to a buffer (via denite/unite) +`SPC b d` | kill the current buffer (does not delete the visited file) +`SPC u SPC b d` | kill the current buffer and window (does not delete the visited file) (TODO) +`SPC b D` | kill a visible buffer using vim-choosewin +`SPC u SPC b D` | kill a visible buffer and its window using ace-window(TODO) +`SPC b C-d` | kill other buffers +`SPC b C-D` | kill buffers using a regular expression(TODO) +`SPC b e` | erase the content of the buffer (ask for confirmation) +`SPC b h` | open *SpaceVim* home buffer +`SPC b n` | switch to next buffer avoiding special buffers +`SPC b m` | open *Messages* buffer +`SPC u SPC b m` | kill all buffers and windows except the current one(TODO) +`SPC b p` | switch to previous buffer avoiding special buffers +`SPC b P` | copy clipboard and replace buffer (useful when pasting from a browser) +`SPC b R` | revert the current buffer (reload from disk) +`SPC b s` | switch to the *scratch* buffer (create it if needed) +`SPC b w` | toggle read-only (writable state) +`SPC b Y` | copy whole buffer to clipboard (useful when copying to a browser) +`z f` | Make current function or comments visible in buffer as much as possible (TODO) + ### Auto-saving ### Searching From 66e8820e82a58605b8167eed2a800094ce84d948 Mon Sep 17 00:00:00 2001 From: wsdjeg Date: Mon, 5 Jun 2017 21:17:44 +0800 Subject: [PATCH 10/13] Add mappings for create empty buffer --- autoload/SpaceVim/layers/default.vim | 6 ++++++ docs/documentation.md | 11 +++++++++++ 2 files changed, 17 insertions(+) diff --git a/autoload/SpaceVim/layers/default.vim b/autoload/SpaceVim/layers/default.vim index a81c8fbe3..d4b89f443 100644 --- a/autoload/SpaceVim/layers/default.vim +++ b/autoload/SpaceVim/layers/default.vim @@ -111,6 +111,12 @@ function! SpaceVim#layers#default#config() abort \ 'safe-revert-buffer', 1) call SpaceVim#mapping#space#def('nnoremap', ['b', 'Y'], 'normal! ggVG"+y``', 'copy-whole-buffer-to-clipboard', 1) call SpaceVim#mapping#space#def('nnoremap', ['b', 'w'], 'setl readonly!', 'read-only-mode', 1) + let g:_spacevim_mappings_space.b.N = {'name' : '+New empty buffer'} + call SpaceVim#mapping#space#def('nnoremap', ['b', 'N', 'h'], 'topleft vertical new', 'new-empty-buffer-left', 1) + call SpaceVim#mapping#space#def('nnoremap', ['b', 'N', 'j'], 'rightbelow new', 'new-empty-buffer-below', 1) + call SpaceVim#mapping#space#def('nnoremap', ['b', 'N', 'k'], 'new', 'new-empty-buffer-above', 1) + call SpaceVim#mapping#space#def('nnoremap', ['b', 'N', 'l'], 'rightbelow vertical new', 'new-empty-buffer-right', 1) + call SpaceVim#mapping#space#def('nnoremap', ['b', 'N', 'n'], 'enew', 'new-empty-buffer', 1) endfunction let s:file = SpaceVim#api#import('file') diff --git a/docs/documentation.md b/docs/documentation.md index c1fdae255..084693ec0 100644 --- a/docs/documentation.md +++ b/docs/documentation.md @@ -57,6 +57,7 @@ title: "Documentation" * [Window manipulation key bindings](#window-manipulation-key-bindings) * [Buffers and Files](#buffers-and-files) * [Buffers manipulation key bindings](#buffers-manipulation-key-bindings) + * [Create a new empty buffer](#create-a-new-empty-buffer) * [Auto-saving](#auto-saving) * [Searching](#searching) * [Editing](#editing) @@ -752,6 +753,16 @@ Key Binding | Description `SPC b Y` | copy whole buffer to clipboard (useful when copying to a browser) `z f` | Make current function or comments visible in buffer as much as possible (TODO) +##### Create a new empty buffer + +Key Binding | Description +----------- | ----------- +`SPC b N h` | create new empty buffer in a new window on the left +`SPC b N j` | create new empty buffer in a new window at the bottom +`SPC b N k` | create new empty buffer in a new window above +`SPC b N l` | create new empty buffer in a new window below +`SPC b N n` | create new empty buffer in current window + ### Auto-saving ### Searching From 2172cff2859da99edcee28b69ccb11cb9bafaf09 Mon Sep 17 00:00:00 2001 From: wsdjeg Date: Mon, 5 Jun 2017 21:23:04 +0800 Subject: [PATCH 11/13] Fix conflict mappings --- autoload/SpaceVim/mapping/space.vim | 3 --- 1 file changed, 3 deletions(-) diff --git a/autoload/SpaceVim/mapping/space.vim b/autoload/SpaceVim/mapping/space.vim index bbeefb738..9d2d96421 100644 --- a/autoload/SpaceVim/mapping/space.vim +++ b/autoload/SpaceVim/mapping/space.vim @@ -61,11 +61,8 @@ function! SpaceVim#mapping#space#init() abort let g:_spacevim_mappings_space.b.n = ['bnext', 'next buffer'] call SpaceVim#mapping#menu('Open next buffer', '[SPC]bn', 'bp') nnoremap [SPC]bp :bp - nnoremap [SPC]bN :bN let g:_spacevim_mappings_space.b.p = ['bp', 'previous buffer'] call SpaceVim#mapping#menu('Open previous buffer', '[SPC]bp', 'bp') - let g:_spacevim_mappings_space.b.N = ['bN', 'previous buffer'] - call SpaceVim#mapping#menu('Open previous buffer', '[SPC]bN', 'bp') let g:_spacevim_mappings_space.e = {'name' : '+Errors/Encoding'} let g:_spacevim_mappings_space.B = {'name' : '+Global-buffers'} nnoremap [SPC]tn :setlocal nonumber! norelativenumber! From bb3c24ec8fc53eb9e29baf6e3414789e446df1a5 Mon Sep 17 00:00:00 2001 From: wsdjeg Date: Mon, 5 Jun 2017 23:11:20 +0800 Subject: [PATCH 12/13] Add bookmarks --- autoload/SpaceVim/layers/default.vim | 3 +++ docs/documentation.md | 10 ++++++++++ 2 files changed, 13 insertions(+) diff --git a/autoload/SpaceVim/layers/default.vim b/autoload/SpaceVim/layers/default.vim index d4b89f443..afbc92df5 100644 --- a/autoload/SpaceVim/layers/default.vim +++ b/autoload/SpaceVim/layers/default.vim @@ -117,6 +117,9 @@ function! SpaceVim#layers#default#config() abort call SpaceVim#mapping#space#def('nnoremap', ['b', 'N', 'k'], 'new', 'new-empty-buffer-above', 1) call SpaceVim#mapping#space#def('nnoremap', ['b', 'N', 'l'], 'rightbelow vertical new', 'new-empty-buffer-right', 1) call SpaceVim#mapping#space#def('nnoremap', ['b', 'N', 'n'], 'enew', 'new-empty-buffer', 1) + + " file mappings + call SpaceVim#mapping#space#def('nnoremap', ['f', 'b'], 'Unite vim_bookmarks', 'unite-filtered-bookmarks', 1) endfunction let s:file = SpaceVim#api#import('file') diff --git a/docs/documentation.md b/docs/documentation.md index 084693ec0..15c7821c9 100644 --- a/docs/documentation.md +++ b/docs/documentation.md @@ -58,6 +58,8 @@ title: "Documentation" * [Buffers and Files](#buffers-and-files) * [Buffers manipulation key bindings](#buffers-manipulation-key-bindings) * [Create a new empty buffer](#create-a-new-empty-buffer) + * [Special Buffers](#special-buffers) + * [Files manipulations key bindings](#files-manipulations-key-bindings) * [Auto-saving](#auto-saving) * [Searching](#searching) * [Editing](#editing) @@ -763,6 +765,14 @@ Key Binding | Description `SPC b N l` | create new empty buffer in a new window below `SPC b N n` | create new empty buffer in current window +##### Special Buffers + +In SpaceVim, there are many special buffers, these buffers are created by plugins or SpaceVim isself. and all of this buffers are not listed. + +##### Files manipulations key bindings + +Files manipulation commands (start with f): + ### Auto-saving ### Searching From 01b37c4bf1b5890d56031dabbbe9f51d39fc4322 Mon Sep 17 00:00:00 2001 From: wsdjeg Date: Tue, 6 Jun 2017 20:31:04 +0800 Subject: [PATCH 13/13] Fix auto hlsearch close #606 --- autoload/SpaceVim/layers/incsearch.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/autoload/SpaceVim/layers/incsearch.vim b/autoload/SpaceVim/layers/incsearch.vim index 520c489c4..740cc6d59 100644 --- a/autoload/SpaceVim/layers/incsearch.vim +++ b/autoload/SpaceVim/layers/incsearch.vim @@ -37,7 +37,7 @@ function! SpaceVim#layers#incsearch#config() abort map ? (incsearch-backward) map g/ (incsearch-stay) set hlsearch - let g:incsearch#auto_nohlsearch = 1 + let g:incsearch#auto_nohlsearch = get(g:, 'incsearch#auto_nohlsearch', 1) noremap n :call update_search_index('n') noremap N :call update_search_index('N') map * (incsearch-nohl-*)