too much work on getting vscode to know symbols
authorBrendan Hansen <brendan.f.hansen@gmail.com>
Wed, 24 Nov 2021 20:58:53 +0000 (14:58 -0600)
committerBrendan Hansen <brendan.f.hansen@gmail.com>
Wed, 24 Nov 2021 20:58:53 +0000 (14:58 -0600)
.gitignore
misc/vscode/extension.ts [new file with mode: 0644]
misc/vscode/onyx-0.0.1.vsix
misc/vscode/out/extension.js [new file with mode: 0644]
misc/vscode/package.json
misc/vscode/syntaxes/onyx.tmLanguage
misc/vscode/textmate-configuration.json [new file with mode: 0644]
misc/vscode/tsconfig.json [new file with mode: 0644]

index cacc5a8268d1bebaacb0d66947faea06b834c518..177911a4efac1dd9bce186e36fc67abe06525528 100644 (file)
@@ -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 (file)
index 0000000..f9d3f1f
--- /dev/null
@@ -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
index 1e76b0e142d4a076a1e60ff083d80a00c6dfa679..614142c18bea3998d097e48e03dbe76ad5ced98b 100644 (file)
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 (file)
index 0000000..f35a02a
--- /dev/null
@@ -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;
index 35a53b89080a08cc24d52390871a8edc7bdcfa05..37cae29c70b3665777600c2e0e462b4f82ffd8e6 100644 (file)
     "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"
     }
 }
index 1ea8cb7232e775a390e17b1017055d69cdbfbbe2..0bdb10acac3d785a3a02a4c9ee3f116798203901 100644 (file)
@@ -2,8 +2,10 @@
 <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 <plist version="1.0">
 <dict>
+       <key>id</key>
+       <string>onyx</string>
        <key>name</key>
-       <string>Jai</string>
+       <string>onyx</string>
        <key>scopeName</key>
        <string>source.onyx</string>
        <key>fileTypes</key>
                                                <key>1</key>
                                                <dict>
                                                        <key>name</key>
-                                                       <string>entity.name.function.onyx</string>
+                                                       <string>meta.function.onyx entity.name.function.onyx</string>
                                                </dict>
                                        </dict>
                                </dict>
diff --git a/misc/vscode/textmate-configuration.json b/misc/vscode/textmate-configuration.json
new file mode 100644 (file)
index 0000000..02f8859
--- /dev/null
@@ -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 (file)
index 0000000..57a115e
--- /dev/null
@@ -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