From: Brendan Hansen Date: Wed, 24 Nov 2021 20:58:53 +0000 (-0600) Subject: too much work on getting vscode to know symbols X-Git-Url: https://git.brendanfh.com/?a=commitdiff_plain;h=cd6333c1049a76459a9e3ebd2fdbeb86e164b219;p=onyx.git too much work on getting vscode to know symbols --- diff --git a/.gitignore b/.gitignore index cacc5a82..177911a4 100644 --- a/.gitignore +++ b/.gitignore @@ -13,4 +13,5 @@ session.vim tmp/ .vimspector.json .vscode/ -dist/ \ No newline at end of file +dist/ +**/node_modules/ \ No newline at end of file diff --git a/misc/vscode/extension.ts b/misc/vscode/extension.ts new file mode 100644 index 00000000..f9d3f1f2 --- /dev/null +++ b/misc/vscode/extension.ts @@ -0,0 +1,21 @@ +import * as vscode from "vscode"; +import * as vsctmls from 'vscode-textmate-languageservice'; + +export async function activate(context: vscode.ExtensionContext) { + let console = vscode.window.createOutputChannel("Onyx Extension"); + console.appendLine("Starting Onyx Extension"); + + const selector: vscode.DocumentSelector = { language: 'onyx', scheme: "file" }; + const engine = new vsctmls.textmateEngine.TextmateEngine('onyx', 'source.onyx'); + const documentSymbolProvider = new vsctmls.documentSymbols.DocumentSymbolProvider(engine); + const workspaceSymbolProvider = new vsctmls.workspaceSymbols.WorkspaceSymbolProvider('onyx', documentSymbolProvider); + // const foldingProvider = new vsctmls.folding.FoldingProvider(engine); + // const peekFileDefinitionProvider = new vsctmls.peekDefinitions.PeekDefinitionProvider(documentSymbolProvider); + + context.subscriptions.push(vscode.languages.registerDocumentSymbolProvider(selector, documentSymbolProvider)); + context.subscriptions.push(vscode.languages.registerWorkspaceSymbolProvider(workspaceSymbolProvider)); + // context.subscriptions.push(vscode.languages.registerFoldingRangeProvider(selector, foldingProvider)); + // context.subscriptions.push(vscode.languages.registerDefinitionProvider(['onyx'], peekFileDefinitionProvider)); + + console.appendLine("Onyx Extension loaded."); +} \ No newline at end of file diff --git a/misc/vscode/onyx-0.0.1.vsix b/misc/vscode/onyx-0.0.1.vsix index 1e76b0e1..614142c1 100644 Binary files a/misc/vscode/onyx-0.0.1.vsix and b/misc/vscode/onyx-0.0.1.vsix differ diff --git a/misc/vscode/out/extension.js b/misc/vscode/out/extension.js new file mode 100644 index 00000000..f35a02ad --- /dev/null +++ b/misc/vscode/out/extension.js @@ -0,0 +1,32 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.activate = void 0; +const vscode = require("vscode"); +const vsctmls = require("vscode-textmate-languageservice"); +function activate(context) { + return __awaiter(this, void 0, void 0, function* () { + let console = vscode.window.createOutputChannel("Onyx Extension"); + console.appendLine("Starting Onyx Extension"); + const selector = { language: 'onyx', scheme: "file" }; + const engine = new vsctmls.textmateEngine.TextmateEngine('onyx', 'source.onyx'); + const documentSymbolProvider = new vsctmls.documentSymbols.DocumentSymbolProvider(engine); + const workspaceSymbolProvider = new vsctmls.workspaceSymbols.WorkspaceSymbolProvider('onyx', documentSymbolProvider); + // const foldingProvider = new vsctmls.folding.FoldingProvider(engine); + // const peekFileDefinitionProvider = new vsctmls.peekDefinitions.PeekDefinitionProvider(documentSymbolProvider); + context.subscriptions.push(vscode.languages.registerDocumentSymbolProvider(selector, documentSymbolProvider)); + context.subscriptions.push(vscode.languages.registerWorkspaceSymbolProvider(workspaceSymbolProvider)); + // context.subscriptions.push(vscode.languages.registerFoldingRangeProvider(selector, foldingProvider)); + // context.subscriptions.push(vscode.languages.registerDefinitionProvider(['onyx'], peekFileDefinitionProvider)); + console.appendLine("Onyx Extension loaded."); + }); +} +exports.activate = activate; diff --git a/misc/vscode/package.json b/misc/vscode/package.json index 35a53b89..37cae29c 100644 --- a/misc/vscode/package.json +++ b/misc/vscode/package.json @@ -10,30 +10,52 @@ "categories": [ "Programming Languages" ], + "activationEvents": [ + "onLanguage:onyx" + ], + "main": "./out/extension.js", "contributes": { - "languages": [{ - "id": "onyx", - "aliases": ["Onyx", "onyx"], - "extensions": [".onyx"], - "configuration": "./language-configuration.json" - }], - "grammars": [{ - "language": "onyx", - "scopeName": "source.onyx", - "path": "./syntaxes/onyx.tmLanguage" - }], - "problemMatchers": [{ - "name": "onyx", - "owner": "onyx", - "fileLocation": "absolute", - "pattern": { - "regexp": "\\((/.*|[a-zA-Z]:[^:]+):([0-9]+),([0-9]+)\\) (.*)", - "file": 1, - "line": 2, - "column": 3, - "message": 4, - "loop": true + "languages": [ + { + "id": "onyx", + "aliases": [ + "Onyx", + "onyx" + ], + "extensions": [ + ".onyx" + ], + "configuration": "./language-configuration.json" + } + ], + "grammars": [ + { + "language": "onyx", + "scopeName": "source.onyx", + "path": "./syntaxes/onyx.tmLanguage" + } + ], + "problemMatchers": [ + { + "name": "onyx", + "owner": "onyx", + "fileLocation": "absolute", + "pattern": { + "regexp": "\\((/.*|[a-zA-Z]:[^:]+):([0-9]+),([0-9]+)\\) (.*)", + "file": 1, + "line": 2, + "column": 3, + "message": 4, + "loop": true + } } - }] + ] + }, + "files": ["./textmate-configuration.json"], + "dependencies": { + "vscode-textmate-languageservice": "^0.1.1" + }, + "devDependencies": { + "vscode": "^1.1.37" } } diff --git a/misc/vscode/syntaxes/onyx.tmLanguage b/misc/vscode/syntaxes/onyx.tmLanguage index 1ea8cb72..0bdb10ac 100644 --- a/misc/vscode/syntaxes/onyx.tmLanguage +++ b/misc/vscode/syntaxes/onyx.tmLanguage @@ -2,8 +2,10 @@ + id + onyx name - Jai + onyx scopeName source.onyx fileTypes @@ -309,7 +311,7 @@ 1 name - entity.name.function.onyx + meta.function.onyx entity.name.function.onyx diff --git a/misc/vscode/textmate-configuration.json b/misc/vscode/textmate-configuration.json new file mode 100644 index 00000000..02f88598 --- /dev/null +++ b/misc/vscode/textmate-configuration.json @@ -0,0 +1,33 @@ +{ + "language": { + "id": "onyx", + "aliases": [ "Onyx" ], + "extensions": [ ".onyx" ] + }, + "grammar": { + "language": "onyx", + "scopeName": "source.onyx", + "path": "./syntaxes/onyx.tmLanguage" + }, + "comments": { + "lineComment": "comment.line.double-slash.onyx", + "blockComment": [ "comment.block.onyx" ] + }, + "declarations": [ + "entity\\.name\\.function\\.onyx", + "entity\\.name\\.type\\.onyx" + ], + "indentation": {}, + "dedentation": [], + "punctuation": { + "continuation": "" + }, + "markers": { + "start": "", + "end": "" + }, + "symbols": { + "entity.name.function.onyx": 11, + "entity.name.type.onyx": 22 + } +} \ No newline at end of file diff --git a/misc/vscode/tsconfig.json b/misc/vscode/tsconfig.json new file mode 100644 index 00000000..57a115e0 --- /dev/null +++ b/misc/vscode/tsconfig.json @@ -0,0 +1,12 @@ +{ + "compilerOptions": { + "module": "commonjs", + "target": "es6", + "outDir": "out", + "moduleResolution": "node", + "lib": ["es6", "es2016"], + "sourceMap": false, + "rootDir": "." + }, + "exclude": ["node_modules", ".vscode-test"] +} \ No newline at end of file