1
1
import { deferred , Denops } from "../deps.ts" ;
2
2
import * as anonymous from "../anonymous/mod.ts" ;
3
- import { execute } from "./execute.ts" ;
4
-
5
- let defined = false ;
3
+ import { load } from "./load.ts" ;
6
4
7
5
/**
8
6
* Echo message as like `echo` on Vim script.
@@ -26,54 +24,9 @@ export function echo(denops: Denops, message: string): Promise<void> {
26
24
}
27
25
28
26
async function echoVim ( denops : Denops , message : string ) : Promise < void > {
27
+ await load ( denops , new URL ( "./echo.vim" , import . meta. url ) ) ;
29
28
const waiter = deferred < void > ( ) ;
30
29
const id = anonymous . once ( denops , ( ) => waiter . resolve ( ) ) [ 0 ] ;
31
- await define ( denops ) ;
32
- await denops . cmd (
33
- `call timer_start(0, { -> s:denops_std_helper_echo(l:message, l:name, l:id) })` ,
34
- {
35
- message,
36
- name : denops . name ,
37
- id,
38
- } ,
39
- ) ;
30
+ await denops . call ( "DenopsStdHelperEcho" , message , denops . name , id ) ;
40
31
await waiter ;
41
32
}
42
-
43
- async function define ( denops : Denops ) : Promise < void > {
44
- if ( defined ) {
45
- return ;
46
- }
47
- await execute (
48
- denops ,
49
- `
50
- if exists('s:loaded_denops_std_helper_echo')
51
- return
52
- endif
53
- let s:loaded_denops_std_helper_echo = 1
54
- function! s:denops_std_helper_echo(message, name, id) abort
55
- let info = {}
56
- let info.t = timer_start(0, { -> feedkeys('jk', 'n') })
57
- let info.name = a:name
58
- let info.id = a:id
59
- let info.message = a:message
60
- let info.updatetime = &updatetime
61
- let &updatetime = 1
62
- let s:denops_std_helper_echo_info = info
63
- augroup denops_std_helper_echo
64
- autocmd!
65
- autocmd CursorHold * ++once call s:denops_std_helper_echo_post()
66
- augroup END
67
- endfunction
68
- function! s:denops_std_helper_echo_post() abort
69
- let info = s:denops_std_helper_echo_info
70
- silent! unlet! s:denops_std_helper_echo_info
71
- let &updatetime = info.updatetime
72
- call timer_stop(info.t)
73
- redraw | echo info.message
74
- call denops#request(info.name, info.id, [])
75
- endfunction
76
- ` ,
77
- ) ;
78
- defined = true ;
79
- }
0 commit comments