From a307f8ae0c2068dc1b0d26f08842828521f8209d Mon Sep 17 00:00:00 2001 From: Orson Peters Date: Sat, 27 Feb 2021 02:32:38 +0100 Subject: [PATCH 1/2] Force feedkeys to flush typeahead buffer to get correct b:changedtick. --- autoload/repeat.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/autoload/repeat.vim b/autoload/repeat.vim index 97fea24..e76c335 100644 --- a/autoload/repeat.vim +++ b/autoload/repeat.vim @@ -136,7 +136,7 @@ endfunction function! repeat#wrap(command,count) let preserve = (g:repeat_tick == b:changedtick) - call feedkeys((a:count ? a:count : '').a:command, 'n') + call feedkeys((a:count ? a:count : '').a:command, 'nx') exe (&foldopen =~# 'undo\|all' ? 'norm! zv' : '') if preserve let g:repeat_tick = b:changedtick From 7216fe3a29d254ac971d516c34603a84b5df61df Mon Sep 17 00:00:00 2001 From: Orson Peters Date: Sat, 27 Feb 2021 02:41:16 +0100 Subject: [PATCH 2/2] Cleaner solution due to lacygoill. --- autoload/repeat.vim | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/autoload/repeat.vim b/autoload/repeat.vim index e76c335..b270fc4 100644 --- a/autoload/repeat.vim +++ b/autoload/repeat.vim @@ -136,10 +136,13 @@ endfunction function! repeat#wrap(command,count) let preserve = (g:repeat_tick == b:changedtick) - call feedkeys((a:count ? a:count : '').a:command, 'nx') + call feedkeys((a:count ? a:count : '').a:command, 'n') exe (&foldopen =~# 'undo\|all' ? 'norm! zv' : '') if preserve - let g:repeat_tick = b:changedtick + augroup repeat_preserve_after_undo + autocmd! + autocmd TextChanged let g:repeat_tick = b:changedtick | autocmd! repeat_preserve_after_undo + augroup END endif endfunction