@@ -4,33 +4,51 @@ import {
4
4
} from "https://deno.land/x/ddc_vim@v0.4.2/types.ts#^" ;
5
5
6
6
import {
7
+ batch ,
7
8
Denops ,
9
+ vars ,
8
10
} from "https://deno.land/x/ddc_vim@v0.4.2/deps.ts#^" ;
9
11
10
12
import {
11
13
once
12
14
} from "https://deno.land/x/denops_std@v1.8.1/anonymous/mod.ts" ;
13
15
14
16
export class Source extends BaseSource {
17
+ async onInit ( args : {
18
+ denops : Denops ,
19
+ } ) : Promise < void > {
20
+ await batch ( args . denops , async ( denops ) => {
21
+ vars . g . set ( denops , "ddc#source#ddc_vim_lsp#_results" , [ ] ) ;
22
+ vars . g . set ( denops , "ddc#source#ddc_vim_lsp#_requested" , false ) ;
23
+ vars . g . set ( denops , "ddc#source#ddc_vim_lsp#_prev_input" , "" ) ;
24
+ } ) ;
25
+ }
26
+
15
27
async gatherCandidates ( args : {
16
28
denops : Denops ,
17
29
context : Context ,
18
30
completeStr : string ,
19
31
} ) : Promise < Candidate [ ] > {
32
+ const prevInput = await vars . g . get ( args . denops , "ddc#source#ddc_vim_lsp#_prev_input" ) ;
33
+ const requested = await vars . g . get ( args . denops , "ddc#source#ddc_vim_lsp#_requested" ) ;
34
+ if ( args . context . input == prevInput && requested ) {
35
+ return await vars . g . get ( args . denops , "ddc#source#ddc_vim_lsp#_results" ) ;
36
+ }
20
37
21
38
const lspservers = await args . denops . call ( "lsp#get_allowed_servers" ) ;
22
39
if ( lspservers . length === 0 ) {
23
40
return [ ] ;
24
41
}
25
42
26
- return new Promise ( ( resolve ) => {
43
+ await batch ( args . denops , async ( denops ) => {
44
+ vars . g . set ( denops , "ddc#source#ddc_vim_lsp#_results" , [ ] ) ;
45
+ vars . g . set ( denops , "ddc#source#ddc_vim_lsp#_requested" , false ) ;
46
+ vars . g . set ( denops , "ddc#source#ddc_vim_lsp#_prev_input" , args . context . input ) ;
47
+
27
48
// NOTE: choose first lsp server
28
- args . denops . call ( "ddc_vim_lsp#request" , lspservers [ 0 ] , args . denops . name , once ( args . denops , ( response ) => {
29
- resolve ( response ) ;
30
- } ) [ 0 ] )
31
- } )
32
- . then ( ( cs : Candidate [ ] ) => {
33
- return cs ;
49
+ denops . call ( "ddc_vim_lsp#request" , lspservers [ 0 ] ) ;
34
50
} ) ;
51
+
52
+ return [ ] ;
35
53
}
36
54
}
0 commit comments