diff options
author | David Lattimore <[email protected]> | 2020-07-29 02:44:01 +0100 |
---|---|---|
committer | David Lattimore <[email protected]> | 2020-07-29 06:06:58 +0100 |
commit | cf55806257776baf7db6b02d260bdaa9e851c7d4 (patch) | |
tree | 6827c094a4a27631ee9b1b97d98a8ac9c0a56aac /editors | |
parent | 5a8124273dd663f7f1ed43b53defc4a2c52dbc12 (diff) |
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.
Diffstat (limited to 'editors')
-rw-r--r-- | editors/code/src/commands.ts | 5 | ||||
-rw-r--r-- | editors/code/src/lsp_ext.ts | 1 |
2 files changed, 4 insertions, 2 deletions
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 { | |||
190 | if (!editor || !client) return; | 190 | if (!editor || !client) return; |
191 | 191 | ||
192 | const position = editor.selection.active; | 192 | const position = editor.selection.active; |
193 | const selections = editor.selections; | ||
193 | const textDocument = { uri: editor.document.uri.toString() }; | 194 | const textDocument = { uri: editor.document.uri.toString() }; |
194 | 195 | ||
195 | const options: vscode.InputBoxOptions = { | 196 | const options: vscode.InputBoxOptions = { |
@@ -198,7 +199,7 @@ export function ssr(ctx: Ctx): Cmd { | |||
198 | validateInput: async (x: string) => { | 199 | validateInput: async (x: string) => { |
199 | try { | 200 | try { |
200 | await client.sendRequest(ra.ssr, { | 201 | await client.sendRequest(ra.ssr, { |
201 | query: x, parseOnly: true, textDocument, position, | 202 | query: x, parseOnly: true, textDocument, position, selections, |
202 | }); | 203 | }); |
203 | } catch (e) { | 204 | } catch (e) { |
204 | return e.toString(); | 205 | return e.toString(); |
@@ -215,7 +216,7 @@ export function ssr(ctx: Ctx): Cmd { | |||
215 | cancellable: false, | 216 | cancellable: false, |
216 | }, async (_progress, _token) => { | 217 | }, async (_progress, _token) => { |
217 | const edit = await client.sendRequest(ra.ssr, { | 218 | const edit = await client.sendRequest(ra.ssr, { |
218 | query: request, parseOnly: false, textDocument, position | 219 | query: request, parseOnly: false, textDocument, position, selections, |
219 | }); | 220 | }); |
220 | 221 | ||
221 | await vscode.workspace.applyEdit(client.protocol2CodeConverter.asWorkspaceEdit(edit)); | 222 | 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 { | |||
95 | parseOnly: boolean; | 95 | parseOnly: boolean; |
96 | textDocument: lc.TextDocumentIdentifier; | 96 | textDocument: lc.TextDocumentIdentifier; |
97 | position: lc.Position; | 97 | position: lc.Position; |
98 | selections: lc.Range[]; | ||
98 | } | 99 | } |
99 | export const ssr = new lc.RequestType<SsrParams, lc.WorkspaceEdit, void>('experimental/ssr'); | 100 | export const ssr = new lc.RequestType<SsrParams, lc.WorkspaceEdit, void>('experimental/ssr'); |
100 | 101 | ||