import { Config } from './config';
import { createClient } from './client';
-import { isRustDocument } from './util';
+import { isRustEditor, RustEditor } from './util';
export class Ctx {
private constructor(
return res;
}
- get activeRustEditor(): vscode.TextEditor | undefined {
+ get activeRustEditor(): RustEditor | undefined {
const editor = vscode.window.activeTextEditor;
- return editor && isRustDocument(editor.document)
+ return editor && isRustEditor(editor)
? editor
: undefined;
}
- get visibleRustEditors(): vscode.TextEditor[] {
- return vscode.window.visibleTextEditors.filter(
- editor => isRustDocument(editor.document),
- );
+ get visibleRustEditors(): RustEditor[] {
+ return vscode.window.visibleTextEditors.filter(isRustEditor);
}
registerCommand(name: string, factory: (ctx: Ctx) => Cmd) {
import * as lc from "vscode-languageclient";
import * as vscode from "vscode";
import { strict as nativeAssert } from "assert";
-import { TextDocument } from "vscode";
export function assert(condition: boolean, explanation: string): asserts condition {
try {
return new Promise(resolve => setTimeout(resolve, ms));
}
-export function isRustDocument(document: TextDocument) {
+export type RustDocument = vscode.TextDocument & { languageId: "rust" };
+export type RustEditor = vscode.TextEditor & { document: RustDocument; id: string };
+
+export function isRustDocument(document: vscode.TextDocument): document is RustDocument {
return document.languageId === 'rust'
// SCM diff views have the same URI as the on-disk document but not the same content
&& document.uri.scheme !== 'git'
&& document.uri.scheme !== 'svn';
-}
\ No newline at end of file
+}
+
+export function isRustEditor(editor: vscode.TextEditor): editor is RustEditor {
+ return isRustDocument(editor.document);
+}