]> git.lizzy.rs Git - rust.git/commitdiff
Move matching brace to new Ctx
authorAleksey Kladov <aleksey.kladov@gmail.com>
Mon, 30 Dec 2019 14:20:13 +0000 (15:20 +0100)
committerAleksey Kladov <aleksey.kladov@gmail.com>
Mon, 30 Dec 2019 14:23:55 +0000 (15:23 +0100)
editors/code/src/commands/index.ts
editors/code/src/commands/matching_brace.ts
editors/code/src/ctx.ts
editors/code/src/main.ts

index ed56f5a4e380e5d60c738db414b76ce15360f7fa..9d9b9c5754994360a550f99483a1d908b96d3d26 100644 (file)
@@ -1,11 +1,11 @@
 import { Ctx, Cmd } from '../ctx'
 
 import { analyzerStatus } from './analyzer_status';
+import { matchingBrace } from './matching_brace';
 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 matchingBrace from './matching_brace';
 import * as onEnter from './on_enter';
 import * as parentModule from './parent_module';
 import * as runnables from './runnables';
index 364208cc75801d361cecb10de6f4be8cd816a362..665b0c33cc412fd62784082fa2a7d1fc2c37817f 100644 (file)
@@ -1,34 +1,33 @@
 import * as vscode from 'vscode';
-
 import { Position, TextDocumentIdentifier } from 'vscode-languageclient';
-import { Server } from '../server';
+import { Ctx, Cmd } from '../ctx';
+
+export function matchingBrace(ctx: Ctx): Cmd {
+    return async () => {
+        const editor = ctx.activeRustEditor;
+        if (!editor) {
+            return;
+        }
+        const request: FindMatchingBraceParams = {
+            textDocument: { uri: editor.document.uri.toString() },
+            offsets: editor.selections.map(s => ctx.client.code2ProtocolConverter.asPosition(s.active)),
+        };
+        const response = await ctx.client.sendRequest<Position[]>(
+            'rust-analyzer/findMatchingBrace',
+            request,
+        );
+        editor.selections = editor.selections.map((sel, idx) => {
+            const active = ctx.client.protocol2CodeConverter.asPosition(
+                response[idx],
+            );
+            const anchor = sel.isEmpty ? active : sel.anchor;
+            return new vscode.Selection(anchor, active);
+        });
+        editor.revealRange(editor.selection);
+    }
+}
 
 interface FindMatchingBraceParams {
     textDocument: TextDocumentIdentifier;
     offsets: Position[];
 }
-
-export async function handle() {
-    const editor = vscode.window.activeTextEditor;
-    if (editor == null || editor.document.languageId !== 'rust') {
-        return;
-    }
-    const request: FindMatchingBraceParams = {
-        textDocument: { uri: editor.document.uri.toString() },
-        offsets: editor.selections.map(s => {
-            return Server.client.code2ProtocolConverter.asPosition(s.active);
-        }),
-    };
-    const response = await Server.client.sendRequest<Position[]>(
-        'rust-analyzer/findMatchingBrace',
-        request,
-    );
-    editor.selections = editor.selections.map((sel, idx) => {
-        const active = Server.client.protocol2CodeConverter.asPosition(
-            response[idx],
-        );
-        const anchor = sel.isEmpty ? active : sel.anchor;
-        return new vscode.Selection(anchor, active);
-    });
-    editor.revealRange(editor.selection);
-}
index 87f1574d38058a4376d2541d23eb4bc45984dba4..712337fe71c582c92cf6d48220e6b8e44f56c530 100644 (file)
@@ -13,6 +13,13 @@ export class Ctx {
         return Server.client;
     }
 
+    get activeRustEditor(): vscode.TextEditor | undefined {
+        const editor = vscode.window.activeTextEditor;
+        return editor && editor.document.languageId === 'rust'
+            ? editor
+            : undefined;
+    }
+
     registerCommand(name: string, factory: (ctx: Ctx) => Cmd) {
         const fullName = `rust-analyzer.${name}`;
         const cmd = factory(this);
index f96fb1962572719bf23c16810c6cb4ef3fee2ca4..a4149a0599900debe59db2b20fe76300abf1aed3 100644 (file)
@@ -17,6 +17,7 @@ export async function activate(context: vscode.ExtensionContext) {
     ctx = new Ctx(context);
     ctx.registerCommand('analyzerStatus', commands.analyzerStatus);
     ctx.registerCommand('collectGarbage', commands.collectGarbage);
+    ctx.registerCommand('matchingBrace', commands.matchingBrace);
 
     function disposeOnDeactivation(disposable: vscode.Disposable) {
         context.subscriptions.push(disposable);
@@ -55,10 +56,6 @@ export async function activate(context: vscode.ExtensionContext) {
     }
 
     // Commands are requests from vscode to the language server
-    registerCommand(
-        'rust-analyzer.matchingBrace',
-        commands.matchingBrace.handle,
-    );
     registerCommand('rust-analyzer.joinLines', commands.joinLines.handle);
     registerCommand('rust-analyzer.parentModule', commands.parentModule.handle);
     registerCommand('rust-analyzer.run', commands.runnables.handle);