diff options
author | Shougo Matsushita <Shougo.Matsu@gmail.com> | 2020-11-19 15:37:27 +0900 |
---|---|---|
committer | Shougo Matsushita <Shougo.Matsu@gmail.com> | 2020-11-19 15:37:27 +0900 |
commit | 58db1b1c80d67dd0f48c8224c4e4d737885a2f65 (patch) | |
tree | 0832de47f16c7f08393a896e15ac9ee2f1395a48 | |
parent | 27c5ddba448e50e182985e1582dd519342986cef (diff) | |
download | deoplete.nvim-58db1b1c80d67dd0f48c8224c4e4d737885a2f65.zip |
Skip if old completion
-rw-r--r-- | autoload/deoplete/handler.vim | 1 | ||||
-rw-r--r-- | autoload/deoplete/init.vim | 1 | ||||
-rw-r--r-- | rplugin/python3/deoplete/context.py | 1 | ||||
-rw-r--r-- | rplugin/python3/deoplete/deoplete.py | 10 |
4 files changed, 11 insertions, 2 deletions
diff --git a/autoload/deoplete/handler.vim b/autoload/deoplete/handler.vim index e355063..bf98ce5 100644 --- a/autoload/deoplete/handler.vim +++ b/autoload/deoplete/handler.vim @@ -61,6 +61,7 @@ function! deoplete#handler#_do_complete() abort let prev.candidates = context.candidates let prev.complete_position = context.complete_position let prev.linenr = line('.') + let prev.time = context.time if context.event ==# 'Manual' let context.event = '' diff --git a/autoload/deoplete/init.vim b/autoload/deoplete/init.vim index cd9ccfa..e181e81 100644 --- a/autoload/deoplete/init.vim +++ b/autoload/deoplete/init.vim @@ -274,6 +274,7 @@ function! deoplete#init#_prev_completion() abort \ 'linenr': -1, \ 'candidates': [], \ 'complete_position': -1, + \ 'time': reltime(), \ } endfunction diff --git a/rplugin/python3/deoplete/context.py b/rplugin/python3/deoplete/context.py index 0983a40..63aeaf1 100644 --- a/rplugin/python3/deoplete/context.py +++ b/rplugin/python3/deoplete/context.py @@ -48,6 +48,7 @@ class Context(object): 'deoplete#util#get_next_input', event), 'position': self._vim.call('getpos', '.'), 'same_filetypes': same_filetypes, + 'time': self._vim.call('reltime'), } context.update(self._cached) # type: ignore diff --git a/rplugin/python3/deoplete/deoplete.py b/rplugin/python3/deoplete/deoplete.py index 3774e59..475590a 100644 --- a/rplugin/python3/deoplete/deoplete.py +++ b/rplugin/python3/deoplete/deoplete.py @@ -96,9 +96,10 @@ class Deoplete(logger.LoggingMixin): if needs_poll: self._vim.call('deoplete#handler#_async_timer_start') - # Async update is skipped if same. - # Note: If needs_poll, it cannot be skipped. prev_completion = self._vim.vars['deoplete#_prev_completion'] + + # Skip if async update is same. + # Note: If needs_poll, it cannot be skipped. prev_candidates = prev_completion['candidates'] event = context['event'] same_candidates = prev_candidates and candidates == prev_candidates @@ -106,6 +107,10 @@ class Deoplete(logger.LoggingMixin): event == 'Async' or event == 'Update'): return + # Skip if old completion. + if context['time'] < prev_completion['time']: + return + # error(self._vim, candidates) self._vim.vars['deoplete#_context'] = { 'complete_position': position, @@ -113,6 +118,7 @@ class Deoplete(logger.LoggingMixin): 'candidates': candidates, 'event': context['event'], 'input': context['input'], + 'time': context['time'], 'is_async': needs_poll, } |