added vscode support
authorBrendan Hansen <brendan.f.hansen@gmail.com>
Wed, 27 Oct 2021 16:23:10 +0000 (11:23 -0500)
committerBrendan Hansen <brendan.f.hansen@gmail.com>
Wed, 27 Oct 2021 16:23:10 +0000 (11:23 -0500)
.gitignore
build.sh
misc/vscode/language-configuration.json [new file with mode: 0644]
misc/vscode/onyx-0.0.1.vsix [new file with mode: 0644]
misc/vscode/package.json [new file with mode: 0644]
misc/vscode/syntaxes/onyx.tmLanguage [new file with mode: 0644]

index 87b9b0228e11c0027bcf2490a0ecb301f8b908ce..07641e0af46492f2e32417fb35d3f872d4d3fd60 100644 (file)
@@ -12,3 +12,4 @@ session.vim
 *.rdbg
 tmp/
 .vimspector.json
+.vscode/
\ No newline at end of file
index 41bde8ac8e8f72ce3ab82225659f95dee552daf4..1f30e66ee5961d2b6762ffde7ce2b638df92b48d 100755 (executable)
--- a/build.sh
+++ b/build.sh
@@ -20,7 +20,7 @@ else
     TARGET='./bin/onyx'
 fi
 
-BUILD_DIR='.'
+BUILD_DIR='./build'
 mkdir -p "$BUILD_DIR"
 
 for file in $C_FILES ; do
diff --git a/misc/vscode/language-configuration.json b/misc/vscode/language-configuration.json
new file mode 100644 (file)
index 0000000..78b4387
--- /dev/null
@@ -0,0 +1,28 @@
+{
+    "comments": {
+        // symbol used for single line comment. Remove this entry if your language does not support line comments
+        "lineComment": "//",
+        // symbols used for start and end a block comment. Remove this entry if your language does not support block comments
+        "blockComment": [ "/*", "*/" ]
+    },
+    // symbols used as brackets
+    "brackets": [
+        ["{", "}"],
+        ["[", "]"],
+        ["(", ")"]
+    ],
+    // symbols that are auto closed when typing
+    "autoClosingPairs": [
+        ["{", "}"],
+        ["[", "]"],
+        ["(", ")"],
+        ["\"", "\""]
+    ],
+    // symbols that that can be used to surround a selection
+    "surroundingPairs": [
+        ["{", "}"],
+        ["[", "]"],
+        ["(", ")"],
+        ["\"", "\""]
+    ]
+}
\ No newline at end of file
diff --git a/misc/vscode/onyx-0.0.1.vsix b/misc/vscode/onyx-0.0.1.vsix
new file mode 100644 (file)
index 0000000..3b6f9e2
Binary files /dev/null and b/misc/vscode/onyx-0.0.1.vsix differ
diff --git a/misc/vscode/package.json b/misc/vscode/package.json
new file mode 100644 (file)
index 0000000..afd7aae
--- /dev/null
@@ -0,0 +1,38 @@
+{
+    "name": "onyx",
+    "displayName": "Onyx",
+    "description": "Onyx syntax highlighting.",
+    "version": "0.0.1",
+    "publisher": "brendanfh",
+    "engines": {
+        "vscode": "^1.42.0"
+    },
+    "categories": [
+        "Programming Languages"
+    ],
+    "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": "^\\(([^:]+):([0-9]+),([0-9]+)\\) (.*)",
+                "file": 1,
+                "line": 2,
+                "column": 3,
+                "message": 4
+            }
+        }]
+    }
+}
diff --git a/misc/vscode/syntaxes/onyx.tmLanguage b/misc/vscode/syntaxes/onyx.tmLanguage
new file mode 100644 (file)
index 0000000..d420035
--- /dev/null
@@ -0,0 +1,425 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!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>name</key>
+       <string>Jai</string>
+       <key>scopeName</key>
+       <string>source.onyx</string>
+       <key>fileTypes</key>
+       <array>
+               <string>onyx</string>
+       </array>
+       <key>patterns</key>
+       <array>
+               <dict>
+                       <key>include</key>
+                       <string>#comments</string>
+               </dict>
+               <dict>
+                       <key>include</key>
+                       <string>#types</string>
+               </dict>
+               <dict>
+                       <key>include</key>
+                       <string>#keywords</string>
+               </dict>
+               <dict>
+                       <key>include</key>
+                       <string>#functions_and_declarations</string>
+               </dict>
+               <dict>
+                       <key>include</key>
+                       <string>#strings</string>
+               </dict>
+               <dict>
+                       <key>include</key>
+                       <string>#string_escaped_char</string>
+               </dict>
+       </array>
+       <key>repository</key>
+       <dict>
+               <key>block_comment</key>
+               <dict>
+                       <key>name</key>
+                       <string>comment.block.onyx</string>
+                       <key>begin</key>
+                       <string>/\*</string>
+                       <key>end</key>
+                       <string>\*/</string>
+                       <key>patterns</key>
+                       <array>
+                               <dict>
+                                       <key>include</key>
+                                       <string>#block_comment</string>
+                                       <key>name</key>
+                                       <string>comment.block.onyx</string>
+                               </dict>
+                       </array>
+               </dict>
+               <key>line_comment</key>
+               <dict>
+                       <key>begin</key>
+                       <string>(^[ \t]+)?((?=//)|(?=#!))</string>
+                       <key>beginCaptures</key>
+                       <dict>
+                               <key>1</key>
+                               <dict>
+                                       <key>name</key>
+                                       <string>punctuation.whitespace.comment.leading.onyx</string>
+                               </dict>
+                       </dict>
+                       <key>end</key>
+                       <string>(?!\G)</string>
+                       <key>patterns</key>
+                       <array>
+                               <dict>
+                                       <key>begin</key>
+                                       <string>//</string>
+                                       <key>beginCaptures</key>
+                                       <dict>
+                                               <key>0</key>
+                                               <dict>
+                                                       <key>name</key>
+                                                       <string>punctuation.definition.comment.onyx</string>
+                                               </dict>
+                                       </dict>
+                                       <key>end</key>
+                                       <string>\n</string>
+                                       <key>name</key>
+                                       <string>comment.line.double-slash.onyx</string>
+                                       <key>patterns</key>
+                                       <array>
+                                               <dict>
+                                                       <key>match</key>
+                                                       <string>(?&gt;\\\s*\n)</string>
+                                                       <key>name</key>
+                                                       <string>punctuation.separator.continuation.onyx</string>
+                                               </dict>
+                                       </array>
+                               </dict>
+                               <dict>
+                                       <key>begin</key>
+                                       <string>#!</string>
+                                       <key>beginCaptures</key>
+                                       <dict>
+                                               <key>0</key>
+                                               <dict>
+                                                       <key>name</key>
+                                                       <string>punctuation.definition.comment.onyx</string>
+                                               </dict>
+                                       </dict>
+                                       <key>end</key>
+                                       <string>\n</string>
+                                       <key>name</key>
+                                       <string>comment.line.double-slash.onyx</string>
+                                       <key>patterns</key>
+                                       <array>
+                                               <dict>
+                                                       <key>match</key>
+                                                       <string>(?&gt;\\\s*\n)</string>
+                                                       <key>name</key>
+                                                       <string>punctuation.separator.continuation.onyx</string>
+                                               </dict>
+                                       </array>
+                               </dict>
+                       </array>
+               </dict>
+               <key>comments</key>
+               <dict>
+                       <key>patterns</key>
+                       <array>
+                               <dict>
+                                       <key>include</key>
+                                       <string>#block_comment</string>
+                               </dict>
+                               <dict>
+                                       <key>match</key>
+                                       <string>\*/.*\n</string>
+                                       <key>name</key>
+                                       <string>invalid.illegal.stray-comment-end.onyx</string>
+                               </dict>
+
+                               <dict>
+                                       <key>include</key>
+                                       <string>#line_comment</string>
+                               </dict>
+                       </array>
+               </dict>
+               <key>keywords</key>
+               <dict>
+                       <key>patterns</key>
+                       <array>
+                               <dict>
+                                       <key>match</key>
+                                       <string>\b(if|else|elseif|for|while|defer|return|do)\b</string>
+                                       <key>name</key>
+                                       <string>keyword.control.onyx</string>
+                               </dict>
+                               <dict>
+                                       <key>match</key>
+                    <string>\b(break|continue|fallthrough|switch|case)\b</string>
+                                       <key>name</key>
+                                       <string>keyword.control.onyx</string>
+                               </dict>
+                               <dict>
+                                       <key>match</key>
+                    <string>\b(use|macro|package)\b</string>
+                                       <key>name</key>
+                                       <string>keyword.control.onyx</string>
+                               </dict>
+                               <dict>
+                                       <key>match</key>
+                                       <string>\b(it|it_index)\b</string>
+                                       <key>name</key>
+                                       <string>keyword.other.onyx</string>
+                               </dict>
+                               <dict>
+                                       <key>match</key>
+                                       <string>\b(null|null_proc|null_str|true|false)\b</string>
+                                       <key>name</key>
+                                       <string>constant.language.onyx</string>
+                               </dict>
+                               <dict>
+                                       <key>match</key>
+                                       <string>\b(\d(\d|_)*(.\d(\d|_)*)?)((e|E)(\+|-)?\d+)?[ijk]?\b</string>
+                                       <key>name</key>
+                                       <string>constant.numeric.onyx</string>
+                               </dict>
+                               <dict>
+                                       <key>match</key>
+                                       <string>\b((0b(0|1|_)+)|(0o(\d|_)+)|(0d(\d|_)+)|(0[xXh](\h|_)+))[ijk]?\b</string>
+                                       <key>name</key>
+                                       <string>constant.numeric.onyx</string>
+                               </dict>
+                               <dict>
+                                       <key>match</key>
+                                       <string>---</string>
+                                       <key>name</key>
+                                       <string>constant.numeric.onyx</string>
+                               </dict>
+                               <dict>
+                                       <key>match</key>
+                                       <string>\b(struct|enum)\b</string>
+                                       <key>name</key>
+                                       <string>storage.type.onyx</string>
+                               </dict>
+                               <dict>
+                                       <key>match</key>
+                                       <string>\b(cast)\b</string>
+                                       <key>name</key>
+                                       <string>keyword.function.onyx</string>
+                               </dict>
+                               <dict>
+                                       <key>match</key>
+                                       <string>([#]\s*\b([[:alpha:]_]+[[:alnum:]_]*)\b)</string>
+                                       <key>name</key>
+                                       <string>keyword.tag.onyx</string>
+                               </dict>
+                               <dict>
+                                       <key>match</key>
+                                       <string>@[^\s;]+</string>
+                                       <key>name</key>
+                                       <string>keyword.tag.onyx</string>
+                               </dict>
+                       </array>
+               </dict>
+               <key>types</key>
+               <dict>
+                       <key>patterns</key>
+                       <array>
+                               <dict>
+                                       <key>match</key>
+                                       <string>\b(struct|enum)\b(?:(\{)(\}))?</string>
+                                       <key>name</key>
+                                       <string>storage.type.onyx</string>
+                               </dict>
+                               <dict>
+                                       <key>match</key>
+                                       <string>\$\s*(\b([[:alpha:]_]+[[:alnum:]_]*)\b)</string>
+                                       <key>name</key>
+                                       <string>storage.type.onyx</string>
+                               </dict>
+                               <!-- Basic Types -->
+                               <dict>
+                                       <key>match</key>
+                                       <string>\b(i8|i16|i32|i64)\b</string>
+                                       <key>name</key>
+                                       <string>storage.type.onyx</string>
+                               </dict>
+                               <dict>
+                                       <key>match</key>
+                                       <string>\b(u8|u16|u32|u64)\b</string>
+                                       <key>name</key>
+                                       <string>storage.type.onyx</string>
+                               </dict>
+                               <dict>
+                                       <key>match</key>
+                                       <string>\b(f32|f64)\b</string>
+                                       <key>name</key>
+                                       <string>storage.type.onyx</string>
+                               </dict>
+                               <dict>
+                                       <key>match</key>
+                                       <string>\b(bool)\b</string>
+                                       <key>name</key>
+                                       <string>storage.type.onyx</string>
+                               </dict>
+                               <dict>
+                                       <key>match</key>
+                                       <string>\b(str|cstr)\b</string>
+                                       <key>name</key>
+                                       <string>storage.type.onyx</string>
+                               </dict>
+                               <dict>
+                                       <key>match</key>
+                                       <string>\b(i8x16|i16x8|i32x4|i64x2|f32x4|f64x2|v128)\b</string>
+                                       <key>name</key>
+                                       <string>storage.type.onyx</string>
+                               </dict>
+                               <dict>
+                                       <key>match</key>
+                                       <string>\b(void)\b</string>
+                                       <key>name</key>
+                                       <string>storage.type.onyx</string>
+                               </dict>
+                       </array>
+               </dict>
+               <key>functions_and_declarations</key>
+               <dict>
+                       <key>patterns</key>
+                       <array>
+                               <dict>
+                                       <key>match</key>
+                                       <string>\b(sizeof|alignof|typeof)\b\s*\(</string>
+                                       <key>captures</key>
+                                       <dict>
+                                               <key>1</key>
+                                               <dict>
+                                                       <key>name</key>
+                                                       <string>keyword.function.onyx</string>
+                                               </dict>
+                                       </dict>
+                               </dict>
+                               <dict>
+                                       <key>match</key>
+                                       <string>(\b[[:alpha:]_]+[[:alnum:]_]*\b)\s*[!]?\s*[\(]</string>
+                                       <key>captures</key>
+                                       <dict>
+                                               <key>1</key>
+                                               <dict>
+                                                       <key>name</key>
+                                                       <string>support.function.onyx</string>
+                                               </dict>
+                                       </dict>
+                               </dict>
+                               <dict>
+                                       <key>match</key>
+                                       <string>\b(\b[[:alpha:]_]+[[:alnum:]_]*\b)\s*[:]\s*[:]\s*(struct|enum)</string>
+                                       <key>captures</key>
+                                       <dict>
+                                               <key>1</key>
+                                               <dict>
+                                                       <key>name</key>
+                                                       <string>meta.type.onyx entity.name.type.onyx</string>
+                                               </dict>
+                                               <key>2</key>
+                                               <dict>
+                                                       <key>name</key>
+                                                       <string>storage.type.onyx</string>
+                                               </dict>
+                                       </dict>
+                               </dict>
+                               <dict>
+                                       <key>match</key>
+                                       <string>\b(\b[[:alpha:]_]+[[:alnum:]_]*\b)\s*[:]\s*[:]\s*([#]\s*type)</string>
+                                       <key>captures</key>
+                                       <dict>
+                                               <key>1</key>
+                                               <dict>
+                                                       <key>name</key>
+                                                       <string>meta.type.onyx entity.name.type.onyx</string>
+                                               </dict>
+                                               <key>2</key>
+                                               <dict>
+                                                       <key>name</key>
+                                                       <string>keyword.tag.onyx</string>
+                                               </dict>
+                                       </dict>
+                               </dict>
+                               <dict>
+                                       <key>match</key>
+                                       <string>\b(\b[[:alpha:]_]+[[:alnum:]_]*\b)\s*[:]\s*[:]\s*</string>
+                                       <key>captures</key>
+                                       <dict>
+                                               <key>1</key>
+                                               <dict>
+                                                       <key>name</key>
+                                                       <string>meta.constant.onyx entity.name.type.onyx</string>
+                                               </dict>
+                                       </dict>
+                               </dict>
+                       </array>
+               </dict>
+               <key>string_escaped_char</key>
+               <dict>
+                       <key>patterns</key>
+                       <array>
+                               <dict>
+                                       <key>match</key>
+                                       <string>\\(\\|[abefnrut"0]|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8}|[0-7]{3})</string>
+                                       <key>name</key>
+                                       <string>constant.character.escape.onyx</string>
+                               </dict>
+                               <dict>
+                                       <key>match</key>
+                                       <string>\\.</string>
+                                       <key>name</key>
+                                       <string>invalid.illegal.unknown-escape.onyx</string>
+                               </dict>
+                       </array>
+               </dict>
+               <key>strings</key>
+               <dict>
+                       <key>patterns</key>
+                       <array>
+                               <dict>
+                                       <key>begin</key>
+                                       <string>"</string>
+                                       <key>beginCaptures</key>
+                                       <dict>
+                                               <key>0</key>
+                                               <dict>
+                                                       <key>name</key>
+                                                       <string>punctuation.definition.string.begin.onyx</string>
+                                               </dict>
+                                       </dict>
+                                       <key>end</key>
+                                       <string>"</string>
+                                       <key>endCaptures</key>
+                                       <dict>
+                                               <key>0</key>
+                                               <dict>
+                                                       <key>name</key>
+                                                       <string>punctuation.definition.string.end.onyx</string>
+                                               </dict>
+                                       </dict>
+                                       <key>name</key>
+                                       <string>string.quoted.double.onyx</string>
+                                       <key>patterns</key>
+                                       <array>
+                                               <dict>
+                                                       <key>include</key>
+                                                       <string>#string_placeholder</string>
+                                               </dict>
+                                               <dict>
+                                                       <key>include</key>
+                                                       <string>#string_escaped_char</string>
+                                               </dict>
+                                       </array>
+                               </dict>
+                       </array>
+               </dict>
+       </dict>
+</dict>
+</plist>