Skip to content

Commit 2572935

Browse files
committed
Support incomplete items of LSP server
1 parent 75671e8 commit 2572935

File tree

2 files changed

+13
-7
lines changed

2 files changed

+13
-7
lines changed

autoload/ddc_vim_lsp.vim

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,10 @@ function! ddc_vim_lsp#_callback(server, position, id, data) abort
99
\ 'response': a:data['response'],
1010
\ }
1111
let lspitems = lsp#omni#get_vim_completion_items(l:options)['items']
12+
let isIncomplete = has_key(a:data['response']['result'], 'isIncomplete') ?
13+
\ a:data['response']['result']['isIncomplete'] : v:false
1214

13-
call ddc#callback(a:id, lspitems)
15+
call ddc#callback(a:id, {'items': lspitems, 'isIncomplete': isIncomplete})
1416
endfunction
1517

1618
function! ddc_vim_lsp#request(server_name, id) abort

denops/@ddc-sources/vim-lsp.ts

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
import {
22
BaseSource,
33
Candidate,
4-
} from "https://deno.land/x/ddc_vim@v1.2.0/types.ts#^";
4+
DdcCompleteItems,
5+
} from "https://deno.land/x/ddc_vim@v1.4.0/types.ts#^";
56

67
import {
78
GatherCandidatesArguments,
8-
} from "https://deno.land/x/ddc_vim@v1.2.0/base/source.ts#^";
9+
} from "https://deno.land/x/ddc_vim@v1.4.0/base/source.ts#^";
910

1011
// deno-lint-ignore ban-types
1112
type Params = {};
@@ -14,7 +15,7 @@ export class Source extends BaseSource<Params> {
1415
private counter = 0;
1516
async gatherCandidates(
1617
args: GatherCandidatesArguments<Params>,
17-
): Promise<Candidate[]> {
18+
): Promise<DdcCompleteItems> {
1819
this.counter = (this.counter + 1) % 100;
1920

2021
const lspservers: string[] = await args.denops.call(
@@ -27,11 +28,14 @@ export class Source extends BaseSource<Params> {
2728

2829
const id = `source/${this.name}/${this.counter}`;
2930

30-
const [items] = await Promise.all([
31-
args.onCallback(id) as Promise<Candidate[]>,
31+
const [payload] = await Promise.all([
32+
args.onCallback(id) as Promise<{
33+
items: Candidate[];
34+
isIncomplete: boolean;
35+
}>,
3236
args.denops.call("ddc_vim_lsp#request", lspservers[0], id),
3337
]);
34-
return items;
38+
return { items: payload.items, isIncomplete: payload.isIncomplete };
3539
}
3640

3741
params(): Params {

0 commit comments

Comments
 (0)