diff --git a/editors/code/src/commands/analyzer_status.ts b/editors/code/src/commands/analyzer_status.ts index 2777ced247..5840e8fc08 100644 --- a/editors/code/src/commands/analyzer_status.ts +++ b/editors/code/src/commands/analyzer_status.ts @@ -1,14 +1,48 @@ import * as vscode from 'vscode'; import { Server } from '../server'; +// Shows status of rust-analyzer (for debugging) -const statusUri = vscode.Uri.parse('rust-analyzer-status://status'); +export function makeCommand(context: vscode.ExtensionContext) { + let poller: NodeJS.Timer | null = null; + const tdcp = new TextDocumentContentProvider(); -export class TextDocumentContentProvider + context.subscriptions.push( + vscode.workspace.registerTextDocumentContentProvider( + 'rust-analyzer-status', + tdcp, + ), + ); + + context.subscriptions.push({ + dispose() { + if (poller != null) { + clearInterval(poller); + } + }, + }); + + return async function handle() { + if (poller == null) { + poller = setInterval( + () => tdcp.eventEmitter.fire(tdcp.uri), + 1000, + ); + } + const document = await vscode.workspace.openTextDocument(tdcp.uri); + return vscode.window.showTextDocument( + document, + vscode.ViewColumn.Two, + true, + ); + }; +} + +class TextDocumentContentProvider implements vscode.TextDocumentContentProvider { - public eventEmitter = new vscode.EventEmitter(); - public syntaxTree: string = 'Not available'; + uri = vscode.Uri.parse('rust-analyzer-status://status'); + eventEmitter = new vscode.EventEmitter(); - public provideTextDocumentContent( + provideTextDocumentContent( _uri: vscode.Uri, ): vscode.ProviderResult { const editor = vscode.window.activeTextEditor; @@ -25,40 +59,3 @@ export class TextDocumentContentProvider return this.eventEmitter.event; } } - -let poller: NodeJS.Timer | null = null; - -// Shows status of rust-analyzer (for debugging) - -export function makeCommand(context: vscode.ExtensionContext) { - const textDocumentContentProvider = new TextDocumentContentProvider(); - context.subscriptions.push( - vscode.workspace.registerTextDocumentContentProvider( - 'rust-analyzer-status', - textDocumentContentProvider, - ), - ); - - context.subscriptions.push({ - dispose() { - if (poller != null) { - clearInterval(poller); - } - }, - }); - - return async function handle() { - if (poller == null) { - poller = setInterval( - () => textDocumentContentProvider.eventEmitter.fire(statusUri), - 1000, - ); - } - const document = await vscode.workspace.openTextDocument(statusUri); - return vscode.window.showTextDocument( - document, - vscode.ViewColumn.Two, - true, - ); - }; -}