diff options
author | Adolfo OchagavĂa <[email protected]> | 2018-10-07 21:44:25 +0100 |
---|---|---|
committer | Adolfo OchagavĂa <[email protected]> | 2018-10-07 22:03:38 +0100 |
commit | 69de7e2fd71c3a808f0ac856d7b105eeb210f169 (patch) | |
tree | 62a163c43cb710cff18de6c7e8e47a81038ad1bb /editors/code/src/commands/syntaxTree.ts | |
parent | e4fdfd15012c983e4555996aa466b57d787e4385 (diff) |
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 000000000..d5daa9302 --- /dev/null +++ b/editors/code/src/commands/syntaxTree.ts | |||
@@ -0,0 +1,38 @@ | |||
1 | import * as vscode from 'vscode'; | ||
2 | import { TextDocumentIdentifier } from 'vscode-languageclient'; | ||
3 | |||
4 | import { Server } from '../server'; | ||
5 | |||
6 | export const syntaxTreeUri = vscode.Uri.parse('ra-lsp://syntaxtree'); | ||
7 | |||
8 | export class TextDocumentContentProvider implements vscode.TextDocumentContentProvider { | ||
9 | public eventEmitter = new vscode.EventEmitter<vscode.Uri>() | ||
10 | public syntaxTree: string = "Not available" | ||
11 | |||
12 | public provideTextDocumentContent(uri: vscode.Uri): vscode.ProviderResult<string> { | ||
13 | let editor = vscode.window.activeTextEditor; | ||
14 | if (editor == null) return "" | ||
15 | let request: SyntaxTreeParams = { | ||
16 | textDocument: { uri: editor.document.uri.toString() } | ||
17 | }; | ||
18 | return Server.client.sendRequest<SyntaxTreeResult>("m/syntaxTree", request); | ||
19 | } | ||
20 | |||
21 | get onDidChange(): vscode.Event<vscode.Uri> { | ||
22 | return this.eventEmitter.event | ||
23 | } | ||
24 | } | ||
25 | |||
26 | interface SyntaxTreeParams { | ||
27 | textDocument: TextDocumentIdentifier; | ||
28 | } | ||
29 | |||
30 | type SyntaxTreeResult = string; | ||
31 | |||
32 | // Opens the virtual file that will show the syntax tree | ||
33 | // | ||
34 | // The contents of the file come from the `TextDocumentContentProvider` | ||
35 | export async function handle() { | ||
36 | let document = await vscode.workspace.openTextDocument(syntaxTreeUri) | ||
37 | return vscode.window.showTextDocument(document, vscode.ViewColumn.Two, true) | ||
38 | } | ||