From 887875959aa84af92291db334898aaa20956e632 Mon Sep 17 00:00:00 2001 From: allexanderbergmans Date: Fri, 3 Jul 2026 12:17:10 +0200 Subject: init --- editors/vscode/README.md | 34 ++++++++++++++ editors/vscode/isa-syntax-1.0.0.vsix | Bin 0 -> 3414 bytes editors/vscode/language-configuration.json | 8 ++++ editors/vscode/package.json | 27 +++++++++++ editors/vscode/syntaxes/isa.tmLanguage.json | 70 ++++++++++++++++++++++++++++ 5 files changed, 139 insertions(+) create mode 100644 editors/vscode/README.md create mode 100644 editors/vscode/isa-syntax-1.0.0.vsix create mode 100644 editors/vscode/language-configuration.json create mode 100644 editors/vscode/package.json create mode 100644 editors/vscode/syntaxes/isa.tmLanguage.json (limited to 'editors/vscode') diff --git a/editors/vscode/README.md b/editors/vscode/README.md new file mode 100644 index 0000000..e7db36d --- /dev/null +++ b/editors/vscode/README.md @@ -0,0 +1,34 @@ +# ISA Syntax Highlighting for VS Code + +Highlights `.isa` definition files — block types, keys, hex values, comments, bit ranges, and booleans. + +## Install + +```bash +# Symlink into your VS Code extensions folder +mkdir -p ~/.vscode/extensions +ln -sf "$PWD" ~/.vscode/extensions/myisa-isa-syntax +``` + +Or copy the folder: + +```bash +cp -r "$PWD" ~/.vscode/extensions/myisa-isa-syntax +``` + +Then **reload VS Code** (`Cmd+Shift+P` → "Developer: Reload Window"). + +Open any `.isa` file — syntax highlighting activates automatically. + +## Colors by token + +| Token | Color | +|-------|-------| +| `ARCH`, `FORMAT`, `REGISTER`, `INSTRUCTION`, `CSR` | Keyword purple | +| Block name (e.g. `ADD`, `x0`, `R`) | Entity/type blue-green | +| `END` | Keyword purple | +| Keys (`NAME`, `OPCODE`, `DESC`, etc.) | Property orange/yellow | +| `0x...` hex values | Numeric green | +| `31:25` bit ranges | Numeric green | +| `true`/`false` booleans | Language constant | +| `#` comments | Comment gray | diff --git a/editors/vscode/isa-syntax-1.0.0.vsix b/editors/vscode/isa-syntax-1.0.0.vsix new file mode 100644 index 0000000..9efef29 Binary files /dev/null and b/editors/vscode/isa-syntax-1.0.0.vsix differ diff --git a/editors/vscode/language-configuration.json b/editors/vscode/language-configuration.json new file mode 100644 index 0000000..e7a0d58 --- /dev/null +++ b/editors/vscode/language-configuration.json @@ -0,0 +1,8 @@ +{ + "comments": { + "lineComment": "#" + }, + "brackets": [], + "autoClosingPairs": [], + "surroundingPairs": [] +} diff --git a/editors/vscode/package.json b/editors/vscode/package.json new file mode 100644 index 0000000..d591994 --- /dev/null +++ b/editors/vscode/package.json @@ -0,0 +1,27 @@ +{ + "name": "isa-syntax", + "displayName": "ISA Definition Syntax Highlighting", + "description": "Syntax highlighting for .isa ISA definition files (used by the MyISA doc generator)", + "version": "1.0.0", + "publisher": "myisa", + "license": "MIT", + "engines": { "vscode": "^1.80.0" }, + "categories": ["Programming Languages"], + "contributes": { + "languages": [{ + "id": "isa", + "aliases": ["ISA Definition", "isa"], + "extensions": [".isa"], + "configuration": "./language-configuration.json", + "icon": { + "light": "./icon.png", + "dark": "./icon.png" + } + }], + "grammars": [{ + "language": "isa", + "scopeName": "source.isa", + "path": "./syntaxes/isa.tmLanguage.json" + }] + } +} diff --git a/editors/vscode/syntaxes/isa.tmLanguage.json b/editors/vscode/syntaxes/isa.tmLanguage.json new file mode 100644 index 0000000..c4de36a --- /dev/null +++ b/editors/vscode/syntaxes/isa.tmLanguage.json @@ -0,0 +1,70 @@ +{ + "$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json", + "name": "ISA Definition", + "scopeName": "source.isa", + "fileTypes": ["isa"], + "patterns": [ + { "include": "#comments" }, + { "include": "#block-header" }, + { "include": "#end-keyword" }, + { "include": "#keys" }, + { "include": "#hex-numbers" }, + { "include": "#bit-ranges" }, + { "include": "#booleans" }, + { "include": "#numbers" }, + { "include": "#names" } + ], + "repository": { + "comments": { + "patterns": [{ + "match": "#.*$", + "name": "comment.line.hash.isa" + }] + }, + "block-header": { + "patterns": [ + { + "match": "\\b(ARCH|FORMAT|REGISTER|INSTRUCTION|CSR)\\b", + "name": "keyword.control.block-type.isa" + }, + { + "match": "(?<=(ARCH|FORMAT|REGISTER|INSTRUCTION|CSR)\\s+)([A-Za-z_][A-Za-z0-9_]*)", + "name": "entity.name.type.isa" + } + ] + }, + "end-keyword": { + "match": "\\bEND\\b", + "name": "keyword.control.end.isa" + }, + "keys": { + "patterns": [ + { "match": "\\b(NAME|VERSION|DATE|STATUS)\\b", "name": "support.type.property-name.meta.isa" }, + { "match": "\\b(WIDTH|FIELD|FIELDS)\\b", "name": "support.type.property-name.format.isa" }, + { "match": "\\b(ABBR|DESC|PRESERVE|CALLER|ARG|INDEX)\\b", "name": "support.type.property-name.register.isa" }, + { "match": "\\b(FORMAT|OPCODE|FUNCT3|FUNCT7|OPERANDS|NOTE|CATEGORY|IMM)\\b", "name": "support.type.property-name.instruction.isa" }, + { "match": "\\b(NUMBER)\\b", "name": "support.type.property-name.csr.isa" } + ] + }, + "hex-numbers": { + "match": "\\b0[xX][0-9a-fA-F]+\\b", + "name": "constant.numeric.hex.isa" + }, + "bit-ranges": { + "match": "\\b([0-9]+:[0-9]+)\\b", + "name": "constant.numeric.bit-range.isa" + }, + "booleans": { + "match": "\\b(true|false|yes|no)\\b", + "name": "constant.language.boolean.isa" + }, + "numbers": { + "match": "\\b[0-9]+\\b", + "name": "constant.numeric.decimal.isa" + }, + "names": { + "match": "\\b([A-Za-z_][A-Za-z0-9_]*)\\b", + "name": "variable.other.isa" + } + } +} -- cgit v1.3