import * as vscode from 'vscode';
-import * as lc from 'vscode-languageclient';
+import * as ra from '../rust-analyzer-api';
-import { applySourceChange, SourceChange } from '../source_change';
import { Cmd, Ctx } from '../ctx';
+import { applySnippetWorkspaceEdit } from '.';
async function handleKeypress(ctx: Ctx) {
const editor = ctx.activeRustEditor;
if (!editor || !client) return false;
- const request: lc.TextDocumentPositionParams = {
+ const change = await client.sendRequest(ra.onEnter, {
textDocument: { uri: editor.document.uri.toString() },
position: client.code2ProtocolConverter.asPosition(
editor.selection.active,
),
- };
- const change = await client.sendRequest<undefined | SourceChange>(
- 'rust-analyzer/onEnter',
- request,
- );
+ }).catch(_error => {
+ // client.logFailedRequest(OnEnterRequest.type, error);
+ return null;
+ });
if (!change) return false;
- await applySourceChange(ctx, change);
+ const workspaceEdit = client.protocol2CodeConverter.asWorkspaceEdit(change);
+ await applySnippetWorkspaceEdit(workspaceEdit);
return true;
}