aboutsummaryrefslogtreecommitdiffstats
path: root/runtime/queries/vhdl
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/queries/vhdl')
-rw-r--r--runtime/queries/vhdl/folds.scm46
-rw-r--r--runtime/queries/vhdl/highlights.scm428
-rw-r--r--runtime/queries/vhdl/injections.scm7
3 files changed, 481 insertions, 0 deletions
diff --git a/runtime/queries/vhdl/folds.scm b/runtime/queries/vhdl/folds.scm
new file mode 100644
index 000000000..9fc6deafe
--- /dev/null
+++ b/runtime/queries/vhdl/folds.scm
@@ -0,0 +1,46 @@
+[
+ (block_comment)
+ (architecture_definition)
+ (architecture_head)
+ (concurrent_block)
+ (configuration_declaration)
+ (component_instantiation_statement)
+ (generic_map_aspect)
+ (port_map_aspect)
+ (process_statement)
+ (process_head)
+ (sequential_block)
+ (block_configuration)
+ (block_statement)
+ (block_head)
+ (component_declaration)
+ (component_configuration)
+ (generic_clause)
+ (port_clause)
+ (entity_declaration)
+ (entity_head)
+ (entity_body)
+ (package_declaration)
+ (package_definition)
+ (function_specification)
+ (subprogram_declaration)
+ (subprogram_definition)
+ (subprogram_head)
+ (procedure_specification)
+ (sequential_block)
+ (loop_statement)
+ (if_statement_block)
+ (if_statement)
+ (elsif_statement)
+ (else_statement)
+ (case_statement)
+ (case_statement_alternative)
+ (for_generate_statement)
+ (if_generate_statement)
+ (if_generate)
+ (elsif_generate)
+ (else_generate)
+ (case_generate_statement)
+ (case_generate_alternative)
+ (type_declaration)
+] @fold
diff --git a/runtime/queries/vhdl/highlights.scm b/runtime/queries/vhdl/highlights.scm
new file mode 100644
index 000000000..681dc2664
--- /dev/null
+++ b/runtime/queries/vhdl/highlights.scm
@@ -0,0 +1,428 @@
+(line_comment
+ (comment_content) @spell) @comment
+
+(block_comment
+ (comment_content) @spell) @comment.documentation
+
+(identifier) @variable
+
+[
+ "access"
+ "after"
+ "alias"
+ "architecture"
+ "array"
+ ; "assume"
+ "attribute"
+ "block"
+ "body"
+ "component"
+ "configuration"
+ "context"
+ ; "cover"
+ "disconnect"
+ "entity"
+ ; "fairness"
+ "file"
+ "force"
+ "generate"
+ "generic"
+ "group"
+ "label"
+ "literal"
+ "map"
+ "new"
+ "package"
+ "parameter"
+ "port"
+ "property"
+ "range"
+ "reject"
+ "release"
+ ; "restrict"
+ "sequence"
+ "transport"
+ "unaffected"
+ "view"
+ ; "vmode"
+ ; "vpkg"
+ ; "vprop"
+ "vunit"
+] @keyword
+
+[
+ (ALL)
+ (OTHERS)
+ "<>"
+ (DEFAULT)
+ (OPEN)
+] @constant.builtin
+
+[
+ "is"
+ "begin"
+ "end"
+] @keyword
+
+(parameter_specification
+ "in" @keyword)
+
+[
+ "process"
+ "wait"
+ "on"
+ "until"
+] @keyword.coroutine
+
+(end_process
+ "end" @keyword.coroutine)
+
+(timeout_clause
+ "for" @keyword.coroutine)
+
+[
+ "function"
+ "procedure"
+] @keyword.function
+
+(subprogram_end
+ "end" @keyword.function)
+
+[
+ "to"
+ "downto"
+ "of"
+] @keyword.operator
+
+[
+ "library"
+ "use"
+] @keyword.import
+
+[
+ "subtype"
+ "type"
+ "record"
+ "units"
+ "constant"
+ "signal"
+ "variable"
+] @keyword.type
+
+[
+ "protected"
+ "private"
+ "pure"
+ "impure"
+ "inertial"
+ "postponed"
+ ; "strong"
+ "guarded"
+ "out"
+ "inout"
+ "linkage"
+ "buffer"
+ "register"
+ "bus"
+ "shared"
+] @keyword.modifier
+
+(mode
+ "in" @keyword.modifier)
+
+(force_mode
+ "in" @keyword.modifier)
+
+[
+ "while"
+ "loop"
+ "next"
+ "exit"
+] @keyword.repeat
+
+(end_loop
+ "end" @keyword.repeat)
+
+(for_loop
+ "for" @keyword.repeat)
+
+(block_configuration
+ "for" @keyword)
+
+(configuration_specification
+ "for" @keyword)
+
+(component_configuration
+ "for" @keyword)
+
+(end_for
+ "for" @keyword)
+
+"return" @keyword.return
+
+[
+ "assert"
+ "report"
+ "severity"
+] @keyword.debug
+
+[
+ "if"
+ "then"
+ "elsif"
+ "case"
+] @keyword.conditional
+
+(end_if
+ "end" @keyword.conditional)
+
+(end_case
+ "end" @keyword.conditional)
+
+(when_element
+ "when" @keyword.conditional)
+
+(case_generate_alternative
+ "when" @keyword.conditional)
+
+(else_statement
+ "else" @keyword.conditional)
+
+(else_generate
+ "else" @keyword.conditional)
+
+[
+ "with"
+ "select"
+] @keyword.conditional.ternary
+
+(when_expression
+ "when" @keyword.conditional.ternary)
+
+(else_expression
+ "else" @keyword.conditional.ternary)
+
+(else_waveform
+ "else" @keyword.conditional.ternary)
+
+(else_expression_or_unaffected
+ "else" @keyword.conditional.ternary)
+
+"null" @constant.builtin
+
+(user_directive) @keyword.directive
+
+(protect_directive) @keyword.directive
+
+(warning_directive) @keyword.directive
+
+(error_directive) @keyword.directive
+
+(if_conditional_analysis
+ "if" @keyword.directive)
+
+(if_conditional_analysis
+ "then" @keyword.directive)
+
+(elsif_conditional_analysis
+ "elsif" @keyword.directive)
+
+(else_conditional_analysis
+ "else" @keyword.directive)
+
+(end_conditional_analysis
+ "end" @keyword.directive)
+
+(end_conditional_analysis
+ "if" @keyword.directive)
+
+(directive_body) @keyword.directive
+
+(directive_constant_builtin) @constant.macro
+
+(directive_error) @comment.error
+
+(directive_protect) @keyword.directive
+
+(directive_warning) @comment.warning
+
+[
+ (condition_conversion)
+ (relational_operator)
+ (sign)
+ (adding_operator)
+ (exponentiate)
+ (variable_assignment)
+ (signal_assignment)
+ "*"
+ "/"
+ ":"
+ "|"
+ "=>"
+] @operator
+
+[
+ (unary_operator)
+ (logical_operator)
+ (shift_operator)
+ "mod"
+ "not"
+ "rem"
+] @keyword.operator
+
+[
+ "'"
+ ","
+ "."
+ ";"
+] @punctuation.delimiter
+
+[
+ "("
+ ")"
+ "["
+ "]"
+ "<<"
+ ">>"
+] @punctuation.bracket
+
+"@" @punctuation.special
+
+[
+ (decimal_integer)
+ (string_literal_std_logic)
+] @number
+
+(decimal_float) @number.float
+
+(bit_string_length) @property
+
+(bit_string_base) @type.builtin
+
+(bit_string_value) @number
+
+(based_literal
+ (based_base) @type.builtin
+ (based_integer) @number)
+
+(based_literal
+ (based_base) @type.builtin
+ (based_float) @number.float)
+
+(string_literal) @string @spell
+
+(character_literal) @character
+
+(library_constant_std_logic) @constant.builtin
+
+(library_constant) @constant.builtin
+
+(library_function) @function.builtin
+
+(library_constant_boolean) @boolean
+
+(library_constant_character) @character
+
+(library_constant_debug) @keyword.debug
+
+(unit) @keyword.modifier
+
+(library_constant_unit) @keyword.modifier
+
+(label) @label
+
+(generic_map_aspect
+ "generic" @constructor
+ "map" @constructor)
+
+(port_map_aspect
+ "port" @constructor
+ "map" @constructor)
+
+(selection
+ (identifier) @variable.member)
+
+(_
+ view: (_) @type)
+
+(_
+ type: (_) @type)
+
+(_
+ library: (_) @module)
+
+(_
+ package: (_) @module)
+
+(_
+ entity: (_) @module)
+
+(_
+ component: (_) @module)
+
+(_
+ configuration: (_) @property)
+
+(_
+ architecture: (_) @property)
+
+(_
+ function: (_) @function)
+
+(_
+ procedure: (_) @function.method)
+
+(_
+ attribute: (_) @attribute)
+
+(_
+ constant: (_) @constant)
+
+(_
+ generic: (_) @variable.parameter)
+
+(_
+ view: (name
+ (_)) @type)
+
+(_
+ type: (name
+ (_)) @type)
+
+(_
+ entity: (name
+ (_)) @module)
+
+(_
+ component: (name
+ (_)) @module)
+
+(_
+ configuration: (name
+ (_)) @module)
+
+(library_type) @type.builtin
+
+[
+ (attribute_function)
+ (attribute_impure_function)
+ (attribute_mode_view)
+ (attribute_pure_function)
+ (attribute_range)
+ (attribute_signal)
+ (attribute_subtype)
+ (attribute_type)
+ (attribute_value)
+ (library_attribute)
+] @attribute.builtin
+
+(library_namespace) @module.builtin
+
+(subtype_declaration
+ (identifier) @type.definition)
+
+(type_declaration
+ (identifier) @type.definition)
+
+(mode_view_declaration
+ (identifier) @type.definition)
diff --git a/runtime/queries/vhdl/injections.scm b/runtime/queries/vhdl/injections.scm
new file mode 100644
index 000000000..5cbc06cb4
--- /dev/null
+++ b/runtime/queries/vhdl/injections.scm
@@ -0,0 +1,7 @@
+(line_comment
+ (comment_content) @injection.content
+ (#set! injection.language "comment"))
+
+(block_comment
+ (comment_content) @injection.content
+ (#set! injection.language "comment"))