Mercurial > dotfiles
diff dot_config/helix/runtime/queries/verilog/highlights.scm @ 1079:6b04ecaaff0f draft
feat: add better systemverilog treesitter
author | Zeger Van de Vannet <zeger@vandevan.net> |
---|---|
date | Tue, 07 Jan 2025 09:11:41 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dot_config/helix/runtime/queries/verilog/highlights.scm Tue Jan 07 09:11:41 2025 +0100 @@ -0,0 +1,349 @@ +; ; Keywords + +[ + ; block delimiters + (module_keyword) + "endmodule" + "program" + "endprogram" + "class" + "endclass" + "interface" + "endinterface" + "package" + "endpackage" + "checker" + "endchecker" + "config" + "endconfig" + + "pure" + "virtual" + "extends" + "implements" + "super" + (class_item_qualifier) + + "parameter" + "localparam" + "defparam" + "assign" + "typedef" + "modport" + "fork" + "join" + "join_none" + "join_any" + "default" + "break" + "assert" + (unique_priority) + "tagged" + "extern" +] @keyword + +[ + "function" + "endfunction" + + "task" + "endtask" +] @keyword.function + +"return" @keyword.control.return + +[ + "begin" + "end" +] @label + +[ + (always_keyword) + "generate" + "for" + "foreach" + "repeat" + "forever" + "initial" + "while" +] @keyword.control + +[ + "if" + "else" + (case_keyword) + "endcase" +] @keyword.control.conditional + +(comment) @comment + +(include_compiler_directive) @keyword.directive +(package_import_declaration + "import" @keyword.control.import) + +(package_import_declaration + (package_import_item + (simple_identifier) @namespace)) + +(package_scope + (simple_identifier) @namespace) + +; TODO: match the constant name after :: as constant too +(package_import_declaration + (package_import_item + "*" @constant)) + +(package_declaration + (simple_identifier) @namespace) + +; (text_macro_definition) @keyword.directive + +; (text_macro_identifier +; (simple_identifier) @keyword.directive) + +; [ +; (id_directive) +; (zero_directive) +; ] @keyword.directive + +(parameter_port_list + "#" @constructor) + +(param_assignment + (simple_identifier) @variable.parameter) + +(interface_port_header + (simple_identifier) @type.parameter) + +[ + "=" + "-" + "+" + "/" + "*" + "^" + "&" + "|" + "&&" + "||" + ":" + (unary_operator) + "{" + "}" + "'{" + "<=" + "@" + "or" + "and" + "==" + "!=" + "===" + "!==" + "-:" + "<" + ">" + ">=" + "%" + ">>" + "<<" + "|=" + (inc_or_dec_operator) +] @keyword.operator + +(cast + ["'" "(" ")"] @keyword.operator) + +(cast + (casting_type) @type) + +; (edge_identifier) @constant + +[ + (port_direction) + (input_declaration) + (output_declaration) +] @label + +; (port_identifier) @variable.parameter + + +[ + (net_type) + (integer_vector_type) + (integer_atom_type) +] @type.builtin + +[ + "signed" + "unsigned" +] @label + +(data_type + (simple_identifier) @type) + +; (method_call_body +; (method_identifier) @variable.other.member) + +; (interface_identifier +; (simple_identifier) @type) + +; (modport_identifier +; (modport_identifier +; (simple_identifier) @variable.other.member)) + +; (net_port_type1 +; (simple_identifier) @type) + +[ + ; (double_quoted_string) + (string_literal) +] @string + +[ + (include_compiler_directive) + (default_nettype_compiler_directive) + (timescale_compiler_directive) +] @keyword.directive + +; begin/end label +(seq_block + (simple_identifier) @comment) +(generate_block + (simple_identifier) @comment) + +[ + ";" + "::" + "," + "." +] @punctuation.delimiter + + +(default_nettype_compiler_directive + (default_nettype_value) @string) + +; (text_macro_identifier +; (simple_identifier) @function.macro) + +(module_declaration + (module_ansi_header + (simple_identifier) @constructor)) + +(class_constructor_declaration + "new" @constructor) + +; (parameter_identifier +; (simple_identifier) @variable.parameter) + +[ + (integral_number) + (unsigned_number) + (unbased_unsized_literal) +] @constant.numeric.integer + +(real_number + (fixed_point_number) @constant.numeric.float) + +(time_unit) @constant + +(constant_primary + (simple_identifier) @constant) + +; (checker_instantiation +; (checker_identifier +; (simple_identifier) @constructor)) + +(module_instantiation + (simple_identifier) @type) + +; (name_of_instance +; (instance_identifier +; (simple_identifier) @variable)) + +; (interface_port_declaration +; (interface_identifier +; (simple_identifier) @type)) + +(net_declaration + (simple_identifier) @type) + +(lifetime) @label + +(function_declaration + (function_body_declaration + (simple_identifier) @function + (tf_port_list + (tf_port_item + (simple_identifier) @variable.parameter)))) + +(function_subroutine_call + (subroutine_call + (tf_call + (hierarchical_identifier + (simple_identifier) @function) + (list_of_arguments + (simple_identifier) @variable.parameter)))) + +(system_tf_call + (system_tf_identifier) @function.builtin) + +; (task_identifier +; (task_identifier +; (simple_identifier) @function.method)) + +;;TODO: fixme +;(assignment_pattern_expression + ;(assignment_pattern + ;(parameter_identifier) @variable.other.member)) + +(type_declaration + (data_type ["packed"] @keyword.storage.modifier)) + +(struct_union) @type + +[ + "enum" +] @type.enum + +(enum_name_declaration + (simple_identifier) @constant) + +(type_declaration + (simple_identifier) @type) + +[ + (integer_atom_type) + (non_integer_type) + "genvar" +] @type.builtin + +(struct_union_member + (list_of_variable_decl_assignments + (variable_decl_assignment + (simple_identifier) @variable.other.member))) + +; (member_identifier +; (simple_identifier) @variable.other.member) + +(struct_union_member + (data_type_or_void + (data_type + (simple_identifier) @type))) + +(type_declaration + (simple_identifier) @type) + +; (generate_block_identifier) @comment + +[ + "[" + "]" + "(" + ")" +] @punctuation.bracket + +(attribute_instance) @attribute +(attribute_instance + (attr_spec) @label) + +(ERROR) @error