From 8498ff32024c27632e97acd22573f6f2bd482e82 Mon Sep 17 00:00:00 2001 From: Hannah Date: Mon, 23 Mar 2026 17:22:50 -0400 Subject: [PATCH 1/3] feature: update highlighting, add routine support Update highlighting captures to match the current highlighting in the tree-sitter-objectscript repo. This is essentially the zed equivalent of neovim in terms of captures. Now, inc, mac, and int file extensions will map to the objectscript_routine grammar. --- extension.toml | 12 +- languages/objectscript/highlights.scm | 331 +++++++++++++----- languages/objectscript/injections.scm | 119 +++---- languages/objectscript_core/highlights.scm | 121 ------- .../config.toml | 6 +- languages/objectscript_routine/highlights.scm | 260 ++++++++++++++ .../indents.scm | 0 .../injections.scm | 20 +- languages/objectscript_udl/highlights.scm | 324 ++++++++++++----- languages/objectscript_udl/injections.scm | 119 +++---- scripts/lint_zed_captures.py | 2 + themes/solarized-dark.json | 69 +++- themes/solarized-light.json | 69 +++- themes/tokyonight-dark.json | 69 +++- themes/tokyonight-day.json | 62 ++-- themes/tokyonight-light.json | 69 +++- themes/tokyonight-moon.json | 62 ++-- 17 files changed, 1177 insertions(+), 537 deletions(-) delete mode 100644 languages/objectscript_core/highlights.scm rename languages/{objectscript_core => objectscript_routine}/config.toml (73%) create mode 100644 languages/objectscript_routine/highlights.scm rename languages/{objectscript_core => objectscript_routine}/indents.scm (100%) rename languages/{objectscript_core => objectscript_routine}/injections.scm (54%) diff --git a/extension.toml b/extension.toml index ea444d6..a63c969 100644 --- a/extension.toml +++ b/extension.toml @@ -1,6 +1,6 @@ id = "objectscript" name = "InterSystems ObjectScript" -version = "1.4.0" +version = "1.3.0" schema_version = 1 authors = ["Dave McCaldon ","Hannah Kimura "] description = "InterSystems IRIS ObjectScript Extension" @@ -8,17 +8,17 @@ repository = "https://github.com/intersystems/zed-objectscript" [grammars.objectscript_udl] repository = "https://github.com/intersystems/tree-sitter-objectscript" -commit = "7aa01969d0fea2e75dc69f2be2244b13d8269d6f" +commit = "a60196ecc4e6d492510a0eb0374e74020895b917" path = "udl" -[grammars.objectscript_core] +[grammars.objectscript_routine] repository = "https://github.com/intersystems/tree-sitter-objectscript" -commit = "7aa01969d0fea2e75dc69f2be2244b13d8269d6f" -path = "core" +commit = "a60196ecc4e6d492510a0eb0374e74020895b917" +path = "objectscript_routine" [grammars.objectscript] repository = "https://github.com/intersystems/tree-sitter-objectscript" -commit = "7aa01969d0fea2e75dc69f2be2244b13d8269d6f" +commit = "a60196ecc4e6d492510a0eb0374e74020895b917" path = "objectscript" [grammars.xml] diff --git a/languages/objectscript/highlights.scm b/languages/objectscript/highlights.scm index f854900..95e6461 100644 --- a/languages/objectscript/highlights.scm +++ b/languages/objectscript/highlights.scm @@ -1,25 +1,64 @@ (pattern_expression) @string.regex -(numeric_literal) @number + +[ + (json_number_literal) + (numeric_literal) +] @number + +[ + (json_boolean_literal) + (json_null_literal) +] @boolean + +(json_object_literal_pair + (json_string_literal) @string.special) + +[ + (json_string_literal) + (string_literal) +] @string + (string_literal) @string -(keyword_pound_pound_class) @keyword -(keyword_pound_pound_super) @keyword +[ + (keyword_pound_pound_super) + (keyword_pound_pound_class) +] @keyword + (system_defined_variable) @variable.special -(system_defined_function) @variable.special -(sql_field_modifier) @variable.special -(property_name) @property +(system_defined_function) @function.builtin +(sql_field_modifier) @keyword + +[ + (property_name) + (parameter_name) + (sql_field_identifier) +] @variant + (method_name) @function -(parameter_name) @property -(class_name) @type -(macro) @constant - -(routine_ref) @variable -(sql_field_identifier) @variable -(lvn) @variable -(gvn) @variable -(ssvn) @variable -(instance_variable) @variable -(objectscript_identifier) @variable +[ + (routine_name) + (class_name) +] @type + +[ + (macro_function) + (macro_constant) +] @constant + +[ + (lvn) + (gvn) + (ssvn) + (objectscript_identifier) +] @variable + +(namespace) @namespace + +[ + (objectscript_identifier_special) + (instance_variable) +] @variant (method_arg) @variable.parameter ; I didn't include ( or ) in this, because they are often grouped @@ -29,7 +68,6 @@ "_" "," ":" - "." ".." "..." "'[" @@ -48,7 +86,7 @@ "|" "||" "$$" -] @punctuation +] @punctuation.delimiter [ "'&" @@ -66,40 +104,128 @@ "=" ">" ">=" - "@" + "@" "*" "**" "'" "'!" "'?" - "!" + "!" "?" ] @operator -(json_string_literal) @string -(json_boolean_literal) @boolean -(json_number_literal) @number -(json_null_literal) @string (bracket) @punctuation.bracket ;; inherits: objectscript_expr -(locktype) @variable - -(macro_arg) @variable +(macro_arg) @variant (macro_value) @constant.builtin -keyword: (_) @keyword +(macro_def) @preproc -(embedded_js_special_case_complete) @punctuation.special -(embedded_sql_marker) @punctuation.special -(embedded_sql_reverse_marker) @punctuation.special -(html_marker) @punctuation.special -(html_marker_reversed) @punctuation.special +[ + (keyword_for) + (keyword_while) + (keyword_continue) + (keyword_quit) + (keyword_throw) + (keyword_if) + (keyword_elseif) + (keyword_else) + (keyword_oldelse) + (keyword_try) + (keyword_catch) + (keyword_break) + (keyword_return) + (keyword_zbreak) + (keyword_debug) + (keyword_trace) + (keyword_step) + (keyword_nostep) + (keyword_stepmethod) + (keyword_errortrap) + (keyword_interrupt) + (keyword_normal) + (keyword_zkill) + (keyword_zn) + (keyword_zsu) + (keyword_ztrap) + (keyword_zz) + (keyword_print) + (keyword_zprint) + (keyword_set) + (keyword_write) + (keyword_zwrite) + (keyword_do) + (keyword_for) + (keyword_while) + (keyword_kill) + (keyword_lock) + (keyword_read) + (keyword_open) + (keyword_close) + (keyword_use) + (keyword_new) + (keyword_job) + (keyword_merge) + (keyword_goto) + (keyword_halt_or_hang) + (keyword_halt) + (keyword_hang) + (keyword_tcommit) + (keyword_trollback) + (keyword_tstart) + (keyword_xecute) + (keyword_view) +] @type.builtin -(attribute) @attribute +[ + (keyword_pound_define) + (keyword_pound_def1arg) + (keyword_pound_if) + (keyword_pound_elseif) + (keyword_pound_else) + (keyword_pound_endif) + (keyword_pound_ifdef) + (keyword_pound_ifndef) + (keyword_dim) + (keyword_pound_import) + (keyword_pound_include) + (keyword_pound_delay) + (locktype) +] @preproc + +[ + (keyword_as) + (keyword_of) + (keyword_public) + (keyword_private) + (keyword_methodimpl) + (open_keywords) + (use_keywords) + (close_parameter_option_value) + (keyword_clear) + (keyword_on) + (keyword_off) + (keyword_all) + (keyword_ext) + (keyword_stepmethod) + (keyword_destruct) +] @keyword + +[ + (keyword_embedded_html) + (keyword_embedded_xml) + (keyword_embedded_sql_amp) + (keyword_embedded_sql_hash) + (keyword_js) +] @embedded -(open_keywords) @attribute -(use_keywords) @attribute -(close_parameter_option_value) @attribute +[ + (embedded_js_special_case_complete) + (embedded_sql_marker) + (embedded_sql_reverse_marker) + (html_marker) + (html_marker_reversed) +] @punctuation.special [ (line_comment_1) @@ -109,58 +235,99 @@ keyword: (_) @keyword (block_comment) ] @comment -(tag) @tag +(tag) @label +; case where comments get eaten by scanner, this will still +; highlight just the comments of these commands as comments [ - "--" - ";" - "//" - "#;" - "##;" - "$" -] @punctuation + (command_quit) + (command_else) + (command_continue) + (command_if) + (command_do) + (command_for) + (command_lock) + (command_return) + (command_halt_or_hang) + (command_break) +] @comment -;; inherits: objectscript_core ; ------------------ UDL ------------------- +(iris_username) @keyword.directive [ - (method_keyword_codemode_expression) - (call_method_keyword) - (method_keyword) - (class_keywords) - (query_keywords) - (trigger_keyword) - (method_keyword_language) - (relationship_keyword) - (foreignkey_keyword) - (parameter_keyword) - (projection_keyword) - (index_keyword) - (index_keyword_extent) - (xdata_keyword) - (xdata_keyword_mimetype) - (property_keyword) + (keyword_import) + (keyword_include) + (keyword_includegenerator) + (keyword_method) + (keyword_classmethod) + (keyword_class) + (keyword_extends) + (keyword_property) + (keyword_relationship) + (keyword_foreignkey) + (keyword_parameter) + (keyword_projection) + (keyword_index) + (keyword_query) + (keyword_trigger) + (keyword_xdata) + (keyword_storage) ] @attribute +[ + (method_keyword_codemode_expression) + (call_method_keyword) + (method_keyword) + (class_keywords) + (query_keywords) + (trigger_keyword) + (method_keyword_language) + (relationship_keyword) + (foreignkey_keyword) + (parameter_keyword) + (projection_keyword) + (index_keyword) + (index_keyword_extent) + (xdata_keyword) + (xdata_keyword_mimetype) + (property_keyword) + (keyword_not) + (keyword_references) + (keyword_byref) + (keyword_output) +] @type.builtin + (documatic_line) @comment.doc -(query_name) @property -(property_name) @property -(relationship_name) @property -(foreignkey_name) @property -(parameter_name) @property -(projection_name) @property -(index_name) @property -(xdata_name) @property -(storage_name) @property - -(return_type) @type.builtin -(typename) @type -(parameter_type) @type.builtin -(index_type) @type.builtin -(projection_type) @type.builtin -(property_type) @type.builtin -(index_property_type) @type.builtin - -(identifier) @variable +[ + (query_name) + (trigger_name) + (relationship_name) + (foreignkey_name) + (parameter_name) + (projection_name) + (index_name) + (xdata_name) + (storage_name) + (xml_identifier) + (index_property) +] @variant + +[ + (return_type) + (keyword_list) + (keyword_array) + (parameter_type) + (index_type) + (projection_type) + (property_type) + (index_property_type) + (typename) +] @type.builtin + +; routine +(routine_type) @type.builtin + +(routine) @attribute \ No newline at end of file diff --git a/languages/objectscript/injections.scm b/languages/objectscript/injections.scm index e14e5a0..5e48fee 100644 --- a/languages/objectscript/injections.scm +++ b/languages/objectscript/injections.scm @@ -1,28 +1,22 @@ -; Core grammar injections (embedded_html - (angled_bracket_fenced_text) @injection.content - (#set! injection.language "html") -) + (angled_bracket_fenced_text) @injection.content + (#set! injection.language "html")) (embedded_sql (_ - (paren_fenced_text) @injection.content - ) - (#set! injection.language "sql") -) + (paren_fenced_text) @injection.content) + (#set! injection.language "sql")) - (embedded_js +(embedded_js [ (angled_bracket_fenced_text) (embedded_js_special_case) ] @injection.content (#set! injection.language "javascript")) - (embedded_xml - (angled_bracket_fenced_text) @injection.content - (#set! injection.language "xml") -) + (angled_bracket_fenced_text) @injection.content + (#set! injection.language "xml")) ([ (line_comment_1) @@ -32,65 +26,56 @@ ] @injection.content (#set! injection.language "comment")) - - -; UDL injections -;; Keywords, one of type language = "python", none of type codemode +; Keywords, one of type language = "python", none of type codemode ; External method body injection based on [ Language = ... ] (method_definition (external_method_keywords (method_keyword_language - (rhs) @lang)) + (typename) @_lang)) (external_method_body_content) @injection.content (#set! injection.include-children "true") - (#match? @lang "^[Pp][Yy][Tt][Hh][Oo][Nn]$") + (#match? @_lang "^[Pp][Yy][Tt][Hh][Oo][Nn]$") (#set! injection.language "python")) (method_definition (external_method_keywords (method_keyword_language - (rhs) @lang)) + (typename) @_lang)) (external_method_body_content) @injection.content (#set! injection.include-children "true") - (#match? @lang "^[Tt][Ss][Qq][Ll]$") + (#match? @_lang "^[Tt][Ss][Qq][Ll]$") (#set! injection.language "tsql")) (method_definition (external_method_keywords (method_keyword_language - (rhs) @lang)) + (typename) @_lang)) (external_method_body_content) @injection.content (#set! injection.include-children "true") - (#match? @lang "^[Ii][Ss][Pp][Ll]$") + (#match? @_lang "^[Ii][Ss][Pp][Ll]$") (#set! injection.language "ispl")) - - -;; External trigger with python body -( - (trigger - (external_trigger - (trigger_keywords - (method_keyword_language - (rhs) @lang)) - (external_method_body_content) @injection.content)) +; External trigger with python body +((trigger + (external_trigger + (trigger_keywords + (method_keyword_language + (typename) @_lang)) + (external_method_body_content) @injection.content)) (#set! injection.include-children "true") - (#match? @lang "^[Pp][Yy][Tt][Hh][Oo][Nn]$") - (#set! injection.language "python") -) - -;; External trigger with TSQL body -( - (trigger - (external_trigger - (trigger_keywords - (method_keyword_language - (rhs) @lang)) - (external_method_body_content) @injection.content)) + (#match? @_lang "^[Pp][Yy][Tt][Hh][Oo][Nn]$") + (#set! injection.language "python")) + +; External trigger with TSQL body +((trigger + (external_trigger + (trigger_keywords + (method_keyword_language + (typename) @_lang)) + (external_method_body_content) @injection.content)) (#set! injection.include-children "true") - (#match? @lang "^[Tt][Ss][Qq][Ll]$") - (#set! injection.language "tsql") -) + (#match? @_lang "^[Tt][Ss][Qq][Ll]$") + (#set! injection.language "tsql")) ; A query must be of type %SQLQuery to have an SQL body, otherwise the body ; is empty @@ -102,75 +87,80 @@ (query_body (query_body_content) @injection.content) (#set! injection.language "sql") - (#set! injection.include-children "true") -) + (#set! injection.include-children "true")) ; XDATA blocks: ; - xdata_any requires a keyword list that includes MimeType ; - xdata_xml allows an optional keyword list and defaults to XML - ; ---------------------------- ; XDATA injections (MimeType) ; ---------------------------- - ; text/markdown (xdata (xdata_any (xdata_keywords - (xdata_keyword_mimetype (rhs) @mt)) + (xdata_keyword_mimetype + (typename) @_mt)) (external_method_body_content) @injection.content) (#set! injection.include-children "true") - (#match? @mt "^\"?text/markdown\"?$") + (#match? @_mt "^\"?text/markdown\"?$") (#set! injection.language "markdown")) ; XML MimeTypes (xdata (xdata_any (xdata_keywords - (xdata_keyword_mimetype (rhs) @mt)) + (xdata_keyword_mimetype + (typename) @_mt)) (external_method_body_content) @injection.content) (#set! injection.include-children "true") - (#match? @mt "^\"?([Tt][Ee][Xx][Tt]|[Aa][Pp][Pp][Ll][Ii][Cc][Aa][Tt][Ii][Oo][Nn])/[Xx][Mm][Ll]\"?$") + (#match? @_mt + "^\"?([Tt][Ee][Xx][Tt]|[Aa][Pp][Pp][Ll][Ii][Cc][Aa][Tt][Ii][Oo][Nn])/[Xx][Mm][Ll]\"?$") (#set! injection.language "xml")) ; text/html (xdata (xdata_any (xdata_keywords - (xdata_keyword_mimetype (rhs) @mt)) + (xdata_keyword_mimetype + (typename) @_mt)) (external_method_body_content) @injection.content) (#set! injection.include-children "true") - (#match? @mt "^\"?text/html\"?$") + (#match? @_mt "^\"?text/html\"?$") (#set! injection.language "html")) ; application/json (xdata (xdata_any (xdata_keywords - (xdata_keyword_mimetype (rhs) @mt)) + (xdata_keyword_mimetype + (typename) @_mt)) (external_method_body_content) @injection.content) (#set! injection.include-children "true") - (#match? @mt "^\"?application/json\"?$") + (#match? @_mt "^\"?application/json\"?$") (#set! injection.language "json")) ; text/yaml or application/yaml (xdata (xdata_any (xdata_keywords - (xdata_keyword_mimetype (rhs) @mt)) + (xdata_keyword_mimetype + (typename) @_mt)) (external_method_body_content) @injection.content) (#set! injection.include-children "true") - (#match? @mt "^\"?([Tt][Ee][Xx][Tt]|[Aa][Pp][Pp][Ll][Ii][Cc][Aa][Tt][Ii][Oo][Nn])/[Yy][Aa][Mm][Ll]\"?$") + (#match? @_mt + "^\"?([Tt][Ee][Xx][Tt]|[Aa][Pp][Pp][Ll][Ii][Cc][Aa][Tt][Ii][Oo][Nn])/[Yy][Aa][Mm][Ll]\"?$") (#set! injection.language "yaml")) ; text/css (xdata (xdata_any (xdata_keywords - (xdata_keyword_mimetype (rhs) @mt)) + (xdata_keyword_mimetype + (typename) @_mt)) (external_method_body_content) @injection.content) (#set! injection.include-children "true") - (#match? @mt "^\"?text/css\"?$") + (#match? @_mt "^\"?text/css\"?$") (#set! injection.language "css")) ; ----------------------------------------- @@ -183,7 +173,6 @@ (#set! injection.include-children "true") (#set! injection.language "xml")) - ; Storage definition is XML (storage (storage_body diff --git a/languages/objectscript_core/highlights.scm b/languages/objectscript_core/highlights.scm deleted file mode 100644 index 5d33712..0000000 --- a/languages/objectscript_core/highlights.scm +++ /dev/null @@ -1,121 +0,0 @@ -(pattern_expression) @string.regex -(numeric_literal) @number -(string_literal) @string - -(keyword_pound_pound_class) @keyword -(keyword_pound_pound_super) @keyword -(system_defined_variable) @variable.special -(system_defined_function) @variable.special -(sql_field_modifier) @variable.special -(property_name) @property -(method_name) @function -(parameter_name) @property -(class_name) @type -(macro) @constant - -(routine_ref) @variable -(sql_field_identifier) @variable -(lvn) @variable -(gvn) @variable -(ssvn) @variable -(instance_variable) @variable -(objectscript_identifier) @variable - -(method_arg) @variable.parameter -; I didn't include ( or ) in this, because they are often grouped -; as part of a sequence that gets turned into a single token, so they -; don't get matched, and one ends up getting colored differently than the other. -[ - "_" - "," - ":" - "." - ".." - "..." - "'[" - "']" - "']]" - "\"" - "\"\"" - "[" - "]" - "]]" - "{" - "}" - "/" - "\\" - "#" - "|" - "||" - "$$" -] @punctuation - -[ - "'&" - "&" - "&&" - "'<" - "'=" - "'>" - "^" - "-" - "^$" - "+" - "<" - "<=" - "=" - ">" - ">=" - "@" - "*" - "**" - "'" - "'!" - "'?" - "!" - "?" -] @operator - -(json_string_literal) @string -(json_boolean_literal) @boolean -(json_number_literal) @number -(json_null_literal) @string -(bracket) @punctuation.bracket - -;; inherits: objectscript_expr -(locktype) @variable - -(macro_arg) @variable -(macro_value) @constant.builtin -keyword: (_) @keyword - -(embedded_js_special_case_complete) @punctuation.special -(embedded_sql_marker) @punctuation.special -(embedded_sql_reverse_marker) @punctuation.special -(html_marker) @punctuation.special -(html_marker_reversed) @punctuation.special - -(attribute) @attribute - -(open_keywords) @attribute -(use_keywords) @attribute -(close_parameter_option_value) @attribute - -[ - (line_comment_1) - (line_comment_2) - (line_comment_3) - (line_comment_4) - (block_comment) -] @comment - -(tag) @tag - -[ - "--" - ";" - "//" - "#;" - "##;" - "$" -] @punctuation diff --git a/languages/objectscript_core/config.toml b/languages/objectscript_routine/config.toml similarity index 73% rename from languages/objectscript_core/config.toml rename to languages/objectscript_routine/config.toml index 76632a6..72d6389 100644 --- a/languages/objectscript_core/config.toml +++ b/languages/objectscript_routine/config.toml @@ -1,6 +1,6 @@ -name = "objectscript_core" -grammar = "objectscript_core" -path_suffixes = ["inc", "mac"] +name = "objectscript_routine" +grammar = "objectscript_routine" +path_suffixes = ["inc", "mac", "int"] line_comments = ["// ", ";", ";;", "#;"] autoclose_before = ";:.,=}])>` \n\t\"" brackets = [ diff --git a/languages/objectscript_routine/highlights.scm b/languages/objectscript_routine/highlights.scm new file mode 100644 index 0000000..1e7bb09 --- /dev/null +++ b/languages/objectscript_routine/highlights.scm @@ -0,0 +1,260 @@ +(pattern_expression) @string.regex + +[ + (json_number_literal) + (numeric_literal) +] @number + +[ + (json_boolean_literal) + (json_null_literal) +] @boolean + +(json_object_literal_pair + (json_string_literal) @string.special) + +[ + (json_string_literal) + (string_literal) +] @string + +(string_literal) @string + +[ + (keyword_pound_pound_super) + (keyword_pound_pound_class) +] @keyword + +(system_defined_variable) @variable.special +(system_defined_function) @function.builtin +(sql_field_modifier) @keyword + +[ + (property_name) + (parameter_name) + (sql_field_identifier) +] @variant + +(method_name) @function +[ + (routine_name) + (class_name) +] @type + +[ + (macro_function) + (macro_constant) +] @constant + +[ + (lvn) + (gvn) + (ssvn) + (objectscript_identifier) +] @variable + +(namespace) @namespace + +[ + (objectscript_identifier_special) + (instance_variable) +] @variant + +(method_arg) @variable.parameter +; I didn't include ( or ) in this, because they are often grouped +; as part of a sequence that gets turned into a single token, so they +; don't get matched, and one ends up getting colored differently than the other. +[ + "_" + "," + ":" + ".." + "..." + "'[" + "']" + "']]" + "\"" + "\"\"" + "[" + "]" + "]]" + "{" + "}" + "/" + "\\" + "#" + "|" + "||" + "$$" +] @punctuation.delimiter + +[ + "'&" + "&" + "&&" + "'<" + "'=" + "'>" + "^" + "-" + "^$" + "+" + "<" + "<=" + "=" + ">" + ">=" + "@" + "*" + "**" + "'" + "'!" + "'?" + "!" + "?" +] @operator + +(bracket) @punctuation.bracket + +; core +(macro_arg) @variant +(macro_value) @constant.builtin +(macro_def) @preproc + +[ + (keyword_for) + (keyword_while) + (keyword_continue) + (keyword_quit) + (keyword_throw) + (keyword_if) + (keyword_elseif) + (keyword_else) + (keyword_oldelse) + (keyword_try) + (keyword_catch) + (keyword_break) + (keyword_return) + (keyword_zbreak) + (keyword_debug) + (keyword_trace) + (keyword_step) + (keyword_nostep) + (keyword_stepmethod) + (keyword_errortrap) + (keyword_interrupt) + (keyword_normal) + (keyword_zkill) + (keyword_zn) + (keyword_zsu) + (keyword_ztrap) + (keyword_zz) + (keyword_print) + (keyword_zprint) + (keyword_set) + (keyword_write) + (keyword_zwrite) + (keyword_do) + (keyword_for) + (keyword_while) + (keyword_kill) + (keyword_lock) + (keyword_read) + (keyword_open) + (keyword_close) + (keyword_use) + (keyword_new) + (keyword_job) + (keyword_merge) + (keyword_goto) + (keyword_halt_or_hang) + (keyword_halt) + (keyword_hang) + (keyword_tcommit) + (keyword_trollback) + (keyword_tstart) + (keyword_xecute) + (keyword_view) +] @type.builtin + +[ + (keyword_pound_define) + (keyword_pound_def1arg) + (keyword_pound_if) + (keyword_pound_elseif) + (keyword_pound_else) + (keyword_pound_endif) + (keyword_pound_ifdef) + (keyword_pound_ifndef) + (keyword_dim) + (keyword_pound_import) + (keyword_pound_include) + (keyword_pound_delay) + (locktype) +] @preproc + +[ + (keyword_as) + (keyword_of) + (keyword_public) + (keyword_private) + (keyword_methodimpl) + (open_keywords) + (use_keywords) + (close_parameter_option_value) + (keyword_clear) + (keyword_on) + (keyword_off) + (keyword_all) + (keyword_ext) + (keyword_stepmethod) + (keyword_destruct) +] @keyword + +[ + (keyword_embedded_html) + (keyword_embedded_xml) + (keyword_embedded_sql_amp) + (keyword_embedded_sql_hash) + (keyword_js) +] @embedded + +[ + (embedded_js_special_case_complete) + (embedded_sql_marker) + (embedded_sql_reverse_marker) + (html_marker) + (html_marker_reversed) +] @punctuation.special + +[ + (line_comment_1) + (line_comment_2) + (line_comment_3) + (line_comment_4) + (block_comment) +] @comment + +(tag) @label + +; case where comments get eaten by scanner, this will still +; highlight just the comments of these commands as comments +[ + (command_quit) + (command_else) + (command_continue) + (command_if) + (command_do) + (command_for) + (command_lock) + (command_return) + (command_halt_or_hang) + (command_break) +] @comment + +;routine +(routine_type) @type.builtin + +(documatic_line) @comment.doc + +(routine) @attribute \ No newline at end of file diff --git a/languages/objectscript_core/indents.scm b/languages/objectscript_routine/indents.scm similarity index 100% rename from languages/objectscript_core/indents.scm rename to languages/objectscript_routine/indents.scm diff --git a/languages/objectscript_core/injections.scm b/languages/objectscript_routine/injections.scm similarity index 54% rename from languages/objectscript_core/injections.scm rename to languages/objectscript_routine/injections.scm index 5262468..c6bfab6 100644 --- a/languages/objectscript_core/injections.scm +++ b/languages/objectscript_routine/injections.scm @@ -1,27 +1,22 @@ (embedded_html - (angled_bracket_fenced_text) @injection.content - (#set! injection.language "html") -) + (angled_bracket_fenced_text) @injection.content + (#set! injection.language "html")) (embedded_sql (_ - (paren_fenced_text) @injection.content - ) - (#set! injection.language "sql") -) + (paren_fenced_text) @injection.content) + (#set! injection.language "sql")) - (embedded_js +(embedded_js [ (angled_bracket_fenced_text) (embedded_js_special_case) ] @injection.content (#set! injection.language "javascript")) - (embedded_xml - (angled_bracket_fenced_text) @injection.content - (#set! injection.language "xml") -) + (angled_bracket_fenced_text) @injection.content + (#set! injection.language "xml")) ([ (line_comment_1) @@ -30,4 +25,3 @@ (block_comment) ] @injection.content (#set! injection.language "comment")) - diff --git a/languages/objectscript_udl/highlights.scm b/languages/objectscript_udl/highlights.scm index 72de47a..b2674dc 100644 --- a/languages/objectscript_udl/highlights.scm +++ b/languages/objectscript_udl/highlights.scm @@ -1,35 +1,73 @@ (pattern_expression) @string.regex -(numeric_literal) @number + +[ + (json_number_literal) + (numeric_literal) +] @number + +[ + (json_boolean_literal) + (json_null_literal) +] @boolean + +(json_object_literal_pair + (json_string_literal) @string.special) + +[ + (json_string_literal) + (string_literal) +] @string + (string_literal) @string -(keyword_pound_pound_class) @keyword -(keyword_pound_pound_super) @keyword +[ + (keyword_pound_pound_super) + (keyword_pound_pound_class) +] @keyword + (system_defined_variable) @variable.special -(system_defined_function) @variable.special -(sql_field_modifier) @variable.special -(property_name) @property +(system_defined_function) @function.builtin +(sql_field_modifier) @keyword + +[ + (property_name) + (parameter_name) + (sql_field_identifier) +] @variant + (method_name) @function -(parameter_name) @property -(class_name) @type -(macro) @constant - -(routine_ref) @variable -(sql_field_identifier) @variable -(lvn) @variable -(gvn) @variable -(ssvn) @variable -(instance_variable) @variable -(objectscript_identifier) @variable +[ + (routine_name) + (class_name) +] @type + +[ + (macro_function) + (macro_constant) +] @constant + +[ + (lvn) + (gvn) + (ssvn) + (objectscript_identifier) +] @variable + +(namespace) @namespace + +[ + (objectscript_identifier_special) + (instance_variable) +] @variant (method_arg) @variable.parameter -; I didn't include '(' or ')' in this, because they are often grouped +; I didn't include ( or ) in this, because they are often grouped ; as part of a sequence that gets turned into a single token, so they ; don't get matched, and one ends up getting colored differently than the other. [ "_" "," ":" - "." ".." "..." "'[" @@ -48,13 +86,7 @@ "|" "||" "$$" - "--" - ";" - "//" - "#;" - "##;" - "$" -] @punctuation +] @punctuation.delimiter [ "'&" @@ -82,28 +114,118 @@ "?" ] @operator -(json_string_literal) @string -(json_boolean_literal) @boolean -(json_number_literal) @number -(json_null_literal) @string (bracket) @punctuation.bracket -(locktype) @variable -(macro_arg) @variable +;; inherits: objectscript_expr +(macro_arg) @variant (macro_value) @constant.builtin -keyword: (_) @keyword +(macro_def) @preproc -(embedded_js_special_case_complete) @punctuation.special -(embedded_sql_marker) @punctuation.special -(embedded_sql_reverse_marker) @punctuation.special -(html_marker) @punctuation.special -(html_marker_reversed) @punctuation.special +[ + (keyword_for) + (keyword_while) + (keyword_continue) + (keyword_quit) + (keyword_throw) + (keyword_if) + (keyword_elseif) + (keyword_else) + (keyword_oldelse) + (keyword_try) + (keyword_catch) + (keyword_break) + (keyword_return) + (keyword_zbreak) + (keyword_debug) + (keyword_trace) + (keyword_step) + (keyword_nostep) + (keyword_stepmethod) + (keyword_errortrap) + (keyword_interrupt) + (keyword_normal) + (keyword_zkill) + (keyword_zn) + (keyword_zsu) + (keyword_ztrap) + (keyword_zz) + (keyword_print) + (keyword_zprint) + (keyword_set) + (keyword_write) + (keyword_zwrite) + (keyword_do) + (keyword_for) + (keyword_while) + (keyword_kill) + (keyword_lock) + (keyword_read) + (keyword_open) + (keyword_close) + (keyword_use) + (keyword_new) + (keyword_job) + (keyword_merge) + (keyword_goto) + (keyword_halt_or_hang) + (keyword_halt) + (keyword_hang) + (keyword_tcommit) + (keyword_trollback) + (keyword_tstart) + (keyword_xecute) + (keyword_view) +] @type.builtin -(attribute) @attribute +[ + (keyword_pound_define) + (keyword_pound_def1arg) + (keyword_pound_if) + (keyword_pound_elseif) + (keyword_pound_else) + (keyword_pound_endif) + (keyword_pound_ifdef) + (keyword_pound_ifndef) + (keyword_dim) + (keyword_pound_import) + (keyword_pound_include) + (keyword_pound_delay) + (locktype) +] @preproc + +[ + (keyword_as) + (keyword_of) + (keyword_public) + (keyword_private) + (keyword_methodimpl) + (open_keywords) + (use_keywords) + (close_parameter_option_value) + (keyword_clear) + (keyword_on) + (keyword_off) + (keyword_all) + (keyword_ext) + (keyword_stepmethod) + (keyword_destruct) +] @keyword + +[ + (keyword_embedded_html) + (keyword_embedded_xml) + (keyword_embedded_sql_amp) + (keyword_embedded_sql_hash) + (keyword_js) +] @embedded -(open_keywords) @attribute -(use_keywords) @attribute -(close_parameter_option_value) @attribute +[ + (embedded_js_special_case_complete) + (embedded_sql_marker) + (embedded_sql_reverse_marker) + (html_marker) + (html_marker_reversed) +] @punctuation.special [ (line_comment_1) @@ -113,48 +235,94 @@ keyword: (_) @keyword (block_comment) ] @comment -(tag) @tag +(tag) @label + +; case where comments get eaten by scanner, this will still +; highlight just the comments of these commands as comments +[ + (command_quit) + (command_else) + (command_continue) + (command_if) + (command_do) + (command_for) + (command_lock) + (command_return) + (command_halt_or_hang) + (command_break) +] @comment ; ------------------ UDL ------------------- +(iris_username) @keyword.directive [ - (method_keyword_codemode_expression) - (call_method_keyword) - (method_keyword) - (class_keywords) - (query_keywords) - (trigger_keyword) - (method_keyword_language) - (relationship_keyword) - (foreignkey_keyword) - (parameter_keyword) - (projection_keyword) - (index_keyword) - (index_keyword_extent) - (xdata_keyword) - (xdata_keyword_mimetype) - (property_keyword) + (keyword_import) + (keyword_include) + (keyword_includegenerator) + (keyword_method) + (keyword_classmethod) + (keyword_class) + (keyword_extends) + (keyword_property) + (keyword_relationship) + (keyword_foreignkey) + (keyword_parameter) + (keyword_projection) + (keyword_index) + (keyword_query) + (keyword_trigger) + (keyword_xdata) + (keyword_storage) ] @attribute +[ + (method_keyword_codemode_expression) + (call_method_keyword) + (method_keyword) + (class_keywords) + (query_keywords) + (trigger_keyword) + (method_keyword_language) + (relationship_keyword) + (foreignkey_keyword) + (parameter_keyword) + (projection_keyword) + (index_keyword) + (index_keyword_extent) + (xdata_keyword) + (xdata_keyword_mimetype) + (property_keyword) + (keyword_not) + (keyword_references) + (keyword_byref) + (keyword_output) +] @type.builtin + (documatic_line) @comment.doc -(query_name) @property -(property_name) @property -(relationship_name) @property -(foreignkey_name) @property -(parameter_name) @property -(projection_name) @property -(index_name) @property -(xdata_name) @property -(storage_name) @property - -(return_type) @type.builtin -(typename) @type -(parameter_type) @type.builtin -(index_type) @type.builtin -(projection_type) @type.builtin -(property_type) @type.builtin -(index_property_type) @type.builtin - -(identifier) @variable +[ + (query_name) + (trigger_name) + (relationship_name) + (foreignkey_name) + (parameter_name) + (projection_name) + (index_name) + (xdata_name) + (storage_name) + (xml_identifier) + (index_property) +] @variant + +[ + (return_type) + (keyword_list) + (keyword_array) + (parameter_type) + (index_type) + (projection_type) + (property_type) + (index_property_type) + (typename) +] @type.builtin diff --git a/languages/objectscript_udl/injections.scm b/languages/objectscript_udl/injections.scm index ff3f9e7..5e48fee 100644 --- a/languages/objectscript_udl/injections.scm +++ b/languages/objectscript_udl/injections.scm @@ -1,28 +1,22 @@ -; Core grammar injections (embedded_html - (angled_bracket_fenced_text) @injection.content - (#set! injection.language "html") -) + (angled_bracket_fenced_text) @injection.content + (#set! injection.language "html")) (embedded_sql (_ - (paren_fenced_text) @injection.content - ) - (#set! injection.language "sql") -) + (paren_fenced_text) @injection.content) + (#set! injection.language "sql")) - (embedded_js +(embedded_js [ (angled_bracket_fenced_text) (embedded_js_special_case) ] @injection.content (#set! injection.language "javascript")) - (embedded_xml - (angled_bracket_fenced_text) @injection.content - (#set! injection.language "xml") -) + (angled_bracket_fenced_text) @injection.content + (#set! injection.language "xml")) ([ (line_comment_1) @@ -32,65 +26,56 @@ ] @injection.content (#set! injection.language "comment")) - - -; UDL grammar injections -;; Keywords, one of type language = "python", none of type codemode +; Keywords, one of type language = "python", none of type codemode ; External method body injection based on [ Language = ... ] (method_definition (external_method_keywords (method_keyword_language - (rhs) @lang)) + (typename) @_lang)) (external_method_body_content) @injection.content (#set! injection.include-children "true") - (#match? @lang "^[Pp][Yy][Tt][Hh][Oo][Nn]$") + (#match? @_lang "^[Pp][Yy][Tt][Hh][Oo][Nn]$") (#set! injection.language "python")) (method_definition (external_method_keywords (method_keyword_language - (rhs) @lang)) + (typename) @_lang)) (external_method_body_content) @injection.content (#set! injection.include-children "true") - (#match? @lang "^[Tt][Ss][Qq][Ll]$") + (#match? @_lang "^[Tt][Ss][Qq][Ll]$") (#set! injection.language "tsql")) (method_definition (external_method_keywords (method_keyword_language - (rhs) @lang)) + (typename) @_lang)) (external_method_body_content) @injection.content (#set! injection.include-children "true") - (#match? @lang "^[Ii][Ss][Pp][Ll]$") + (#match? @_lang "^[Ii][Ss][Pp][Ll]$") (#set! injection.language "ispl")) - - -;; External trigger with python body -( - (trigger - (external_trigger - (trigger_keywords - (method_keyword_language - (rhs) @lang)) - (external_method_body_content) @injection.content)) +; External trigger with python body +((trigger + (external_trigger + (trigger_keywords + (method_keyword_language + (typename) @_lang)) + (external_method_body_content) @injection.content)) (#set! injection.include-children "true") - (#match? @lang "^[Pp][Yy][Tt][Hh][Oo][Nn]$") - (#set! injection.language "python") -) - -;; External trigger with TSQL body -( - (trigger - (external_trigger - (trigger_keywords - (method_keyword_language - (rhs) @lang)) - (external_method_body_content) @injection.content)) + (#match? @_lang "^[Pp][Yy][Tt][Hh][Oo][Nn]$") + (#set! injection.language "python")) + +; External trigger with TSQL body +((trigger + (external_trigger + (trigger_keywords + (method_keyword_language + (typename) @_lang)) + (external_method_body_content) @injection.content)) (#set! injection.include-children "true") - (#match? @lang "^[Tt][Ss][Qq][Ll]$") - (#set! injection.language "tsql") -) + (#match? @_lang "^[Tt][Ss][Qq][Ll]$") + (#set! injection.language "tsql")) ; A query must be of type %SQLQuery to have an SQL body, otherwise the body ; is empty @@ -102,75 +87,80 @@ (query_body (query_body_content) @injection.content) (#set! injection.language "sql") - (#set! injection.include-children "true") -) + (#set! injection.include-children "true")) ; XDATA blocks: ; - xdata_any requires a keyword list that includes MimeType ; - xdata_xml allows an optional keyword list and defaults to XML - ; ---------------------------- ; XDATA injections (MimeType) ; ---------------------------- - ; text/markdown (xdata (xdata_any (xdata_keywords - (xdata_keyword_mimetype (rhs) @mt)) + (xdata_keyword_mimetype + (typename) @_mt)) (external_method_body_content) @injection.content) (#set! injection.include-children "true") - (#match? @mt "^\"?text/markdown\"?$") + (#match? @_mt "^\"?text/markdown\"?$") (#set! injection.language "markdown")) ; XML MimeTypes (xdata (xdata_any (xdata_keywords - (xdata_keyword_mimetype (rhs) @mt)) + (xdata_keyword_mimetype + (typename) @_mt)) (external_method_body_content) @injection.content) (#set! injection.include-children "true") - (#match? @mt "^\"?([Tt][Ee][Xx][Tt]|[Aa][Pp][Pp][Ll][Ii][Cc][Aa][Tt][Ii][Oo][Nn])/[Xx][Mm][Ll]\"?$") + (#match? @_mt + "^\"?([Tt][Ee][Xx][Tt]|[Aa][Pp][Pp][Ll][Ii][Cc][Aa][Tt][Ii][Oo][Nn])/[Xx][Mm][Ll]\"?$") (#set! injection.language "xml")) ; text/html (xdata (xdata_any (xdata_keywords - (xdata_keyword_mimetype (rhs) @mt)) + (xdata_keyword_mimetype + (typename) @_mt)) (external_method_body_content) @injection.content) (#set! injection.include-children "true") - (#match? @mt "^\"?text/html\"?$") + (#match? @_mt "^\"?text/html\"?$") (#set! injection.language "html")) ; application/json (xdata (xdata_any (xdata_keywords - (xdata_keyword_mimetype (rhs) @mt)) + (xdata_keyword_mimetype + (typename) @_mt)) (external_method_body_content) @injection.content) (#set! injection.include-children "true") - (#match? @mt "^\"?application/json\"?$") + (#match? @_mt "^\"?application/json\"?$") (#set! injection.language "json")) ; text/yaml or application/yaml (xdata (xdata_any (xdata_keywords - (xdata_keyword_mimetype (rhs) @mt)) + (xdata_keyword_mimetype + (typename) @_mt)) (external_method_body_content) @injection.content) (#set! injection.include-children "true") - (#match? @mt "^\"?([Tt][Ee][Xx][Tt]|[Aa][Pp][Pp][Ll][Ii][Cc][Aa][Tt][Ii][Oo][Nn])/[Yy][Aa][Mm][Ll]\"?$") + (#match? @_mt + "^\"?([Tt][Ee][Xx][Tt]|[Aa][Pp][Pp][Ll][Ii][Cc][Aa][Tt][Ii][Oo][Nn])/[Yy][Aa][Mm][Ll]\"?$") (#set! injection.language "yaml")) ; text/css (xdata (xdata_any (xdata_keywords - (xdata_keyword_mimetype (rhs) @mt)) + (xdata_keyword_mimetype + (typename) @_mt)) (external_method_body_content) @injection.content) (#set! injection.include-children "true") - (#match? @mt "^\"?text/css\"?$") + (#match? @_mt "^\"?text/css\"?$") (#set! injection.language "css")) ; ----------------------------------------- @@ -183,7 +173,6 @@ (#set! injection.include-children "true") (#set! injection.language "xml")) - ; Storage definition is XML (storage (storage_body diff --git a/scripts/lint_zed_captures.py b/scripts/lint_zed_captures.py index 1ad9c66..b622109 100644 --- a/scripts/lint_zed_captures.py +++ b/scripts/lint_zed_captures.py @@ -16,6 +16,7 @@ "comment", "comment.doc", "constant", + "constant.builtin", "constructor", "embedded", "emphasis", @@ -55,6 +56,7 @@ "type", "variable", "variable.special", + "variable.parameter", "variant", } diff --git a/themes/solarized-dark.json b/themes/solarized-dark.json index ee59e37..03c53d6 100644 --- a/themes/solarized-dark.json +++ b/themes/solarized-dark.json @@ -36,39 +36,39 @@ "font_weight": 700 }, "comment": { - "color": "#586e75", + "color": "#71e584", "font_style": "italic" }, "string": { - "color": "#2aa198" + "color": "#e5b871" }, "number": { - "color": "#d33682" + "color": "#e5718f" }, "keyword": { - "color": "#859900", + "color": "#71e5da", "font_weight": 700 }, "operator": { - "color": "#93a1a1" + "color": "#7f71e5" }, "function": { - "color": "#268bd2" + "color": "#e57a71" }, "type": { - "color": "#b58900" + "color": "#71e59c" }, "variable": { - "color": "#268bd2" + "color": "#e5df71" }, "variable.special": { - "color": "#cb4b16" + "color": "#e571ce" }, "variable.parameter": { - "color": "#2aa198" + "color": "#e571a7" }, "constant": { - "color": "#cb4b16" + "color": "#bd71e5" }, "punctuation": { "color": "#657b83" @@ -80,22 +80,61 @@ "color": "#b58900" }, "attribute": { - "color": "#b58900" + "color": "#71e1e5" }, "label": { - "color": "#cb4b16" + "color": "#a571e5" }, "boolean": { - "color": "#d33682" + "color": "#71e575" }, "embedded": { - "color": "#2aa198" + "color": "#71a2e5" }, "markup.raw": { "color": "#2aa198" }, "markup.heading": { "color": "#657b83" + }, + "string.regex": { + "color": "#71b1e5" + }, + "string.special": { + "color": "#9771e5" + }, + "function.builtin": { + "color": "#ace571" + }, + "variant": { + "color": "#718ae5" + }, + "namespace": { + "color": "#71c9e5" + }, + "punctuation.delimiter": { + "color": "#85e571" + }, + "punctuation.bracket": { + "color": "#e5a071" + }, + "constant.builtin": { + "color": "#71e5c2" + }, + "preproc": { + "color": "#e471e5" + }, + "type.builtin": { + "color": "#c4e571" + }, + "punctuation.special": { + "color": "#e57180" + }, + "keyword.directive": { + "color": "#e5c771" + }, + "comment.doc": { + "color": "#e571bf" } } } diff --git a/themes/solarized-light.json b/themes/solarized-light.json index f3706b9..c3202d2 100644 --- a/themes/solarized-light.json +++ b/themes/solarized-light.json @@ -36,39 +36,39 @@ "font_weight": 700 }, "comment": { - "color": "#93a1a1", + "color": "#891f4a", "font_style": "italic" }, "string": { - "color": "#2aa198" + "color": "#241f89" }, "number": { - "color": "#d33682" + "color": "#1f7789" }, "keyword": { - "color": "#859900", + "color": "#89431f", "font_weight": 700 }, "operator": { - "color": "#586e75" + "color": "#4f891f" }, "function": { - "color": "#268bd2" + "color": "#1f5389" }, "type": { - "color": "#b58900" + "color": "#891f34" }, "variable": { - "color": "#586e75" + "color": "#481f89" }, "variable.special": { - "color": "#cb4b16" + "color": "#1f8962" }, "variable.parameter": { - "color": "#2aa198" + "color": "#1f8986" }, "constant": { - "color": "#cb4b16" + "color": "#1f8929" }, "punctuation": { "color": "#839496" @@ -80,22 +80,61 @@ "color": "#b58900" }, "attribute": { - "color": "#b58900" + "color": "#89511f" }, "label": { - "color": "#cb4b16" + "color": "#2b891f" }, "boolean": { - "color": "#d33682" + "color": "#891f58" }, "embedded": { - "color": "#2aa198" + "color": "#88891f" }, "markup.raw": { "color": "#2aa198" }, "markup.heading": { "color": "#839496" + }, + "string.regex": { + "color": "#897d1f" + }, + "string.special": { + "color": "#39891f" + }, + "function.builtin": { + "color": "#811f89" + }, + "variant": { + "color": "#72891f" + }, + "namespace": { + "color": "#89671f" + }, + "punctuation.delimiter": { + "color": "#891f6e" + }, + "punctuation.bracket": { + "color": "#1f3089" + }, + "constant.builtin": { + "color": "#892e1f" + }, + "preproc": { + "color": "#1f894c" + }, + "type.builtin": { + "color": "#6b1f89" + }, + "punctuation.special": { + "color": "#1f6989" + }, + "keyword.directive": { + "color": "#321f89" + }, + "comment.doc": { + "color": "#1f8970" } } } diff --git a/themes/tokyonight-dark.json b/themes/tokyonight-dark.json index a111acf..3708322 100644 --- a/themes/tokyonight-dark.json +++ b/themes/tokyonight-dark.json @@ -36,39 +36,39 @@ "font_weight": 700 }, "comment": { - "color": "#7a88cf", + "color": "#e571a8", "font_style": "italic" }, "string": { - "color": "#c3e88d" + "color": "#7173e5" }, "number": { - "color": "#ff966c" + "color": "#71d8e5" }, "keyword": { - "color": "#c099ff", + "color": "#e59171", "font_weight": 700 }, "operator": { - "color": "#89ddff" + "color": "#ade571" }, "function": { - "color": "#82aaff" + "color": "#71b1e5" }, "type": { - "color": "#86e1fc" + "color": "#e57190" }, "variable": { - "color": "#82aaff" + "color": "#9671e5" }, "variable.special": { - "color": "#ff757f" + "color": "#71e5b3" }, "variable.parameter": { - "color": "#ffc777" + "color": "#71e5da" }, "constant": { - "color": "#ff757f" + "color": "#71e574" }, "punctuation": { "color": "#9099c2" @@ -80,22 +80,61 @@ "color": "#86e1fc" }, "attribute": { - "color": "#86e1fc" + "color": "#e5a071" }, "label": { - "color": "#ff757f" + "color": "#86e571" }, "boolean": { - "color": "#ff966c" + "color": "#e571b6" }, "embedded": { - "color": "#c3e88d" + "color": "#e5de71" }, "markup.raw": { "color": "#c3e88d" }, "markup.heading": { "color": "#9099c2" + }, + "string.regex": { + "color": "#e5d071" + }, + "string.special": { + "color": "#95e571" + }, + "function.builtin": { + "color": "#d571e5" + }, + "variant": { + "color": "#d3e571" + }, + "namespace": { + "color": "#e5b871" + }, + "punctuation.delimiter": { + "color": "#e571ce" + }, + "punctuation.bracket": { + "color": "#718be5" + }, + "constant.builtin": { + "color": "#e57971" + }, + "preproc": { + "color": "#71e59b" + }, + "type.builtin": { + "color": "#bd71e5" + }, + "punctuation.special": { + "color": "#71c9e5" + }, + "keyword.directive": { + "color": "#7e71e5" + }, + "comment.doc": { + "color": "#71e5c2" } } } diff --git a/themes/tokyonight-day.json b/themes/tokyonight-day.json index 4bd6830..25697bf 100644 --- a/themes/tokyonight-day.json +++ b/themes/tokyonight-day.json @@ -29,13 +29,13 @@ "color": "#007197" }, "attribute": { - "color": "#007197" + "color": "#82891f" }, "attribute.builtin": { "color": "#188092" }, "boolean": { - "color": "#b15c00" + "color": "#89261f" }, "character": { "color": "#587539" @@ -47,7 +47,7 @@ "color": "#188092" }, "comment": { - "color": "#848cb5", + "color": "#89341f", "font_style": "italic" }, "comment.error": { @@ -69,10 +69,10 @@ "color": "#8c6c3e" }, "constant": { - "color": "#b15c00" + "color": "#1f8969" }, "constant.builtin": { - "color": "#188092" + "color": "#896d1f" }, "constant.macro": { "color": "#007197" @@ -84,10 +84,10 @@ "color": "#188092" }, "function": { - "color": "#2e7de9" + "color": "#2b1f89" }, "function.builtin": { - "color": "#188092" + "color": "#891f51" }, "function.call": { "color": "#2e7de9" @@ -102,7 +102,7 @@ "color": "#2e7de9" }, "keyword": { - "color": "#7847bd" + "color": "#89831f" }, "keyword.conditional": { "color": "#9854f1" @@ -114,7 +114,7 @@ "color": "#b15c00" }, "keyword.directive": { - "color": "#007197" + "color": "#721f89" }, "keyword.directive.define": { "color": "#007197" @@ -141,7 +141,7 @@ "color": "#188092" }, "label": { - "color": "#2e7de9" + "color": "#1f8953" }, "module": { "color": "#2e7de9" @@ -153,13 +153,13 @@ "color": "#f52a65" }, "number": { - "color": "#b15c00" + "color": "#1f3789" }, "number.float": { "color": "#b15c00" }, "operator": { - "color": "#006a83" + "color": "#1f892f" }, "property": { "color": "#387068" @@ -168,19 +168,19 @@ "color": "#188092" }, "punctuation.bracket": { - "color": "#6172b0" + "color": "#4e1f89" }, "punctuation.delimiter": { - "color": "#006a83" + "color": "#891f2e" }, "punctuation.special": { - "color": "#006a83" + "color": "#1f2989" }, "punctuation.special.markdown": { "color": "#b15c00" }, "string": { - "color": "#587539" + "color": "#641f89" }, "string.documentation": { "color": "#8c6c3e" @@ -192,7 +192,7 @@ "color": "#2e5857" }, "string.special": { - "color": "#188092" + "color": "#1f8945" }, "tag": { "color": "#9854f1" @@ -216,10 +216,10 @@ "color": "#f52a65" }, "type": { - "color": "#188092" + "color": "#894a1f" }, "type.builtin": { - "color": "#4094a3" + "color": "#891f67" }, "type.definition": { "color": "#188092" @@ -228,10 +228,10 @@ "color": "#7847bd" }, "variable": { - "color": "#3760bf" + "color": "#881f89" }, "variable.special": { - "color": "#c64343" + "color": "#1f7089" }, "variable.builtin": { "color": "#f52a65" @@ -240,7 +240,7 @@ "color": "#387068" }, "variable.parameter": { - "color": "#8c6c3e" + "color": "#1f4d89" }, "variable.parameter.builtin": { "color": "#7b6a58" @@ -253,6 +253,24 @@ }, "warning": { "color": "#8c6c3e" + }, + "string.regex": { + "color": "#56891f" + }, + "variant": { + "color": "#32891f" + }, + "namespace": { + "color": "#6c891f" + }, + "preproc": { + "color": "#1f8689" + }, + "embedded": { + "color": "#48891f" + }, + "comment.doc": { + "color": "#1f6389" } } } diff --git a/themes/tokyonight-light.json b/themes/tokyonight-light.json index fddeb38..5b4dceb 100644 --- a/themes/tokyonight-light.json +++ b/themes/tokyonight-light.json @@ -36,39 +36,39 @@ "font_weight": 700 }, "comment": { - "color": "#848cb5", + "color": "#89501f", "font_style": "italic" }, "string": { - "color": "#587539" + "color": "#801f89" }, "number": { - "color": "#b15c00" + "color": "#241f89" }, "keyword": { - "color": "#7867d2", + "color": "#73891f", "font_weight": 700 }, "operator": { - "color": "#1b78b3" + "color": "#1f894c" }, "function": { - "color": "#2e7de9" + "color": "#471f89" }, "type": { - "color": "#33635c" + "color": "#89661f" }, "variable": { - "color": "#3760bf" + "color": "#891f6e" }, "variable.special": { - "color": "#bf3a4c" + "color": "#1f5489" }, "variable.parameter": { - "color": "#8f5e15" + "color": "#1f3189" }, "constant": { - "color": "#8f3f71" + "color": "#1f8985" }, "punctuation": { "color": "#68739c" @@ -80,22 +80,61 @@ "color": "#33635c" }, "attribute": { - "color": "#33635c" + "color": "#65891f" }, "label": { - "color": "#8f3f71" + "color": "#1f896f" }, "boolean": { - "color": "#b15c00" + "color": "#89431f" }, "embedded": { - "color": "#587539" + "color": "#2c891f" }, "markup.raw": { "color": "#587539" }, "markup.heading": { "color": "#68739c" + }, + "string.regex": { + "color": "#3a891f" + }, + "string.special": { + "color": "#1f8961" + }, + "function.builtin": { + "color": "#891f35" + }, + "variant": { + "color": "#1f8928" + }, + "namespace": { + "color": "#50891f" + }, + "punctuation.delimiter": { + "color": "#892d1f" + }, + "punctuation.bracket": { + "color": "#6a1f89" + }, + "constant.builtin": { + "color": "#89891f" + }, + "preproc": { + "color": "#1f6a89" + }, + "type.builtin": { + "color": "#891f4b" + }, + "punctuation.special": { + "color": "#311f89" + }, + "keyword.directive": { + "color": "#891f84" + }, + "comment.doc": { + "color": "#1f4789" } } } diff --git a/themes/tokyonight-moon.json b/themes/tokyonight-moon.json index 963ff83..87d48fd 100644 --- a/themes/tokyonight-moon.json +++ b/themes/tokyonight-moon.json @@ -29,13 +29,13 @@ "color": "#86e1fc" }, "attribute": { - "color": "#86e1fc" + "color": "#71d1e5" }, "attribute.builtin": { "color": "#65bcff" }, "boolean": { - "color": "#ff966c" + "color": "#71e584" }, "character": { "color": "#c3e88d" @@ -47,7 +47,7 @@ "color": "#65bcff" }, "comment": { - "color": "#636da6", + "color": "#71e593", "font_style": "italic" }, "comment.error": { @@ -69,10 +69,10 @@ "color": "#ffc777" }, "constant": { - "color": "#ff966c" + "color": "#cd71e5" }, "constant.builtin": { - "color": "#65bcff" + "color": "#71e5d2" }, "constant.macro": { "color": "#86e1fc" @@ -84,10 +84,10 @@ "color": "#65bcff" }, "function": { - "color": "#82aaff" + "color": "#e58971" }, "function.builtin": { - "color": "#65bcff" + "color": "#9ce571" }, "function.call": { "color": "#82aaff" @@ -102,7 +102,7 @@ "color": "#82aaff" }, "keyword": { - "color": "#fca7ea" + "color": "#71e0e5" }, "keyword.conditional": { "color": "#c099ff" @@ -114,7 +114,7 @@ "color": "#ff966c" }, "keyword.directive": { - "color": "#86e1fc" + "color": "#e5d771" }, "keyword.directive.define": { "color": "#86e1fc" @@ -141,7 +141,7 @@ "color": "#65bcff" }, "label": { - "color": "#82aaff" + "color": "#b571e5" }, "module": { "color": "#82aaff" @@ -153,13 +153,13 @@ "color": "#ff757f" }, "number": { - "color": "#ff966c" + "color": "#e5717f" }, "number.float": { "color": "#ff966c" }, "operator": { - "color": "#89ddff" + "color": "#8e71e5" }, "property": { "color": "#4fd6be" @@ -168,19 +168,19 @@ "color": "#65bcff" }, "punctuation.bracket": { - "color": "#828bb8" + "color": "#e5b071" }, "punctuation.delimiter": { - "color": "#89ddff" + "color": "#75e571" }, "punctuation.special": { - "color": "#89ddff" + "color": "#e57171" }, "punctuation.special.markdown": { "color": "#ff966c" }, "string": { - "color": "#c3e88d" + "color": "#e5c871" }, "string.documentation": { "color": "#ffc777" @@ -192,7 +192,7 @@ "color": "#b4f9f8" }, "string.special": { - "color": "#65bcff" + "color": "#a671e5" }, "tag": { "color": "#c099ff" @@ -216,10 +216,10 @@ "color": "#ff757f" }, "type": { - "color": "#65bcff" + "color": "#71e5ab" }, "type.builtin": { - "color": "#589ed7" + "color": "#b4e571" }, "type.definition": { "color": "#65bcff" @@ -228,10 +228,10 @@ "color": "#fca7ea" }, "variable": { - "color": "#82aaff" + "color": "#dbe571" }, "variable.special": { - "color": "#ff757f" + "color": "#e571be" }, "variable.builtin": { "color": "#ff757f" @@ -240,7 +240,7 @@ "color": "#4fd6be" }, "variable.parameter": { - "color": "#ffc777" + "color": "#e57197" }, "variable.parameter.builtin": { "color": "#f4c990" @@ -253,6 +253,24 @@ }, "warning": { "color": "#ffc777" + }, + "string.regex": { + "color": "#71a1e5" + }, + "variant": { + "color": "#717ae5" + }, + "namespace": { + "color": "#71b9e5" + }, + "preproc": { + "color": "#e571d6" + }, + "embedded": { + "color": "#7192e5" + }, + "comment.doc": { + "color": "#e571af" } } } From ae2137859a7f83e12bb69e4a90cb03d13ac791d4 Mon Sep 17 00:00:00 2001 From: Hannah Date: Tue, 24 Mar 2026 08:48:36 -0400 Subject: [PATCH 2/3] remove duplicate keywords --- languages/objectscript_routine/highlights.scm | 2 -- languages/objectscript_udl/highlights.scm | 2 -- 2 files changed, 4 deletions(-) diff --git a/languages/objectscript_routine/highlights.scm b/languages/objectscript_routine/highlights.scm index 1e7bb09..d32801e 100644 --- a/languages/objectscript_routine/highlights.scm +++ b/languages/objectscript_routine/highlights.scm @@ -122,8 +122,6 @@ (macro_def) @preproc [ - (keyword_for) - (keyword_while) (keyword_continue) (keyword_quit) (keyword_throw) diff --git a/languages/objectscript_udl/highlights.scm b/languages/objectscript_udl/highlights.scm index b2674dc..62a3cd0 100644 --- a/languages/objectscript_udl/highlights.scm +++ b/languages/objectscript_udl/highlights.scm @@ -122,8 +122,6 @@ (macro_def) @preproc [ - (keyword_for) - (keyword_while) (keyword_continue) (keyword_quit) (keyword_throw) From 8c4b0d7c5bfde5595c98a789f035145d4c36e70c Mon Sep 17 00:00:00 2001 From: Hannah Date: Tue, 24 Mar 2026 08:49:55 -0400 Subject: [PATCH 3/3] remove duplicate keywords --- languages/objectscript/highlights.scm | 2 -- 1 file changed, 2 deletions(-) diff --git a/languages/objectscript/highlights.scm b/languages/objectscript/highlights.scm index 95e6461..5dd66ca 100644 --- a/languages/objectscript/highlights.scm +++ b/languages/objectscript/highlights.scm @@ -122,8 +122,6 @@ (macro_def) @preproc [ - (keyword_for) - (keyword_while) (keyword_continue) (keyword_quit) (keyword_throw)