Skip to content

Commit e076139

Browse files
committed
💪 Use load() to extract Vim script
1 parent f956550 commit e076139

File tree

2 files changed

+32
-43
lines changed

2 files changed

+32
-43
lines changed

denops_std/helper/echo.ts

Lines changed: 3 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
import { deferred, Denops } from "../deps.ts";
22
import * as anonymous from "../anonymous/mod.ts";
3-
import { execute } from "./execute.ts";
4-
5-
let defined = false;
3+
import { load } from "./load.ts";
64

75
/**
86
* Echo message as like `echo` on Vim script.
@@ -26,11 +24,11 @@ export function echo(denops: Denops, message: string): Promise<void> {
2624
}
2725

2826
async function echoVim(denops: Denops, message: string): Promise<void> {
27+
await load(denops, new URL("./echo.vim", import.meta.url));
2928
const waiter = deferred<void>();
3029
const id = anonymous.once(denops, () => waiter.resolve())[0];
31-
await define(denops);
3230
await denops.cmd(
33-
`call timer_start(0, { -> s:denops_std_helper_echo(l:message, l:name, l:id) })`,
31+
`call timer_start(0, { -> DenopsStdHelperEcho(l:message, l:name, l:id) })`,
3432
{
3533
message,
3634
name: denops.name,
@@ -39,41 +37,3 @@ async function echoVim(denops: Denops, message: string): Promise<void> {
3937
);
4038
await waiter;
4139
}
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-
}

denops_std/helper/echo.vim

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
if exists('g:loaded_denops_std_helper_echo')
2+
finish
3+
endif
4+
let g:loaded_denops_std_helper_echo = 1
5+
6+
function! DenopsStdHelperEcho(message, name, id) abort
7+
let info = {}
8+
let info.t = timer_start(0, { -> feedkeys('jk', 'n') })
9+
let info.name = a:name
10+
let info.id = a:id
11+
let info.message = a:message
12+
let info.updatetime = &updatetime
13+
let &updatetime = 1
14+
let s:denops_std_helper_echo_info = info
15+
augroup denops_std_helper_echo
16+
autocmd!
17+
autocmd CursorHold * ++once call s:denops_std_helper_echo_post()
18+
augroup END
19+
endfunction
20+
21+
function! s:denops_std_helper_echo_post() abort
22+
let info = s:denops_std_helper_echo_info
23+
silent! unlet! s:denops_std_helper_echo_info
24+
let &updatetime = info.updatetime
25+
call timer_stop(info.t)
26+
redraw | echo info.message
27+
call denops#request(info.name, info.id, [])
28+
endfunction
29+

0 commit comments

Comments
 (0)