Unnamed repository; edit this file 'description' to name the repository.
language support for strictdoc (#14314)
Nora Breitmoser-Widdecke 6 months ago
parent af74a61 · commit 68f11f9
-rw-r--r--book/src/generated/lang-support.md1
-rw-r--r--languages.toml11
-rw-r--r--runtime/queries/strictdoc/highlights.scm113
-rw-r--r--runtime/queries/strictdoc/injections.scm9
-rw-r--r--runtime/queries/strictdoc/tags.scm258
5 files changed, 392 insertions, 0 deletions
diff --git a/book/src/generated/lang-support.md b/book/src/generated/lang-support.md
index 50169cd4..c114faa1 100644
--- a/book/src/generated/lang-support.md
+++ b/book/src/generated/lang-support.md
@@ -242,6 +242,7 @@
| sshclientconfig | ✓ | | | | | |
| starlark | ✓ | ✓ | ✓ | | ✓ | `starpls` |
| strace | ✓ | | | | | |
+| strictdoc | ✓ | | | ✓ | | |
| supercollider | ✓ | | | | | |
| svelte | ✓ | | ✓ | | | `svelteserver` |
| sway | ✓ | ✓ | ✓ | | | `forc` |
diff --git a/languages.toml b/languages.toml
index 72e7dc9a..9055a6d9 100644
--- a/languages.toml
+++ b/languages.toml
@@ -4735,3 +4735,14 @@ comment-token = "#"
[[grammar]]
name = "shellcheckrc"
source = {git = "https://codeberg.org/kpbaks/tree-sitter-shellcheckrc", rev = "ad3da4e8f7fd72dcc5e93a6b89822c59a7cd10ff"}
+
+[[grammar]]
+name = "strictdoc"
+source = { git = "https://github.com/manueldiagostino/tree-sitter-strictdoc", rev = "070edcf23f7c85af355437706048f73833e0ea10" }
+
+[[language]]
+name = "strictdoc"
+scope = "source.strictdoc"
+injection-regex = "strictdoc"
+file-types = ["sdoc", "sgra"]
+comment-token = ".."
diff --git a/runtime/queries/strictdoc/highlights.scm b/runtime/queries/strictdoc/highlights.scm
new file mode 100644
index 00000000..3630f971
--- /dev/null
+++ b/runtime/queries/strictdoc/highlights.scm
@@ -0,0 +1,113 @@
+;; Tree-sitter highlight queries for strictdoc
+
+;; —————————————————————————————————————————
+;; Keywords “blok” del documento
+;; —————————————————————————————————————————
+[
+ "[DOCUMENT]"
+ "[DOCUMENT_FROM_FILE]"
+ "[GRAMMAR]"
+ "[/SECTION]"
+ "[SECTION]"
+ (sdoc_node_opening)
+ (sdoc_composite_node_opening)
+ (sdoc_composite_node_closing)
+ (sdoc_composite_node_type_name)
+] @keyword
+
+[
+ "AUTO_LEVELS"
+ "CLASSIFICATION"
+ "DATE"
+ "DEFAULT_VIEW"
+ "ELEMENTS"
+ "ENABLE_MID"
+ "FIELDS"
+ "FILE"
+ "FORMAT"
+ "IMPORT_FROM_FILE"
+ "IS_COMPOSITE"
+ "LAYOUT"
+ "LEVEL"
+ "MARKUP"
+ "METADATA"
+ "MID"
+ "NAME"
+ "NODE_IN_TOC"
+ "OBJECT_TYPE"
+ "OPTIONS"
+ "PLACEMENT"
+ "PREFIX"
+ "PROPERTIES"
+ "REQ_PREFIX"
+ "REQUIRED"
+ "REQUIREMENT_IN_TOC"
+ "REQUIREMENT_STYLE"
+ "ROLE"
+ "ROOT"
+ "TAG"
+ "TITLE"
+ "TYPE"
+ "UID"
+ "VALUE"
+ "VERSION"
+ "VIEW_STYLE"
+ "VISIBLE_FIELDS"
+] @type.builtin
+
+;; Operators
+[
+ (multiline_opening_token)
+ (multiline_closing_token)
+] @operator
+
+;; Punctuation
+[
+ ":" @punctuation.delimiter
+ "," @punctuation.delimiter
+ "-" @punctuation.delimiter
+]
+
+;; Boolean literals
+(boolean_choice) @constant.builtin.boolean
+
+;; Requirement types and file formats
+
+;; Config option values
+[
+ "Child"
+ "Default"
+ "File"
+ "HTML"
+ "Inline"
+ "Narrative"
+ "Off"
+ "On"
+ "Parent"
+ "Plain"
+ "RST"
+ "Simple"
+ "Table"
+ "Text"
+ "Website"
+ "Zebra"
+] @constant.builtin
+
+
+;; Strings
+(single_line_string) @string
+[ (uid_string) (req_reference_value_id) ] @string.special.symbol
+(date) @string.special
+
+;; Fields
+(document_custom_metadata_key) @type.parameter
+[ "RELATIONS" (field_name) ] @variable.other.member
+(choice_option) @variable.parameter
+
+;; Anchors and links
+(anchor) @label
+(inline_link) @string.special.url
+
+[
+ (role_id)
+] @variable
diff --git a/runtime/queries/strictdoc/injections.scm b/runtime/queries/strictdoc/injections.scm
new file mode 100644
index 00000000..c303dc33
--- /dev/null
+++ b/runtime/queries/strictdoc/injections.scm
@@ -0,0 +1,9 @@
+
+((text_part) @injection.content
+ (#set! injection.language "rst")
+ (#set! injection.include-children))
+
+((single_line_text_part) @injection.content
+ (#set! injection.language "rst")
+ (#set! injection.include-children))
+
diff --git a/runtime/queries/strictdoc/tags.scm b/runtime/queries/strictdoc/tags.scm
new file mode 100644
index 00000000..bf658a43
--- /dev/null
+++ b/runtime/queries/strictdoc/tags.scm
@@ -0,0 +1,258 @@
+; == StrictDoc Code Navigation Queries ==
+
+; -- Document Configuration Definitions --
+(
+(document_config
+uid: (uid_string) @name) @definition.document.uid
+)
+(
+(document_version
+version: (single_line_string) @name) @definition.document.version
+)
+(
+(document_date
+date: (date) @name) @definition.document.date
+)
+(
+(document_classification
+classification: (single_line_string) @name) @definition.document.classification
+)
+(
+(document_requirement
+requirement_prefix: (single_line_string) @name) @definition.document.requirement_prefix
+)
+(
+(document_config
+root: (boolean_choice) @name) @definition.document.root
+)
+(
+(document_config
+options: (document_config_options) @name) @definition.document.options
+)
+(
+(enable_mid
+(boolean_choice) @name) @definition.document.options.enable_mid
+)
+(
+(markup
+(markup_choice) @name) @definition.document.options.markup
+)
+(
+(auto_levels
+(auto_levels_choice) @name) @definition.document.options.auto_levels
+)
+(
+(layout
+(layout_choice) @name) @definition.document.options.layout
+)
+(
+(view_style
+(style_choice) @name) @definition.document.options.view_style
+)
+(
+(in_toc_tag
+(boolean_choice) @name) @definition.document.options.in_toc_tag
+)
+(
+(default_view
+(single_line_string) @name) @definition.document.options.default_view
+)
+(
+(document_config
+metadata: (document_custom_metadata) @name) @definition.document.metadata
+)
+
+; -- Grammar Definition -- ( (document_grammar) @definition.grammar.document_grammar )
+
+; -- Import From File Reference --
+(
+(import_from_file
+import_path: (file_path) @name) @reference.grammar.file_path
+)
+
+; -- Grammar Elements Definitions --
+(
+(grammar_elements) @definition.grammar.elements
+)
+(
+(grammar_element) @definition.grammar.element
+)
+
+; -- Grammar Properties Definitions --
+(
+(grammar_properties) @definition.grammar.properties
+)
+(
+(grammar_property_is_composite
+(boolean_choice) @name) @definition.grammar.property.is_composite
+)
+(
+(grammar_property_prefix
+(single_line_string) @name) @definition.grammar.property.prefix
+)
+(
+(grammar_property_view_style
+(style_choice) @name) @definition.grammar.property.view_style
+)
+
+; -- Grammar Fields Definitions --
+(
+(grammar_fields) @definition.grammar.fields
+)
+(
+(grammar_field_title
+title: (field_name) @name) @definition.grammar.field.title
+)
+(
+(grammar_field_required
+value: (boolean_choice) @name) @definition.grammar.field.required
+)
+(
+(grammar_field_string) @definition.grammar.field.string
+)
+(
+(grammar_field_single_choice) @definition.grammar.field.single_choice
+)
+(
+(grammar_field_multiple_choice) @definition.grammar.field.multiple_choice
+)
+(
+(grammar_field_tag) @definition.grammar.field.tag
+)
+
+; -- Grammar Relations Definitions --
+(
+(grammar_relations) @definition.grammar.relations
+)
+(
+(grammar_relation_parent
+(single_line_string) @name) @definition.grammar.relation.parent
+)
+(
+(grammar_relation_child
+(single_line_string) @name) @definition.grammar.relation.child
+)
+(
+(grammar_relation_file
+(single_line_string) @name) @definition.grammar.relation.file
+)
+
+; -- Document Custom Metadata --
+(
+ (document_custom_metadata) @definition.document.metadata
+)
+(
+ (document_custom_metadata_key_value_pair
+ key: (document_custom_metadata_key) @name
+ value: (single_line_string) @doc) @definition.document.metadata.entry
+)
+
+; -- Document View Definitions --
+(
+(document_view) @definition.document.view
+)
+(
+(view_element
+id: (uid_string) @name) @definition.view.element.id
+)
+(
+(view_element
+name: (single_line_string) @name) @definition.view.element.name
+)
+(
+(view_element_tag
+object_type: (single_line_string) @name) @definition.view.element.tag.object_type
+)
+(
+(view_element_field
+name: (single_line_string) @name) @definition.view.element.field.name
+)
+(
+(view_element_field
+placement: (single_line_string) @name) @definition.view.element.field.placement
+)
+(
+(view_element_hidden_tag
+hidden_tag: (single_line_string) @name) @definition.view.element.hidden_tag
+)
+
+; -- Section & Requirement Definitions --
+
+(
+(section_or_requirement_list) @definition.section.list
+)
+(
+ (sdoc_section) @definition.section
+)
+
+(
+ (section_body
+ mid: (single_line_string) @name) @definition.section.mid
+)
+
+(
+(section_body
+ uid: (uid_string) @name) @definition.section.uid
+)
+
+(
+ (section_body
+ custom_level: (single_line_string) @name) @definition.section.level
+)
+
+(
+ (section_body
+ title: (single_line_string) @name) @definition.section.title
+)
+
+(
+ (section_body
+ requirement_prefix: (single_line_string) @name) @definition.section.requirement_prefix
+)
+; -- Document From File Reference --
+(
+(document_from_file
+path: (file_path) @name) @definition.document.from_file
+)
+
+; -- SDoc Node Definitions --
+(
+(sdoc_node) @definition.node
+)
+(
+(sdoc_composite_node) @definition.composite_node
+)
+(
+(sdoc_composite_node_opening
+node_type_opening: (sdoc_composite_node_type_name) @name) @definition.composite_node.opening
+)
+(
+(sdoc_composite_node_type_name) @definition.composite_node.type
+)
+
+; -- SDoc Node Field Definitions --
+(
+ (sdoc_node_field_mid
+ mid: (single_line_string) @name) @definition.node.mid
+)
+
+(
+ (sdoc_node_field_uid
+ uid: (uid_string) @name) @definition.node.uid
+)
+
+(
+ (sdoc_node_field_generic
+ field_name: (field_name) @name
+ ) @definition.node.field
+)
+
+(
+ (parent_req_reference
+ ref_uid: (req_reference_value_id) @name) @reference.node.uid
+)
+
+(
+ (child_req_reference
+ ref_uid: (req_reference_value_id) @name) @reference.node.uid
+)