From cf55806257776baf7db6b02d260bdaa9e851c7d4 Mon Sep 17 00:00:00 2001 From: David Lattimore Date: Wed, 29 Jul 2020 11:44:01 +1000 Subject: SSR: Restrict to current selection if any The selection is also used to avoid unnecessary work, but only to the file level. Further restricting unnecessary work is left for later. --- editors/code/src/commands.ts | 5 +++-- editors/code/src/lsp_ext.ts | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) (limited to 'editors/code') diff --git a/editors/code/src/commands.ts b/editors/code/src/commands.ts index c21e5597c..d0faf4745 100644 --- a/editors/code/src/commands.ts +++ b/editors/code/src/commands.ts @@ -190,6 +190,7 @@ export function ssr(ctx: Ctx): Cmd { if (!editor || !client) return; const position = editor.selection.active; + const selections = editor.selections; const textDocument = { uri: editor.document.uri.toString() }; const options: vscode.InputBoxOptions = { @@ -198,7 +199,7 @@ export function ssr(ctx: Ctx): Cmd { validateInput: async (x: string) => { try { await client.sendRequest(ra.ssr, { - query: x, parseOnly: true, textDocument, position, + query: x, parseOnly: true, textDocument, position, selections, }); } catch (e) { return e.toString(); @@ -215,7 +216,7 @@ export function ssr(ctx: Ctx): Cmd { cancellable: false, }, async (_progress, _token) => { const edit = await client.sendRequest(ra.ssr, { - query: request, parseOnly: false, textDocument, position + query: request, parseOnly: false, textDocument, position, selections, }); await vscode.workspace.applyEdit(client.protocol2CodeConverter.asWorkspaceEdit(edit)); diff --git a/editors/code/src/lsp_ext.ts b/editors/code/src/lsp_ext.ts index 149f9a0d6..494d51c83 100644 --- a/editors/code/src/lsp_ext.ts +++ b/editors/code/src/lsp_ext.ts @@ -95,6 +95,7 @@ export interface SsrParams { parseOnly: boolean; textDocument: lc.TextDocumentIdentifier; position: lc.Position; + selections: lc.Range[]; } export const ssr = new lc.RequestType('experimental/ssr'); -- cgit v1.2.3