From 2572935f4cd1351218a926645b9733863b0b5bed Mon Sep 17 00:00:00 2001 From: matsui54 Date: Tue, 22 Feb 2022 13:36:55 +0900 Subject: [PATCH 1/2] Support incomplete items of LSP server --- autoload/ddc_vim_lsp.vim | 4 +++- denops/@ddc-sources/vim-lsp.ts | 16 ++++++++++------ 2 files changed, 13 insertions(+), 7 deletions(-) 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..84b71df 100644 --- a/denops/@ddc-sources/vim-lsp.ts +++ b/denops/@ddc-sources/vim-lsp.ts @@ -1,11 +1,12 @@ import { BaseSource, Candidate, -} from "https://deno.land/x/ddc_vim@v1.2.0/types.ts#^"; + DdcCompleteItems, +} from "https://deno.land/x/ddc_vim@v1.4.0/types.ts#^"; import { GatherCandidatesArguments, -} from "https://deno.land/x/ddc_vim@v1.2.0/base/source.ts#^"; +} from "https://deno.land/x/ddc_vim@v1.4.0/base/source.ts#^"; // deno-lint-ignore ban-types type Params = {}; @@ -14,7 +15,7 @@ export class Source extends BaseSource { private counter = 0; async gatherCandidates( args: GatherCandidatesArguments, - ): Promise { + ): 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: Candidate[]; + isIncomplete: boolean; + }>, args.denops.call("ddc_vim_lsp#request", lspservers[0], id), ]); - return items; + return { items: payload.items, isIncomplete: payload.isIncomplete }; } params(): Params { From 4d576bc4f9c2df8ca339777cef3d0aaa7a28d349 Mon Sep 17 00:00:00 2001 From: matsui54 Date: Tue, 22 Feb 2022 18:53:35 +0900 Subject: [PATCH 2/2] Catch up with the latest ddc api --- denops/@ddc-sources/vim-lsp.ts | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/denops/@ddc-sources/vim-lsp.ts b/denops/@ddc-sources/vim-lsp.ts index 84b71df..24393d1 100644 --- a/denops/@ddc-sources/vim-lsp.ts +++ b/denops/@ddc-sources/vim-lsp.ts @@ -1,21 +1,21 @@ import { BaseSource, - Candidate, - DdcCompleteItems, -} from "https://deno.land/x/ddc_vim@v1.4.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.4.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( @@ -30,7 +30,7 @@ export class Source extends BaseSource { const [payload] = await Promise.all([ args.onCallback(id) as Promise<{ - items: Candidate[]; + items: Item[]; isIncomplete: boolean; }>, args.denops.call("ddc_vim_lsp#request", lspservers[0], id),