From fa468c4396f1786bdd71749ad7f4acbb31c9f080 Mon Sep 17 00:00:00 2001 From: wsdjeg Date: Fri, 15 Apr 2022 10:22:03 +0800 Subject: [PATCH] pref(denite): improve denite key binding use neovim api to avoid switch windows --- config/plugins/denite.vim | 36 ++++++++++++++++++++++++++++-------- 1 file changed, 28 insertions(+), 8 deletions(-) diff --git a/config/plugins/denite.vim b/config/plugins/denite.vim index 4320233c6..c06a996c5 100644 --- a/config/plugins/denite.vim +++ b/config/plugins/denite.vim @@ -158,6 +158,7 @@ augroup spacevim_layer_denite augroup END function! s:denite_my_settings() abort + let s:denite_winid = win_getid() nnoremap i \ denite#do_map('open_filter_buffer') nnoremap ' @@ -185,14 +186,21 @@ function! s:denite_filter_my_settings() abort call s:clear_imap('%') imap (denite_filter_quit) imap (denite_filter_quit):q - inoremap - \ p:call cursor(line('.')+1,0)pA - inoremap - \ p:call cursor(line('.')-1,0)pA - inoremap - \ p:call cursor(line('.')+1,0)pA - inoremap - \ p:call cursor(line('.')-1,0)pA + if exists('*nvim_win_get_cursor') && exists('*nvim_win_set_cursor') + inoremap denite_next() + inoremap denite_prev() + inoremap denite_next() + inoremap denite_prev() + else + inoremap + \ p:call cursor(line('.')+1,0)pA + inoremap + \ p:call cursor(line('.')-1,0)pA + inoremap + \ p:call cursor(line('.')+1,0)pA + inoremap + \ p:call cursor(line('.')-1,0)pA + endif inoremap denite#do_map('do_action') " @fixme use this key binding only for sources which has delete action inoremap @@ -202,6 +210,18 @@ function! s:denite_filter_my_settings() abort endif endfunction +function! s:denite_next() abort + let win_cursor = nvim_win_get_cursor(s:denite_winid) + call nvim_win_set_cursor(s:denite_winid, [win_cursor[0] + 1, win_cursor[1]]) + return '' +endfunction + +function! s:denite_prev() abort + let win_cursor = nvim_win_get_cursor(s:denite_winid) + call nvim_win_set_cursor(s:denite_winid, [win_cursor[0] - 1, win_cursor[1]]) + return '' +endfunction + function! s:delete_action() abort if SpaceVim#layers#core#statusline#denite_status("sources") =~# '^buffer'