From 62ed01a1078f499c93c70025342dd869bd277d39 Mon Sep 17 00:00:00 2001 From: veetaha Date: Thu, 2 Apr 2020 05:38:52 +0300 Subject: vscode: add highlighting of syntax tree --- editors/code/package.json | 15 +++++++++++++++ editors/code/ra_syntax_tree.tmGrammar.json | 31 ++++++++++++++++++++++++++++++ editors/code/src/commands/syntax_tree.ts | 5 ++++- 3 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 editors/code/ra_syntax_tree.tmGrammar.json (limited to 'editors/code') diff --git a/editors/code/package.json b/editors/code/package.json index 146b696e9..87999fe22 100644 --- a/editors/code/package.json +++ b/editors/code/package.json @@ -411,6 +411,21 @@ ] } ], + "languages": [ + { + "id": "ra_syntax_tree", + "extensions": [ + ".rast" + ] + } + ], + "grammars": [ + { + "language": "ra_syntax_tree", + "scopeName": "source.ra_syntax_tree", + "path": "ra_syntax_tree.tmGrammar.json" + } + ], "problemMatchers": [ { "name": "rustc", diff --git a/editors/code/ra_syntax_tree.tmGrammar.json b/editors/code/ra_syntax_tree.tmGrammar.json new file mode 100644 index 000000000..0d72a3e36 --- /dev/null +++ b/editors/code/ra_syntax_tree.tmGrammar.json @@ -0,0 +1,31 @@ +{ + "$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json", + + "scopeName": "source.ra_syntax_tree", + "patterns": [ + { "include": "#node_type" }, + { "include": "#node_range_index" }, + { "include": "#token_text" } + ], + "repository": { + "node_type": { + "match": "^\\s*([A-Z_]+?)@", + "captures": { + "1": { + "name": "entity.name.class" + } + } + }, + "node_range_index": { + "match": "\\d+", + "name": "constant.numeric" + }, + "token_text": { + "match": "\".+\"", + "name": "string" + } + }, + "fileTypes": [ + "rast" + ] +} diff --git a/editors/code/src/commands/syntax_tree.ts b/editors/code/src/commands/syntax_tree.ts index 996c7a716..01ab4de74 100644 --- a/editors/code/src/commands/syntax_tree.ts +++ b/editors/code/src/commands/syntax_tree.ts @@ -15,6 +15,9 @@ export function syntaxTree(ctx: Ctx): Cmd { void new AstInspector(ctx); ctx.pushCleanup(vscode.workspace.registerTextDocumentContentProvider(AST_FILE_SCHEME, tdcp)); + ctx.pushCleanup(vscode.languages.setLanguageConfiguration("ra_syntax_tree", { + brackets: [["[", ")"]], + })); return async () => { const editor = vscode.window.activeTextEditor; @@ -36,7 +39,7 @@ export function syntaxTree(ctx: Ctx): Cmd { } class TextDocumentContentProvider implements vscode.TextDocumentContentProvider { - readonly uri = vscode.Uri.parse('rust-analyzer://syntaxtree'); + readonly uri = vscode.Uri.parse('rust-analyzer://syntaxtree/tree.rast'); readonly eventEmitter = new vscode.EventEmitter(); -- cgit v1.2.3