import { analyzerStatus } from './analyzer_status';
import { matchingBrace } from './matching_brace';
+import { joinLines } from './join_lines';
import * as applySourceChange from './apply_source_change';
import * as expandMacro from './expand_macro';
import * as inlayHints from './inlay_hints';
-import * as joinLines from './join_lines';
import * as onEnter from './on_enter';
import * as parentModule from './parent_module';
import * as runnables from './runnables';
-import * as vscode from 'vscode';
-
import { Range, TextDocumentIdentifier } from 'vscode-languageclient';
-import { Server } from '../server';
+import { Ctx, Cmd } from '../ctx';
import {
handle as applySourceChange,
SourceChange,
} from './apply_source_change';
+export function joinLines(ctx: Ctx): Cmd {
+ return async () => {
+ const editor = ctx.activeRustEditor;
+ if (!editor) {
+ return;
+ }
+ const request: JoinLinesParams = {
+ range: ctx.client.code2ProtocolConverter.asRange(editor.selection),
+ textDocument: { uri: editor.document.uri.toString() },
+ };
+ const change = await ctx.client.sendRequest<SourceChange>(
+ 'rust-analyzer/joinLines',
+ request,
+ );
+ await applySourceChange(change);
+ }
+}
+
interface JoinLinesParams {
textDocument: TextDocumentIdentifier;
range: Range;
}
-
-export async function handle() {
- const editor = vscode.window.activeTextEditor;
- if (editor == null || editor.document.languageId !== 'rust') {
- return;
- }
- const request: JoinLinesParams = {
- range: Server.client.code2ProtocolConverter.asRange(editor.selection),
- textDocument: { uri: editor.document.uri.toString() },
- };
- const change = await Server.client.sendRequest<SourceChange>(
- 'rust-analyzer/joinLines',
- request,
- );
- await applySourceChange(change);
-}
ctx.registerCommand('analyzerStatus', commands.analyzerStatus);
ctx.registerCommand('collectGarbage', commands.collectGarbage);
ctx.registerCommand('matchingBrace', commands.matchingBrace);
+ ctx.registerCommand('joinLines', commands.joinLines);
function disposeOnDeactivation(disposable: vscode.Disposable) {
context.subscriptions.push(disposable);
}
// Commands are requests from vscode to the language server
- registerCommand('rust-analyzer.joinLines', commands.joinLines.handle);
registerCommand('rust-analyzer.parentModule', commands.parentModule.handle);
registerCommand('rust-analyzer.run', commands.runnables.handle);
// Unlike the above this does not send requests to the language server