Compare commits
18 commits
Author | SHA1 | Date | |
---|---|---|---|
|
9d4a8b8246 | ||
|
a33019b088 | ||
|
cb7011ac46 | ||
|
8cbf55a627 | ||
|
04d662ee42 | ||
|
18199666d8 | ||
|
bb58baa09c | ||
|
fa7a4bd245 | ||
|
99f66d803a | ||
|
bc84098b77 | ||
|
d146f51e59 | ||
|
8ad44334d8 | ||
|
69a82a563e | ||
|
c3ade921d7 | ||
|
7c48aa6cad | ||
|
4b5bb991f7 | ||
|
9098604bf0 | ||
|
adaccda70b |
13
.vscodeignore
Normal file
13
.vscodeignore
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
# ---> VisualStudioCode
|
||||||
|
.vscode/*
|
||||||
|
!.vscode/settings.json
|
||||||
|
!.vscode/tasks.json
|
||||||
|
!.vscode/launch.json
|
||||||
|
!.vscode/extensions.json
|
||||||
|
!.vscode/*.code-snippets
|
||||||
|
|
||||||
|
# Local History for Visual Studio Code
|
||||||
|
.history/
|
||||||
|
|
||||||
|
# Built Visual Studio Code Extensions
|
||||||
|
*.vsix
|
|
@ -4,8 +4,11 @@ syntax highlighting for hblang in vscode
|
||||||
|
|
||||||
# Usage guide:
|
# Usage guide:
|
||||||
|
|
||||||
1. run `cargo install hblang --git https://git.ablecorp.us/ableos/holey-bytes`
|
1. `cargo +nightly install hblang --git https://git.ablecorp.us/ableos/holey-bytes hbc --debug`
|
||||||
2. add `$HOME/.cargo/bin` (or wherever you installed hblang) to `$PATH`
|
> remember to keep this updated
|
||||||
|
2.
|
||||||
|
- add `$HOME/.cargo/bin` (or wherever you installed hblang) to `$PATH`
|
||||||
> in bash, `export PATH=$PATH:$HOME/.cargo/bin`<br>
|
> in bash, `export PATH=$PATH:$HOME/.cargo/bin`<br>
|
||||||
> in other shells, there may be other ways
|
> in other shells, there may be other ways
|
||||||
|
- alternatively, add the path you installed hblang to the extension settings
|
||||||
3. log out and log back in (or something, idk)
|
3. log out and log back in (or something, idk)
|
|
@ -68,12 +68,12 @@
|
||||||
],
|
],
|
||||||
"folding": {
|
"folding": {
|
||||||
"markers": {
|
"markers": {
|
||||||
"start": "^\\s*//\\s*#region\\b",
|
"start": "{\n",
|
||||||
"end": "^\\s*//\\s*#endregion\\b"
|
"end": "}"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"indentationRules": {
|
"indentationRules": {
|
||||||
"increaseIndentPattern": "{",
|
"increaseIndentPattern": "{\\s+",
|
||||||
"decreaseIndentPattern": "}"
|
"decreaseIndentPattern": "\\s+}\\$"
|
||||||
},
|
},
|
||||||
}
|
}
|
220
package-lock.json
generated
220
package-lock.json
generated
|
@ -1,12 +1,12 @@
|
||||||
{
|
{
|
||||||
"name": "hblang",
|
"name": "hblang",
|
||||||
"version": "0.1.0",
|
"version": "0.2.7",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "hblang",
|
"name": "hblang",
|
||||||
"version": "0.1.0",
|
"version": "0.2.7",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/vscode": "^1.75.0",
|
"@types/vscode": "^1.75.0",
|
||||||
"os-browserify": "^0.3.0",
|
"os-browserify": "^0.3.0",
|
||||||
|
@ -15,8 +15,8 @@
|
||||||
"ts-loader": "^9.5.1",
|
"ts-loader": "^9.5.1",
|
||||||
"typescript": "^4.0.0",
|
"typescript": "^4.0.0",
|
||||||
"vscode": "^1.1.37",
|
"vscode": "^1.1.37",
|
||||||
"webpack": "^5.0.0",
|
"webpack": "^5.97.1",
|
||||||
"webpack-cli": "^4.0.0"
|
"webpack-cli": "^4.10.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"vscode": "^1.75.0"
|
"vscode": "^1.75.0"
|
||||||
|
@ -106,6 +106,28 @@
|
||||||
"node": ">= 6"
|
"node": ">= 6"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@types/eslint": {
|
||||||
|
"version": "9.6.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz",
|
||||||
|
"integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@types/estree": "*",
|
||||||
|
"@types/json-schema": "*"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@types/eslint-scope": {
|
||||||
|
"version": "3.7.7",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz",
|
||||||
|
"integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@types/eslint": "*",
|
||||||
|
"@types/estree": "*"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@types/estree": {
|
"node_modules/@types/estree": {
|
||||||
"version": "1.0.6",
|
"version": "1.0.6",
|
||||||
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz",
|
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz",
|
||||||
|
@ -135,73 +157,73 @@
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/@webassemblyjs/ast": {
|
"node_modules/@webassemblyjs/ast": {
|
||||||
"version": "1.12.1",
|
"version": "1.14.1",
|
||||||
"resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz",
|
"resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz",
|
||||||
"integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==",
|
"integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@webassemblyjs/helper-numbers": "1.11.6",
|
"@webassemblyjs/helper-numbers": "1.13.2",
|
||||||
"@webassemblyjs/helper-wasm-bytecode": "1.11.6"
|
"@webassemblyjs/helper-wasm-bytecode": "1.13.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@webassemblyjs/floating-point-hex-parser": {
|
"node_modules/@webassemblyjs/floating-point-hex-parser": {
|
||||||
"version": "1.11.6",
|
"version": "1.13.2",
|
||||||
"resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz",
|
"resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz",
|
||||||
"integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==",
|
"integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/@webassemblyjs/helper-api-error": {
|
"node_modules/@webassemblyjs/helper-api-error": {
|
||||||
"version": "1.11.6",
|
"version": "1.13.2",
|
||||||
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz",
|
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz",
|
||||||
"integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==",
|
"integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/@webassemblyjs/helper-buffer": {
|
"node_modules/@webassemblyjs/helper-buffer": {
|
||||||
"version": "1.12.1",
|
"version": "1.14.1",
|
||||||
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz",
|
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz",
|
||||||
"integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==",
|
"integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/@webassemblyjs/helper-numbers": {
|
"node_modules/@webassemblyjs/helper-numbers": {
|
||||||
"version": "1.11.6",
|
"version": "1.13.2",
|
||||||
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz",
|
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz",
|
||||||
"integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==",
|
"integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@webassemblyjs/floating-point-hex-parser": "1.11.6",
|
"@webassemblyjs/floating-point-hex-parser": "1.13.2",
|
||||||
"@webassemblyjs/helper-api-error": "1.11.6",
|
"@webassemblyjs/helper-api-error": "1.13.2",
|
||||||
"@xtuc/long": "4.2.2"
|
"@xtuc/long": "4.2.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@webassemblyjs/helper-wasm-bytecode": {
|
"node_modules/@webassemblyjs/helper-wasm-bytecode": {
|
||||||
"version": "1.11.6",
|
"version": "1.13.2",
|
||||||
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz",
|
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz",
|
||||||
"integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==",
|
"integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/@webassemblyjs/helper-wasm-section": {
|
"node_modules/@webassemblyjs/helper-wasm-section": {
|
||||||
"version": "1.12.1",
|
"version": "1.14.1",
|
||||||
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz",
|
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz",
|
||||||
"integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==",
|
"integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@webassemblyjs/ast": "1.12.1",
|
"@webassemblyjs/ast": "1.14.1",
|
||||||
"@webassemblyjs/helper-buffer": "1.12.1",
|
"@webassemblyjs/helper-buffer": "1.14.1",
|
||||||
"@webassemblyjs/helper-wasm-bytecode": "1.11.6",
|
"@webassemblyjs/helper-wasm-bytecode": "1.13.2",
|
||||||
"@webassemblyjs/wasm-gen": "1.12.1"
|
"@webassemblyjs/wasm-gen": "1.14.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@webassemblyjs/ieee754": {
|
"node_modules/@webassemblyjs/ieee754": {
|
||||||
"version": "1.11.6",
|
"version": "1.13.2",
|
||||||
"resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz",
|
"resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz",
|
||||||
"integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==",
|
"integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
@ -209,9 +231,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@webassemblyjs/leb128": {
|
"node_modules/@webassemblyjs/leb128": {
|
||||||
"version": "1.11.6",
|
"version": "1.13.2",
|
||||||
"resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz",
|
"resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz",
|
||||||
"integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==",
|
"integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
@ -219,79 +241,79 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@webassemblyjs/utf8": {
|
"node_modules/@webassemblyjs/utf8": {
|
||||||
"version": "1.11.6",
|
"version": "1.13.2",
|
||||||
"resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz",
|
"resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz",
|
||||||
"integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==",
|
"integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/@webassemblyjs/wasm-edit": {
|
"node_modules/@webassemblyjs/wasm-edit": {
|
||||||
"version": "1.12.1",
|
"version": "1.14.1",
|
||||||
"resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz",
|
"resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz",
|
||||||
"integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==",
|
"integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@webassemblyjs/ast": "1.12.1",
|
"@webassemblyjs/ast": "1.14.1",
|
||||||
"@webassemblyjs/helper-buffer": "1.12.1",
|
"@webassemblyjs/helper-buffer": "1.14.1",
|
||||||
"@webassemblyjs/helper-wasm-bytecode": "1.11.6",
|
"@webassemblyjs/helper-wasm-bytecode": "1.13.2",
|
||||||
"@webassemblyjs/helper-wasm-section": "1.12.1",
|
"@webassemblyjs/helper-wasm-section": "1.14.1",
|
||||||
"@webassemblyjs/wasm-gen": "1.12.1",
|
"@webassemblyjs/wasm-gen": "1.14.1",
|
||||||
"@webassemblyjs/wasm-opt": "1.12.1",
|
"@webassemblyjs/wasm-opt": "1.14.1",
|
||||||
"@webassemblyjs/wasm-parser": "1.12.1",
|
"@webassemblyjs/wasm-parser": "1.14.1",
|
||||||
"@webassemblyjs/wast-printer": "1.12.1"
|
"@webassemblyjs/wast-printer": "1.14.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@webassemblyjs/wasm-gen": {
|
"node_modules/@webassemblyjs/wasm-gen": {
|
||||||
"version": "1.12.1",
|
"version": "1.14.1",
|
||||||
"resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz",
|
"resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz",
|
||||||
"integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==",
|
"integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@webassemblyjs/ast": "1.12.1",
|
"@webassemblyjs/ast": "1.14.1",
|
||||||
"@webassemblyjs/helper-wasm-bytecode": "1.11.6",
|
"@webassemblyjs/helper-wasm-bytecode": "1.13.2",
|
||||||
"@webassemblyjs/ieee754": "1.11.6",
|
"@webassemblyjs/ieee754": "1.13.2",
|
||||||
"@webassemblyjs/leb128": "1.11.6",
|
"@webassemblyjs/leb128": "1.13.2",
|
||||||
"@webassemblyjs/utf8": "1.11.6"
|
"@webassemblyjs/utf8": "1.13.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@webassemblyjs/wasm-opt": {
|
"node_modules/@webassemblyjs/wasm-opt": {
|
||||||
"version": "1.12.1",
|
"version": "1.14.1",
|
||||||
"resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz",
|
"resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz",
|
||||||
"integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==",
|
"integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@webassemblyjs/ast": "1.12.1",
|
"@webassemblyjs/ast": "1.14.1",
|
||||||
"@webassemblyjs/helper-buffer": "1.12.1",
|
"@webassemblyjs/helper-buffer": "1.14.1",
|
||||||
"@webassemblyjs/wasm-gen": "1.12.1",
|
"@webassemblyjs/wasm-gen": "1.14.1",
|
||||||
"@webassemblyjs/wasm-parser": "1.12.1"
|
"@webassemblyjs/wasm-parser": "1.14.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@webassemblyjs/wasm-parser": {
|
"node_modules/@webassemblyjs/wasm-parser": {
|
||||||
"version": "1.12.1",
|
"version": "1.14.1",
|
||||||
"resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz",
|
"resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz",
|
||||||
"integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==",
|
"integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@webassemblyjs/ast": "1.12.1",
|
"@webassemblyjs/ast": "1.14.1",
|
||||||
"@webassemblyjs/helper-api-error": "1.11.6",
|
"@webassemblyjs/helper-api-error": "1.13.2",
|
||||||
"@webassemblyjs/helper-wasm-bytecode": "1.11.6",
|
"@webassemblyjs/helper-wasm-bytecode": "1.13.2",
|
||||||
"@webassemblyjs/ieee754": "1.11.6",
|
"@webassemblyjs/ieee754": "1.13.2",
|
||||||
"@webassemblyjs/leb128": "1.11.6",
|
"@webassemblyjs/leb128": "1.13.2",
|
||||||
"@webassemblyjs/utf8": "1.11.6"
|
"@webassemblyjs/utf8": "1.13.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@webassemblyjs/wast-printer": {
|
"node_modules/@webassemblyjs/wast-printer": {
|
||||||
"version": "1.12.1",
|
"version": "1.14.1",
|
||||||
"resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz",
|
"resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz",
|
||||||
"integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==",
|
"integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@webassemblyjs/ast": "1.12.1",
|
"@webassemblyjs/ast": "1.14.1",
|
||||||
"@xtuc/long": "4.2.2"
|
"@xtuc/long": "4.2.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -349,9 +371,9 @@
|
||||||
"license": "Apache-2.0"
|
"license": "Apache-2.0"
|
||||||
},
|
},
|
||||||
"node_modules/acorn": {
|
"node_modules/acorn": {
|
||||||
"version": "8.12.1",
|
"version": "8.14.0",
|
||||||
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz",
|
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz",
|
||||||
"integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==",
|
"integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"bin": {
|
"bin": {
|
||||||
|
@ -361,16 +383,6 @@
|
||||||
"node": ">=0.4.0"
|
"node": ">=0.4.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/acorn-import-attributes": {
|
|
||||||
"version": "1.9.5",
|
|
||||||
"resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz",
|
|
||||||
"integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT",
|
|
||||||
"peerDependencies": {
|
|
||||||
"acorn": "^8"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/agent-base": {
|
"node_modules/agent-base": {
|
||||||
"version": "6.0.2",
|
"version": "6.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
|
||||||
|
@ -2067,19 +2079,19 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/webpack": {
|
"node_modules/webpack": {
|
||||||
"version": "5.95.0",
|
"version": "5.97.1",
|
||||||
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.95.0.tgz",
|
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.97.1.tgz",
|
||||||
"integrity": "sha512-2t3XstrKULz41MNMBF+cJ97TyHdyQ8HCt//pqErqDvNjU9YQBnZxIHa11VXsi7F3mb5/aO2tuDxdeTPdU7xu9Q==",
|
"integrity": "sha512-EksG6gFY3L1eFMROS/7Wzgrii5mBAFe4rIr3r2BTfo7bcc+DWwFZ4OJ/miOuHJO/A85HwyI4eQ0F6IKXesO7Fg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/estree": "^1.0.5",
|
"@types/eslint-scope": "^3.7.7",
|
||||||
"@webassemblyjs/ast": "^1.12.1",
|
"@types/estree": "^1.0.6",
|
||||||
"@webassemblyjs/wasm-edit": "^1.12.1",
|
"@webassemblyjs/ast": "^1.14.1",
|
||||||
"@webassemblyjs/wasm-parser": "^1.12.1",
|
"@webassemblyjs/wasm-edit": "^1.14.1",
|
||||||
"acorn": "^8.7.1",
|
"@webassemblyjs/wasm-parser": "^1.14.1",
|
||||||
"acorn-import-attributes": "^1.9.5",
|
"acorn": "^8.14.0",
|
||||||
"browserslist": "^4.21.10",
|
"browserslist": "^4.24.0",
|
||||||
"chrome-trace-event": "^1.0.2",
|
"chrome-trace-event": "^1.0.2",
|
||||||
"enhanced-resolve": "^5.17.1",
|
"enhanced-resolve": "^5.17.1",
|
||||||
"es-module-lexer": "^1.2.1",
|
"es-module-lexer": "^1.2.1",
|
||||||
|
|
25
package.json
25
package.json
|
@ -5,18 +5,18 @@
|
||||||
},
|
},
|
||||||
"publisher": "koniifer",
|
"publisher": "koniifer",
|
||||||
"displayName": "hblang",
|
"displayName": "hblang",
|
||||||
"description": "Syntax highlighter and formatter for holey-bytes lang",
|
"description": "Syntax, formatting, and linting for holey-bytes lang",
|
||||||
"version": "0.1.0",
|
"version": "0.2.8",
|
||||||
"engines": {
|
"engines": {
|
||||||
"vscode": "^1.75.0"
|
"vscode": "^1.75.0"
|
||||||
},
|
},
|
||||||
"main": "./out/main.js",
|
"main": "./out/main.js",
|
||||||
"categories": [
|
"categories": [
|
||||||
"Programming Languages",
|
"Programming Languages",
|
||||||
"Formatters"
|
"Formatters",
|
||||||
|
"Linters"
|
||||||
],
|
],
|
||||||
"activationEvents": [
|
"activationEvents": [
|
||||||
"onLanguage:hblang",
|
|
||||||
"onCommand:extension.formatDocument"
|
"onCommand:extension.formatDocument"
|
||||||
],
|
],
|
||||||
"contributes": {
|
"contributes": {
|
||||||
|
@ -48,7 +48,18 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
],
|
||||||
|
"configuration": {
|
||||||
|
"title": "hblang",
|
||||||
|
"properties": {
|
||||||
|
"hblang.compilerPath": {
|
||||||
|
"type": "string",
|
||||||
|
"default": "PATH",
|
||||||
|
"description": "Set the optional path for the hbc compiler. If set to 'PATH', it will rely on the system to provide hbc.",
|
||||||
|
"scope": "machine-overridable"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"vscode:prepublish": "webpack",
|
"vscode:prepublish": "webpack",
|
||||||
|
@ -63,7 +74,7 @@
|
||||||
"ts-loader": "^9.5.1",
|
"ts-loader": "^9.5.1",
|
||||||
"typescript": "^4.0.0",
|
"typescript": "^4.0.0",
|
||||||
"vscode": "^1.1.37",
|
"vscode": "^1.1.37",
|
||||||
"webpack": "^5.0.0",
|
"webpack": "^5.97.1",
|
||||||
"webpack-cli": "^4.0.0"
|
"webpack-cli": "^4.10.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
188
src/main.ts
188
src/main.ts
|
@ -1,66 +1,158 @@
|
||||||
import * as vscode from 'vscode';
|
import * as vscode from "vscode";
|
||||||
import { spawn } from 'child_process';
|
import { execFile } from "child_process";
|
||||||
import * as fs from 'fs';
|
import * as fs from "fs";
|
||||||
import * as os from 'os';
|
import * as path from "path";
|
||||||
import * as path from 'path';
|
|
||||||
|
|
||||||
export function activate(context: vscode.ExtensionContext) {
|
const DEFAULT_EXECUTABLE = "hbc";
|
||||||
// Register a document formatting edit provider for the language
|
let diagnosticCollection: vscode.DiagnosticCollection;
|
||||||
context.subscriptions.push(
|
|
||||||
vscode.languages.registerDocumentFormattingEditProvider('hblang', {
|
|
||||||
async provideDocumentFormattingEdits(document: vscode.TextDocument): Promise<vscode.TextEdit[]> {
|
|
||||||
|
|
||||||
try {
|
function getExecutablePath(): string {
|
||||||
const formattedText = await formatDocument(document.fileName);
|
const config = vscode.workspace.getConfiguration("hblang");
|
||||||
|
return config.get<string>("compilerPath") === "PATH"
|
||||||
|
? DEFAULT_EXECUTABLE
|
||||||
|
: config.get<string>("compilerPath")!;
|
||||||
|
}
|
||||||
|
|
||||||
const edit = new vscode.TextEdit(
|
function isAbleosRepo(document: vscode.TextDocument): boolean {
|
||||||
new vscode.Range(0, 0, document.lineCount, 0),
|
const workspaceFolder = vscode.workspace.getWorkspaceFolder(document.uri);
|
||||||
formattedText
|
if (!workspaceFolder) return false;
|
||||||
|
return workspaceFolder.name.toLowerCase().includes("ableos");
|
||||||
|
}
|
||||||
|
|
||||||
|
async function runCommand(
|
||||||
|
filePath: string,
|
||||||
|
args: string[],
|
||||||
|
cwd: string,
|
||||||
|
): Promise<string> {
|
||||||
|
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
execFile(getExecutablePath(), args, { cwd }, (error, stdout, stderr) => {
|
||||||
|
if (error && error.code === "ENOENT") {
|
||||||
|
vscode.window.showErrorMessage(
|
||||||
|
"hblang compiler not found. Ensure 'hbc' is installed and available in PATH."
|
||||||
|
);
|
||||||
|
return reject(new Error(`Compiler not found: ${stderr || stdout}`));
|
||||||
|
}
|
||||||
|
return error
|
||||||
|
? reject(new Error(stderr || `Exit code: ${error.code}`))
|
||||||
|
: resolve(stdout);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function provideDocumentFormattingEdits(
|
||||||
|
document: vscode.TextDocument
|
||||||
|
): Promise<vscode.TextEdit[]> {
|
||||||
|
const tempFilePath = path.join(
|
||||||
|
path.dirname(document.uri.fsPath),
|
||||||
|
`temp_${path.basename(document.uri.fsPath)}`
|
||||||
);
|
);
|
||||||
|
|
||||||
return [edit];
|
try {
|
||||||
} catch (error: unknown) {
|
await document.save();
|
||||||
|
|
||||||
|
await fs.promises.writeFile(tempFilePath, document.getText());
|
||||||
|
|
||||||
|
const args = ["--fmt-stdout", tempFilePath];
|
||||||
|
if (isAbleosRepo(document)) {
|
||||||
|
args.push("--path-resolver", "ableos");
|
||||||
|
}
|
||||||
|
|
||||||
|
const workspaceFolder = vscode.workspace.getWorkspaceFolder(document.uri);
|
||||||
|
if (!workspaceFolder) {
|
||||||
|
throw new Error("Workspace folder not found.");
|
||||||
|
}
|
||||||
|
|
||||||
|
const stdout = await runCommand(tempFilePath, args, workspaceFolder.uri.fsPath);
|
||||||
|
|
||||||
|
const fullRange = new vscode.Range(
|
||||||
|
document.positionAt(0),
|
||||||
|
document.positionAt(document.getText().length)
|
||||||
|
);
|
||||||
|
return [vscode.TextEdit.replace(fullRange, stdout)];
|
||||||
|
} catch (error) {
|
||||||
if (error instanceof Error) {
|
if (error instanceof Error) {
|
||||||
vscode.window.showErrorMessage(`Formatting failed: ${error.message}`);
|
vscode.window.showErrorMessage(`Formatting failed: ${error.message}`);
|
||||||
} else {
|
} else {
|
||||||
vscode.window.showErrorMessage(`Formatting failed: ${String(error)}`);
|
vscode.window.showErrorMessage(`Formatting failed: Unknown error`);
|
||||||
}
|
}
|
||||||
return []; // Return an empty array if formatting fails
|
return [];
|
||||||
|
} finally {
|
||||||
|
fs.promises.unlink(tempFilePath).catch(console.error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
async function lintDocument(document: vscode.TextDocument) {
|
||||||
|
const args = [document.uri.fsPath];
|
||||||
|
if (isAbleosRepo(document)) {
|
||||||
|
args.push("--path-resolver", "ableos");
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
const workspaceFolder = vscode.workspace.getWorkspaceFolder(document.uri);
|
||||||
|
if (!workspaceFolder) { };
|
||||||
|
const stderr = await runCommand(document.uri.fsPath, args, workspaceFolder?.uri.fsPath || document.uri.fsPath);
|
||||||
|
diagnosticCollection.set(document.uri, parseLintingErrors(stderr));
|
||||||
|
} catch (error) {
|
||||||
|
if (error instanceof Error) {
|
||||||
|
diagnosticCollection.set(document.uri, parseLintingErrors(error.message));
|
||||||
|
} else {
|
||||||
|
vscode.window.showErrorMessage("Error linting hblang document.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function parseLintingErrors(stderr: string): vscode.Diagnostic[] {
|
||||||
|
return stderr
|
||||||
|
.split("\n")
|
||||||
|
.filter((line) => line && !line.includes("missing main function"))
|
||||||
|
.map((lineText) => {
|
||||||
|
const match = lineText.match(/^([^:]+):(\d+):(\d+):\s*(.+)$/);
|
||||||
|
if (!match) return null;
|
||||||
|
|
||||||
|
const [abc, , lineStr, columnStr, message] = match;
|
||||||
|
const lineNum = parseInt(lineStr, 10) - 1;
|
||||||
|
const columnNum = parseInt(columnStr, 10) - 1;
|
||||||
|
|
||||||
|
const severity = abc.startsWith("(W) ")
|
||||||
|
? vscode.DiagnosticSeverity.Warning
|
||||||
|
: vscode.DiagnosticSeverity.Error;
|
||||||
|
|
||||||
|
return new vscode.Diagnostic(
|
||||||
|
new vscode.Range(
|
||||||
|
lineNum,
|
||||||
|
columnNum,
|
||||||
|
lineNum,
|
||||||
|
columnNum + message.length
|
||||||
|
),
|
||||||
|
message,
|
||||||
|
severity
|
||||||
|
);
|
||||||
})
|
})
|
||||||
|
.filter(Boolean) as vscode.Diagnostic[];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export function activate(context: vscode.ExtensionContext) {
|
||||||
|
diagnosticCollection = vscode.languages.createDiagnosticCollection("hblang");
|
||||||
|
context.subscriptions.push(diagnosticCollection);
|
||||||
|
|
||||||
|
vscode.workspace.onDidSaveTextDocument(async (document) => {
|
||||||
|
if (document.languageId === "hblang") {
|
||||||
|
await lintDocument(document);
|
||||||
|
|
||||||
|
if (diagnosticCollection.get(document.uri)?.length === 0) {
|
||||||
|
vscode.commands.executeCommand(
|
||||||
|
"editor.action.formatDocument",
|
||||||
|
document
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
export function deactivate() { }
|
|
||||||
|
|
||||||
async function formatDocument(path: string): Promise<string> {
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
const child = spawn('hbc', ['--fmt-stdout', path], { shell: true });
|
|
||||||
|
|
||||||
let formattedText = '';
|
|
||||||
|
|
||||||
// Capture the output
|
|
||||||
child.stdout.on('data', (data) => {
|
|
||||||
formattedText += data.toString();
|
|
||||||
});
|
|
||||||
|
|
||||||
// Handle errors
|
|
||||||
child.stderr.on('data', (data) => {
|
|
||||||
reject(new Error(data.toString()));
|
|
||||||
});
|
|
||||||
|
|
||||||
// Handle process exit
|
|
||||||
child.on('exit', (code) => {
|
|
||||||
|
|
||||||
if (code === 0) {
|
|
||||||
resolve(formattedText);
|
|
||||||
} else {
|
|
||||||
reject(new Error(`Formatter exited with code ${code}`));
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
vscode.languages.registerDocumentFormattingEditProvider("hblang", {
|
||||||
|
provideDocumentFormattingEdits,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,19 +19,16 @@
|
||||||
"include": "#string"
|
"include": "#string"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"include": "#number"
|
"include": "#struct"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"include": "#keyword"
|
"include": "#keyword"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"include": "#struct"
|
"include": "#number"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"include": "#type"
|
"include": "#punctuation"
|
||||||
},
|
|
||||||
{
|
|
||||||
"include": "#variable"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"include": "#function"
|
"include": "#function"
|
||||||
|
@ -40,7 +37,10 @@
|
||||||
"include": "#operator"
|
"include": "#operator"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"include": "#punctuation"
|
"include": "#variable"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"include": "#type"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"include": "#array"
|
"include": "#array"
|
||||||
|
@ -51,19 +51,31 @@
|
||||||
"patterns": [
|
"patterns": [
|
||||||
{
|
{
|
||||||
"name": "variable.parameter.hblang",
|
"name": "variable.parameter.hblang",
|
||||||
"match": "\\b\\w+\\b"
|
"match": "\\b\\w+\\s*:\\s*(?:\\^)?[\\w\\$]+\\b"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"number": {
|
"number": {
|
||||||
"patterns": [
|
"patterns": [
|
||||||
{
|
{
|
||||||
"name": "constant.numeric.hblang",
|
"name": "constant.numeric.float.hblang",
|
||||||
"match": "\\b\\d+(\\.\\d+)?\\b"
|
"match": "\\b\\d+\\.\\d+\\b"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "constant.numeric.hex.hblang",
|
"name": "constant.numeric.hex.hblang",
|
||||||
"match": "0x[0-9A-Fa-f]+"
|
"match": "0x[0-9A-Fa-f]+"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "constant.numeric.binary.hblang",
|
||||||
|
"match": "0b[0-1]+"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "constant.numeric.octal.hblang",
|
||||||
|
"match": "0o[0-7]+"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "constant.numeric.decimal.hblang",
|
||||||
|
"match": "\\b\\d+\\b"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -87,23 +99,20 @@
|
||||||
"name": "string.quoted.double.hblang",
|
"name": "string.quoted.double.hblang",
|
||||||
"begin": "\"",
|
"begin": "\"",
|
||||||
"end": "\"",
|
"end": "\"",
|
||||||
"beginCaptures": {
|
|
||||||
"0": {
|
|
||||||
"name": "punctuation.definition.string.begin.hblang"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"endCaptures": {
|
|
||||||
"0": {
|
|
||||||
"name": "punctuation.definition.string.end.hblang"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"patterns": [
|
"patterns": [
|
||||||
{
|
{
|
||||||
"name": "constant.character.escape.hblang",
|
"name": "constant.character.escape.hblang",
|
||||||
"match": "\\\\[\"'\\\\bfnrt]|\\\\(\\{[^}]+\\}|\\[[^]]+\\]|[a-zA-Z])"
|
"match": "\\\\."
|
||||||
|
}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "invalid.illegal.escaped.hblang",
|
"name": "string.quoted.single.hblang",
|
||||||
|
"begin": "'",
|
||||||
|
"end": "'",
|
||||||
|
"patterns": [
|
||||||
|
{
|
||||||
|
"name": "constant.character.escape.hblang",
|
||||||
"match": "\\\\."
|
"match": "\\\\."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
@ -114,7 +123,7 @@
|
||||||
"patterns": [
|
"patterns": [
|
||||||
{
|
{
|
||||||
"name": "keyword.control.hblang",
|
"name": "keyword.control.hblang",
|
||||||
"match": "\\b(loop|break|if|else|return|packed|continue|true|false|struct|idk)\\b"
|
"match": "(?<!\\w)\\b(fn|loop|break|if|else|return|packed|continue|true|false|struct|idk|die|null|defer|union|enum|match)\\b(?!\\w)"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -122,44 +131,39 @@
|
||||||
"patterns": [
|
"patterns": [
|
||||||
{
|
{
|
||||||
"name": "storage.type.hblang",
|
"name": "storage.type.hblang",
|
||||||
"match": "\\buint|int|(u|i)(8|16|32)|void|bool|[A-Z]\\w+\\b"
|
"match": "(?<!\\w)\\b(f(32|64)|uint|int|u(8|16|32)|i(8|16|32)|void|bool|type|never)\\b(?!\\w)"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"variable": {
|
"variable": {
|
||||||
"patterns": [
|
"patterns": [
|
||||||
{
|
{
|
||||||
"name": "variable.other.declaration.hblang",
|
"name": "variable.declaration.hblang",
|
||||||
"match": "\\b\\w+\\s*:=\\b"
|
"match": "\\b\\w+\\b(?=\\s*:=)"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "variable.other.assignment.hblang",
|
"name": "variable.assignment.hblang",
|
||||||
"match": "\\b\\w+\\s*=\\b"
|
"match": "\\b\\w+\\b(?=\\s*=(?!=))"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "variable.member.hblang",
|
||||||
|
"match": "(?<=\\.)\\w+\\b"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"operator": {
|
"operator": {
|
||||||
"patterns": [
|
"patterns": [
|
||||||
|
{
|
||||||
|
"name": "keyword.operator.assignment.hblang",
|
||||||
|
"match": ":="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "keyword.operator.assignment.hblang",
|
||||||
|
"match": "=(?!=)"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "keyword.operator.hblang",
|
"name": "keyword.operator.hblang",
|
||||||
"match": "(@|:=|<<=|>>=|>=|<=|^=|\\+=|-=|\\*=|\\/=|%=|\\|=|&=|\\^|\\*|&|&&|\\|\\||<<|>>|\\+|\\-|\\/|%|\\||!|==|!=|<|>|=)"
|
"match": "(\\$|\\?|@|<<=|>>=|>=|<=|\\^=|\\+=|-=|\\*=|\\/=|%=|\\|=|&=|\\^|\\*|&|<<|>>|\\+|\\-|\\/|%|\\||!|==|!=|<|>)"
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"function": {
|
|
||||||
"patterns": [
|
|
||||||
{
|
|
||||||
"name": "entity.name.function.hblang",
|
|
||||||
"begin": "\\b\\w+\\s*\\(",
|
|
||||||
"end": "\\)",
|
|
||||||
"patterns": [
|
|
||||||
{
|
|
||||||
"include": "#all"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"include": "#parameter"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -167,16 +171,7 @@
|
||||||
"patterns": [
|
"patterns": [
|
||||||
{
|
{
|
||||||
"name": "entity.name.type.struct.hblang",
|
"name": "entity.name.type.struct.hblang",
|
||||||
"match": "\\b[A-Z]\\w+\\b"
|
"match": "\\b[A-Z]\\w*\\b"
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"array": {
|
|
||||||
"patterns": [
|
|
||||||
{
|
|
||||||
"name": "storage.type.array.hblang",
|
|
||||||
"begin": "\\.\\(",
|
|
||||||
"end": "\\)"
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -184,7 +179,61 @@
|
||||||
"patterns": [
|
"patterns": [
|
||||||
{
|
{
|
||||||
"name": "punctuation.terminator.statement.hblang",
|
"name": "punctuation.terminator.statement.hblang",
|
||||||
"match": ";|\\.|,|:"
|
"match": ";|\\.|,|(?<!:):(?!=)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"function": {
|
||||||
|
"patterns": [
|
||||||
|
{
|
||||||
|
"name": "meta.function.declaration.hblang",
|
||||||
|
"begin": "(\\b\\w+\\b)\\s*(:=)\\s*(fn)\\s*\\(",
|
||||||
|
"end": "\\)",
|
||||||
|
"beginCaptures": {
|
||||||
|
"1": {
|
||||||
|
"name": "entity.name.function.hblang"
|
||||||
|
},
|
||||||
|
"2": {
|
||||||
|
"name": "keyword.operator.assignment.hblang"
|
||||||
|
},
|
||||||
|
"3": {
|
||||||
|
"name": "keyword.control.hblang"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"patterns": [
|
||||||
|
{
|
||||||
|
"include": "#all"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "meta.function.call.hblang",
|
||||||
|
"begin": "@?\\w+\\s*\\(",
|
||||||
|
"end": "\\)",
|
||||||
|
"beginCaptures": {
|
||||||
|
"0": {
|
||||||
|
"name": "entity.name.function.hblang"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"patterns": [
|
||||||
|
{
|
||||||
|
"include": "#all"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"array": {
|
||||||
|
"patterns": [
|
||||||
|
{
|
||||||
|
"name": "meta.array.initialization.hblang",
|
||||||
|
"begin": "\\.\\[",
|
||||||
|
"end": "\\]",
|
||||||
|
"patterns": [
|
||||||
|
{
|
||||||
|
"include": "#all"
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
3
tests/dont-erase.hb
Normal file
3
tests/dont-erase.hb
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
main := fn(): void {
|
||||||
|
undefined_identifier
|
||||||
|
}
|
|
@ -6,20 +6,19 @@ module.exports = {
|
||||||
output: {
|
output: {
|
||||||
path: path.resolve(__dirname, 'out'),
|
path: path.resolve(__dirname, 'out'),
|
||||||
filename: 'main.js',
|
filename: 'main.js',
|
||||||
libraryTarget: 'commonjs2' // This is correct for VS Code extensions
|
libraryTarget: 'commonjs2'
|
||||||
},
|
},
|
||||||
resolve: {
|
resolve: {
|
||||||
extensions: ['.ts', '.js'],
|
extensions: ['.ts', '.js'],
|
||||||
fallback: {
|
fallback: {
|
||||||
// For Node.js core modules not available in browser context, you set them to false
|
"child_process": false,
|
||||||
"child_process": false, // Not used in browser context
|
"fs": false,
|
||||||
"fs": false, // Not used in browser context
|
"os": require.resolve("os-browserify/browser"),
|
||||||
"os": require.resolve("os-browserify/browser"), // Polyfill for os
|
"path": require.resolve("path-browserify"),
|
||||||
"path": require.resolve("path-browserify"), // Polyfill for path
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
externals: {
|
externals: {
|
||||||
vscode: 'commonjs vscode' // Externalize the vscode module
|
vscode: 'commonjs vscode'
|
||||||
},
|
},
|
||||||
module: {
|
module: {
|
||||||
rules: [
|
rules: [
|
||||||
|
@ -30,5 +29,5 @@ module.exports = {
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
target: 'node' // Specify the target environment as Node.js
|
target: 'node'
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue