From 44b3a99d06524688c4560f2151e51d802ca48e58 Mon Sep 17 00:00:00 2001 From: Wang Shidong Date: Sat, 25 Jul 2020 22:59:40 +0800 Subject: [PATCH] Fix flygrep history completion (#3659) --- autoload/SpaceVim/plugins/flygrep.vim | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/autoload/SpaceVim/plugins/flygrep.vim b/autoload/SpaceVim/plugins/flygrep.vim index c4d6c0301..1c28881c3 100644 --- a/autoload/SpaceVim/plugins/flygrep.vim +++ b/autoload/SpaceVim/plugins/flygrep.vim @@ -679,8 +679,6 @@ function! s:previous_match_history() abort let s:complete_input_history_base = s:MPT._prompt.begin let s:MPT._prompt.cursor = '' let s:MPT._prompt.end = '' - else - let s:MPT._prompt.begin = s:complete_input_history_base endif let s:complete_input_history_num[0] += 1 let s:MPT._prompt.begin = s:complete_input_history(s:complete_input_history_base, s:complete_input_history_num) @@ -693,8 +691,6 @@ function! s:next_match_history() abort let s:complete_input_history_base = s:MPT._prompt.begin let s:MPT._prompt.cursor = '' let s:MPT._prompt.end = '' - else - let s:MPT._prompt.begin = s:complete_input_history_base endif let s:complete_input_history_num[1] += 1 let s:MPT._prompt.begin = s:complete_input_history(s:complete_input_history_base, s:complete_input_history_num) @@ -704,14 +700,21 @@ endfunction function! s:complete_input_history(str,num) abort let results = filter(copy(s:grep_history), "v:val =~# '^' . a:str") - if a:num[0] - a:num[1] == 0 - return a:str - elseif len(results) > 0 - let index = ((len(results) - 1) - a:num[0] + a:num[1]) % len(results) - return results[index] + if !empty(results) && results[-1] !=# a:str + let complete_items = results + [a:str] + elseif empty(results) + let complete_items = [a:str] else - return a:str + let complete_items = results endif + " 5 0 6 + let patch = (a:num[0] - a:num[1]) % len(complete_items) + if patch >= 0 + let index = len(complete_items) - 1 - patch + else + let index = abs(patch) - 1 + endif + return complete_items[index] endfunction let s:MPT._function_key = {