From ea2795f47573b54812d00f3b141f686395433826 Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Wed, 27 Oct 2021 11:23:10 -0500 Subject: [PATCH] added vscode support --- .gitignore | 1 + build.sh | 2 +- misc/vscode/language-configuration.json | 28 ++ misc/vscode/onyx-0.0.1.vsix | Bin 0 -> 3577 bytes misc/vscode/package.json | 38 +++ misc/vscode/syntaxes/onyx.tmLanguage | 425 ++++++++++++++++++++++++ 6 files changed, 493 insertions(+), 1 deletion(-) create mode 100644 misc/vscode/language-configuration.json create mode 100644 misc/vscode/onyx-0.0.1.vsix create mode 100644 misc/vscode/package.json create mode 100644 misc/vscode/syntaxes/onyx.tmLanguage diff --git a/.gitignore b/.gitignore index 87b9b022..07641e0a 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ session.vim *.rdbg tmp/ .vimspector.json +.vscode/ \ No newline at end of file diff --git a/build.sh b/build.sh index 41bde8ac..1f30e66e 100755 --- 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 index 00000000..78b4387f --- /dev/null +++ b/misc/vscode/language-configuration.json @@ -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 index 0000000000000000000000000000000000000000..3b6f9e23c7bb70e3af11a51d04ff83d6460d2768 GIT binary patch literal 3577 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 + + + + name + Jai + scopeName + source.onyx + fileTypes + + onyx + + patterns + + + include + #comments + + + include + #types + + + include + #keywords + + + include + #functions_and_declarations + + + include + #strings + + + include + #string_escaped_char + + + repository + + block_comment + + name + comment.block.onyx + begin + /\* + end + \*/ + patterns + + + include + #block_comment + name + comment.block.onyx + + + + line_comment + + begin + (^[ \t]+)?((?=//)|(?=#!)) + beginCaptures + + 1 + + name + punctuation.whitespace.comment.leading.onyx + + + end + (?!\G) + patterns + + + begin + // + beginCaptures + + 0 + + name + punctuation.definition.comment.onyx + + + end + \n + name + comment.line.double-slash.onyx + patterns + + + match + (?>\\\s*\n) + name + punctuation.separator.continuation.onyx + + + + + begin + #! + beginCaptures + + 0 + + name + punctuation.definition.comment.onyx + + + end + \n + name + comment.line.double-slash.onyx + patterns + + + match + (?>\\\s*\n) + name + punctuation.separator.continuation.onyx + + + + + + comments + + patterns + + + include + #block_comment + + + match + \*/.*\n + name + invalid.illegal.stray-comment-end.onyx + + + + include + #line_comment + + + + keywords + + patterns + + + match + \b(if|else|elseif|for|while|defer|return|do)\b + name + keyword.control.onyx + + + match + \b(break|continue|fallthrough|switch|case)\b + name + keyword.control.onyx + + + match + \b(use|macro|package)\b + name + keyword.control.onyx + + + match + \b(it|it_index)\b + name + keyword.other.onyx + + + match + \b(null|null_proc|null_str|true|false)\b + name + constant.language.onyx + + + match + \b(\d(\d|_)*(.\d(\d|_)*)?)((e|E)(\+|-)?\d+)?[ijk]?\b + name + constant.numeric.onyx + + + match + \b((0b(0|1|_)+)|(0o(\d|_)+)|(0d(\d|_)+)|(0[xXh](\h|_)+))[ijk]?\b + name + constant.numeric.onyx + + + match + --- + name + constant.numeric.onyx + + + match + \b(struct|enum)\b + name + storage.type.onyx + + + match + \b(cast)\b + name + keyword.function.onyx + + + match + ([#]\s*\b([[:alpha:]_]+[[:alnum:]_]*)\b) + name + keyword.tag.onyx + + + match + @[^\s;]+ + name + keyword.tag.onyx + + + + types + + patterns + + + match + \b(struct|enum)\b(?:(\{)(\}))? + name + storage.type.onyx + + + match + \$\s*(\b([[:alpha:]_]+[[:alnum:]_]*)\b) + name + storage.type.onyx + + + + match + \b(i8|i16|i32|i64)\b + name + storage.type.onyx + + + match + \b(u8|u16|u32|u64)\b + name + storage.type.onyx + + + match + \b(f32|f64)\b + name + storage.type.onyx + + + match + \b(bool)\b + name + storage.type.onyx + + + match + \b(str|cstr)\b + name + storage.type.onyx + + + match + \b(i8x16|i16x8|i32x4|i64x2|f32x4|f64x2|v128)\b + name + storage.type.onyx + + + match + \b(void)\b + name + storage.type.onyx + + + + functions_and_declarations + + patterns + + + match + \b(sizeof|alignof|typeof)\b\s*\( + captures + + 1 + + name + keyword.function.onyx + + + + + match + (\b[[:alpha:]_]+[[:alnum:]_]*\b)\s*[!]?\s*[\(] + captures + + 1 + + name + support.function.onyx + + + + + match + \b(\b[[:alpha:]_]+[[:alnum:]_]*\b)\s*[:]\s*[:]\s*(struct|enum) + captures + + 1 + + name + meta.type.onyx entity.name.type.onyx + + 2 + + name + storage.type.onyx + + + + + match + \b(\b[[:alpha:]_]+[[:alnum:]_]*\b)\s*[:]\s*[:]\s*([#]\s*type) + captures + + 1 + + name + meta.type.onyx entity.name.type.onyx + + 2 + + name + keyword.tag.onyx + + + + + match + \b(\b[[:alpha:]_]+[[:alnum:]_]*\b)\s*[:]\s*[:]\s* + captures + + 1 + + name + meta.constant.onyx entity.name.type.onyx + + + + + + string_escaped_char + + patterns + + + match + \\(\\|[abefnrut"0]|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8}|[0-7]{3}) + name + constant.character.escape.onyx + + + match + \\. + name + invalid.illegal.unknown-escape.onyx + + + + strings + + patterns + + + begin + " + beginCaptures + + 0 + + name + punctuation.definition.string.begin.onyx + + + end + " + endCaptures + + 0 + + name + punctuation.definition.string.end.onyx + + + name + string.quoted.double.onyx + patterns + + + include + #string_placeholder + + + include + #string_escaped_char + + + + + + + + -- 2.25.1