diff options
| author | Aleksey Kladov <aleksey.kladov@gmail.com> | 2020-05-21 19:50:23 +0200 |
|---|---|---|
| committer | Aleksey Kladov <aleksey.kladov@gmail.com> | 2020-05-21 20:05:33 +0200 |
| commit | 5b5ebec440841ee98a0aa70b71a135d94f5ca077 (patch) | |
| tree | 5accb5fce10496334b49ed5a823d321572b375b4 /editors/code | |
| parent | ba6cf638fbf3d0a025e804f2d354d91abc8afd28 (diff) | |
| download | rust-5b5ebec440841ee98a0aa70b71a135d94f5ca077.tar.gz rust-5b5ebec440841ee98a0aa70b71a135d94f5ca077.zip | |
Formalize JoinLines protocol extension
Diffstat (limited to 'editors/code')
| -rw-r--r-- | editors/code/src/commands/join_lines.ts | 12 | ||||
| -rw-r--r-- | editors/code/src/rust-analyzer-api.ts | 4 |
2 files changed, 10 insertions, 6 deletions
diff --git a/editors/code/src/commands/join_lines.ts b/editors/code/src/commands/join_lines.ts index de0614653d6..0bf1ee6e671 100644 --- a/editors/code/src/commands/join_lines.ts +++ b/editors/code/src/commands/join_lines.ts @@ -1,7 +1,7 @@ import * as ra from '../rust-analyzer-api'; +import * as lc from 'vscode-languageclient'; import { Ctx, Cmd } from '../ctx'; -import { applySourceChange } from '../source_change'; export function joinLines(ctx: Ctx): Cmd { return async () => { @@ -9,10 +9,14 @@ export function joinLines(ctx: Ctx): Cmd { const client = ctx.client; if (!editor || !client) return; - const change = await client.sendRequest(ra.joinLines, { - range: client.code2ProtocolConverter.asRange(editor.selection), + const items: lc.TextEdit[] = await client.sendRequest(ra.joinLines, { + ranges: editor.selections.map((it) => client.code2ProtocolConverter.asRange(it)), textDocument: { uri: editor.document.uri.toString() }, }); - await applySourceChange(ctx, change); + editor.edit((builder) => { + client.protocol2CodeConverter.asTextEdits(items).forEach((edit) => { + builder.replace(edit.range, edit.newText); + }); + }); }; } diff --git a/editors/code/src/rust-analyzer-api.ts b/editors/code/src/rust-analyzer-api.ts index 3b83b10e38a..8ed56c173ee 100644 --- a/editors/code/src/rust-analyzer-api.ts +++ b/editors/code/src/rust-analyzer-api.ts @@ -64,9 +64,9 @@ export const parentModule = request<lc.TextDocumentPositionParams, Vec<lc.Locati export interface JoinLinesParams { textDocument: lc.TextDocumentIdentifier; - range: lc.Range; + ranges: lc.Range[]; } -export const joinLines = request<JoinLinesParams, SourceChange>("joinLines"); +export const joinLines = new lc.RequestType<JoinLinesParams, lc.TextEdit[], unknown>('experimental/joinLines'); export const onEnter = request<lc.TextDocumentPositionParams, Option<lc.WorkspaceEdit>>("onEnter"); |
