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