From a39f78f5e599ef29cc15c46c352ec5560e0f8e73 Mon Sep 17 00:00:00 2001 From: Shougo Matsushita Date: Fri, 20 Nov 2020 19:12:46 +0900 Subject: Fix #1149 add refresh_backspace option --- autoload/deoplete/handler.vim | 23 ++++++++++++++--------- autoload/deoplete/init.vim | 2 +- doc/deoplete.txt | 7 +++++++ 3 files changed, 22 insertions(+), 10 deletions(-) diff --git a/autoload/deoplete/handler.vim b/autoload/deoplete/handler.vim index bf98ce5..8ff2023 100644 --- a/autoload/deoplete/handler.vim +++ b/autoload/deoplete/handler.vim @@ -186,8 +186,20 @@ endfunction function! deoplete#handler#_completion_begin(event) abort call deoplete#custom#_update_cache() - if s:is_skip(a:event) + let auto_popup = deoplete#custom#_get_option( + \ 'auto_complete_popup') !=# 'manual' + let prev_input = get(g:deoplete#_context, 'input', '') + let cur_input = deoplete#util#get_input(a:event) + + let check_back_space = auto_popup + \ && cur_input !=# prev_input + \ && len(cur_input) + 1 ==# len(prev_input) + \ && stridx(prev_input, cur_input) == 0 + let refresh_backspace = deoplete#custom#_get_option('refresh_backspace') + + if s:is_skip(a:event) || (check_back_space && !refresh_backspace) let g:deoplete#_context.candidates = [] + let g:deoplete#_context.input = cur_input return endif @@ -201,14 +213,7 @@ function! deoplete#handler#_completion_begin(event) abort \ 'deoplete_auto_completion_begin', {'event': a:event}) " For popup flicker - let auto_popup = deoplete#custom#_get_option( - \ 'auto_complete_popup') !=# 'manual' - let prev_input = get(g:deoplete#_context, 'input', '') - let cur_input = deoplete#util#get_input(a:event) - if auto_popup && empty(v:completed_item) - \ && cur_input !=# prev_input - \ && len(cur_input) + 1 ==# len(prev_input) - \ && stridx(prev_input, cur_input) == 0 + if check_back_space && empty(v:completed_item) call feedkeys("\_", 'i') endif endfunction diff --git a/autoload/deoplete/init.vim b/autoload/deoplete/init.vim index e181e81..e848392 100644 --- a/autoload/deoplete/init.vim +++ b/autoload/deoplete/init.vim @@ -236,7 +236,6 @@ function! s:check_custom_option(old_var, new_var) abort endfunction function! deoplete#init#_option() abort - " Note: HTML omni func use search(). return { \ 'auto_complete': v:true, \ 'auto_complete_delay': 0, @@ -259,6 +258,7 @@ function! deoplete#init#_option() abort \ 'prev_completion_mode': '', \ 'profile': v:false, \ 'refresh_always': v:true, + \ 'refresh_backspace': v:true, \ 'skip_chars': ['(', ')'], \ 'skip_multibyte': v:false, \ 'smart_case': &smartcase, diff --git a/doc/deoplete.txt b/doc/deoplete.txt index a42c854..573da68 100644 --- a/doc/deoplete.txt +++ b/doc/deoplete.txt @@ -302,6 +302,13 @@ refresh_always Note: It increases the screen flicker when |deoplete-options-num_processes| != 0. + Default value: v:true + + *deoplete-options-refresh_backspace* +refresh_backspace + Deoplete refreshes the candidates automatically when you + press or key. + Default value: v:true *deoplete-options-skip_multibyte* -- cgit v1.2.3