diff options
| author | Adolfo OchagavĂa <aochagavia92@gmail.com> | 2018-10-07 22:44:25 +0200 |
|---|---|---|
| committer | Adolfo OchagavĂa <aochagavia92@gmail.com> | 2018-10-07 23:03:38 +0200 |
| commit | 69de7e2fd71c3a808f0ac856d7b105eeb210f169 (patch) | |
| tree | 62a163c43cb710cff18de6c7e8e47a81038ad1bb /editors/code/src/commands/syntaxTree.ts | |
| parent | e4fdfd15012c983e4555996aa466b57d787e4385 (diff) | |
| download | rust-69de7e2fd71c3a808f0ac856d7b105eeb210f169.tar.gz rust-69de7e2fd71c3a808f0ac856d7b105eeb210f169.zip | |
Refactor vscode extension
Diffstat (limited to 'editors/code/src/commands/syntaxTree.ts')
| -rw-r--r-- | editors/code/src/commands/syntaxTree.ts | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/editors/code/src/commands/syntaxTree.ts b/editors/code/src/commands/syntaxTree.ts new file mode 100644 index 00000000000..d5daa9302c6 --- /dev/null +++ b/editors/code/src/commands/syntaxTree.ts @@ -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) +} |
