Skip to content

Commit 4cf914e

Browse files
committed
🐛 Wait debounced redraw before echo to fix flush
Close #77
1 parent e076139 commit 4cf914e

File tree

2 files changed

+11
-11
lines changed

2 files changed

+11
-11
lines changed

denops_std/helper/echo.ts

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,6 @@ async function echoVim(denops: Denops, message: string): Promise<void> {
2727
await load(denops, new URL("./echo.vim", import.meta.url));
2828
const waiter = deferred<void>();
2929
const id = anonymous.once(denops, () => waiter.resolve())[0];
30-
await denops.cmd(
31-
`call timer_start(0, { -> DenopsStdHelperEcho(l:message, l:name, l:id) })`,
32-
{
33-
message,
34-
name: denops.name,
35-
id,
36-
},
37-
);
30+
await denops.call("DenopsStdHelperEcho", message, denops.name, id);
3831
await waiter;
3932
}

denops_std/helper/echo.vim

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,23 @@ if exists('g:loaded_denops_std_helper_echo')
33
endif
44
let g:loaded_denops_std_helper_echo = 1
55

6+
" Redraw debounce interval defined in denops.vim
7+
" https://github.com/vim-denops/denops.vim/pull/90
8+
let s:redraw_interval = 10
9+
610
function! DenopsStdHelperEcho(message, name, id) abort
711
let info = {}
8-
let info.t = timer_start(0, { -> feedkeys('jk', 'n') })
912
let info.name = a:name
1013
let info.id = a:id
1114
let info.message = a:message
1215
let info.updatetime = &updatetime
13-
let &updatetime = 1
1416
let s:denops_std_helper_echo_info = info
17+
" Wait s:redraw_interval + alpha to avoid debounced
18+
" `redraw` call after RPC. See #77 for details.
19+
" https://github.com/vim-denops/deno-denops-std/issues/77
20+
let &updatetime = float2nr(ceil(s:redraw_interval * 1.5))
21+
" Reset Vim's internal timer for 'updatetime'
22+
call feedkeys('jk', 'n')
1523
augroup denops_std_helper_echo
1624
autocmd!
1725
autocmd CursorHold * ++once call s:denops_std_helper_echo_post()
@@ -22,7 +30,6 @@ function! s:denops_std_helper_echo_post() abort
2230
let info = s:denops_std_helper_echo_info
2331
silent! unlet! s:denops_std_helper_echo_info
2432
let &updatetime = info.updatetime
25-
call timer_stop(info.t)
2633
redraw | echo info.message
2734
call denops#request(info.name, info.id, [])
2835
endfunction

0 commit comments

Comments
 (0)