diff --git a/autoload/ddc_vim_lsp.vim b/autoload/ddc_vim_lsp.vim index b8fe422..7b91cfc 100644 --- a/autoload/ddc_vim_lsp.vim +++ b/autoload/ddc_vim_lsp.vim @@ -9,8 +9,10 @@ function! ddc_vim_lsp#_callback(server, position, id, data) abort \ 'response': a:data['response'], \ } let lspitems = lsp#omni#get_vim_completion_items(l:options)['items'] + let isIncomplete = has_key(a:data['response']['result'], 'isIncomplete') ? + \ a:data['response']['result']['isIncomplete'] : v:false - call ddc#callback(a:id, lspitems) + call ddc#callback(a:id, {'items': lspitems, 'isIncomplete': isIncomplete}) endfunction function! ddc_vim_lsp#request(server_name, id) abort diff --git a/denops/@ddc-sources/vim-lsp.ts b/denops/@ddc-sources/vim-lsp.ts index f67d73a..24393d1 100644 --- a/denops/@ddc-sources/vim-lsp.ts +++ b/denops/@ddc-sources/vim-lsp.ts @@ -1,20 +1,21 @@ import { BaseSource, - Candidate, -} from "https://deno.land/x/ddc_vim@v1.2.0/types.ts#^"; + Item, + DdcGatherItems, +} from "https://deno.land/x/ddc_vim@v2.0.0/types.ts#^"; import { - GatherCandidatesArguments, -} from "https://deno.land/x/ddc_vim@v1.2.0/base/source.ts#^"; + GatherArguments, +} from "https://deno.land/x/ddc_vim@v2.0.0/base/source.ts#^"; // deno-lint-ignore ban-types type Params = {}; export class Source extends BaseSource { private counter = 0; - async gatherCandidates( - args: GatherCandidatesArguments, - ): Promise { + async gather( + args: GatherArguments, + ): Promise { this.counter = (this.counter + 1) % 100; const lspservers: string[] = await args.denops.call( @@ -27,11 +28,14 @@ export class Source extends BaseSource { const id = `source/${this.name}/${this.counter}`; - const [items] = await Promise.all([ - args.onCallback(id) as Promise, + const [payload] = await Promise.all([ + args.onCallback(id) as Promise<{ + items: Item[]; + isIncomplete: boolean; + }>, args.denops.call("ddc_vim_lsp#request", lspservers[0], id), ]); - return items; + return { items: payload.items, isIncomplete: payload.isIncomplete }; } params(): Params {