mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-09-30 22:01:37 +00:00
Refactor vscode extension
This commit is contained in:
parent
e4fdfd1501
commit
69de7e2fd7
14 changed files with 518 additions and 415 deletions
38
editors/code/src/commands/syntaxTree.ts
Normal file
38
editors/code/src/commands/syntaxTree.ts
Normal file
|
@ -0,0 +1,38 @@
|
|||
import * as vscode from 'vscode';
|
||||
import { TextDocumentIdentifier } from 'vscode-languageclient';
|
||||
|
||||
import { Server } from '../server';
|
||||
|
||||
export const syntaxTreeUri = vscode.Uri.parse('ra-lsp://syntaxtree');
|
||||
|
||||
export class TextDocumentContentProvider implements vscode.TextDocumentContentProvider {
|
||||
public eventEmitter = new vscode.EventEmitter<vscode.Uri>()
|
||||
public syntaxTree: string = "Not available"
|
||||
|
||||
public provideTextDocumentContent(uri: vscode.Uri): vscode.ProviderResult<string> {
|
||||
let editor = vscode.window.activeTextEditor;
|
||||
if (editor == null) return ""
|
||||
let request: SyntaxTreeParams = {
|
||||
textDocument: { uri: editor.document.uri.toString() }
|
||||
};
|
||||
return Server.client.sendRequest<SyntaxTreeResult>("m/syntaxTree", request);
|
||||
}
|
||||
|
||||
get onDidChange(): vscode.Event<vscode.Uri> {
|
||||
return this.eventEmitter.event
|
||||
}
|
||||
}
|
||||
|
||||
interface SyntaxTreeParams {
|
||||
textDocument: TextDocumentIdentifier;
|
||||
}
|
||||
|
||||
type SyntaxTreeResult = string;
|
||||
|
||||
// Opens the virtual file that will show the syntax tree
|
||||
//
|
||||
// The contents of the file come from the `TextDocumentContentProvider`
|
||||
export async function handle() {
|
||||
let document = await vscode.workspace.openTextDocument(syntaxTreeUri)
|
||||
return vscode.window.showTextDocument(document, vscode.ViewColumn.Two, true)
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue