diff options
| author | ObserverOfTime <chronobserver@disroot.org> | 2023-08-04 14:50:28 +0300 |
|---|---|---|
| committer | ObserverOfTime <chronobserver@disroot.org> | 2023-08-13 10:34:57 +0300 |
| commit | 5b3dd8cff1064db583ddd3edd314e94a02ea1bef (patch) | |
| tree | 2a8ae4546d07a867531e7f861e48c004050ecf7f /queries | |
| parent | fixup: php injections (diff) | |
| download | nvim-treesitter-5b3dd8cff1064db583ddd3edd314e94a02ea1bef.tar nvim-treesitter-5b3dd8cff1064db583ddd3edd314e94a02ea1bef.tar.gz nvim-treesitter-5b3dd8cff1064db583ddd3edd314e94a02ea1bef.tar.bz2 nvim-treesitter-5b3dd8cff1064db583ddd3edd314e94a02ea1bef.tar.lz nvim-treesitter-5b3dd8cff1064db583ddd3edd314e94a02ea1bef.tar.xz nvim-treesitter-5b3dd8cff1064db583ddd3edd314e94a02ea1bef.tar.zst nvim-treesitter-5b3dd8cff1064db583ddd3edd314e94a02ea1bef.zip | |
feat: add xml & dtd parsers
Diffstat (limited to 'queries')
| -rw-r--r-- | queries/dtd/folds.scm | 4 | ||||
| -rw-r--r-- | queries/dtd/highlights.scm | 121 | ||||
| -rw-r--r-- | queries/dtd/injections.scm | 1 | ||||
| -rw-r--r-- | queries/http/injections.scm | 4 | ||||
| -rw-r--r-- | queries/hurl/injections.scm | 2 | ||||
| -rw-r--r-- | queries/xml/folds.scm | 5 | ||||
| -rw-r--r-- | queries/xml/highlights.scm | 53 | ||||
| -rw-r--r-- | queries/xml/indents.scm | 16 | ||||
| -rw-r--r-- | queries/xml/injections.scm | 29 |
9 files changed, 232 insertions, 3 deletions
diff --git a/queries/dtd/folds.scm b/queries/dtd/folds.scm new file mode 100644 index 000000000..ba7ea121b --- /dev/null +++ b/queries/dtd/folds.scm @@ -0,0 +1,4 @@ +[ + (conditionalSect) + (Comment) +] @fold diff --git a/queries/dtd/highlights.scm b/queries/dtd/highlights.scm new file mode 100644 index 000000000..ba34f0bfe --- /dev/null +++ b/queries/dtd/highlights.scm @@ -0,0 +1,121 @@ +;; XML declaration + +(XMLDecl "xml" @preproc) + +(XMLDecl [ "version" "encoding" ] @tag.attribute) + +(XMLDecl (EncName) @string.special) + +(XMLDecl (VersionNum) @number) + +;; Processing instructions + +(PI) @preproc + +;; Element declaration + +(elementdecl + "ELEMENT" @define + (Name) @tag) + +(contentspec + (_ (Name) @tag.attribute)) + +"#PCDATA" @type.builtin + +[ "EMPTY" "ANY" ] @type.qualifier + +[ "*" "?" "+" ] @character.special + +;; Entity declaration + +(GEDecl + "ENTITY" @define + (Name) @constant) + +(GEDecl (EntityValue) @string) + +(NDataDecl + "NDATA" @keyword + (Name) @label) + +;; Parsed entity declaration + +(PEDecl + "ENTITY" @define + "%" @operator + (Name) @function.macro) + +(PEDecl (EntityValue) @string) + +;; Notation declaration + +(NotationDecl + "NOTATION" @preproc + (Name) @label) + +((NotationDecl + (ExternalID + (SystemLiteral (URI) @string.special)) + (#set! "priority" 105))) + +;; Attlist declaration + +(AttlistDecl + "ATTLIST" @define + (Name) @tag) + +(AttDef (Name) @tag.attribute) + +(AttDef (Enumeration (Nmtoken) @string)) + +[ + (StringType) + (TokenizedType) +] @type.builtin + +(NotationType "NOTATION" @type.builtin) + +[ + "#REQUIRED" + "#IMPLIED" + "#FIXED" +] @attribute + +;; Entities + +(EntityRef) @constant + +((EntityRef) @constant.builtin + (#any-of? @constant.builtin + "&" "<" ">" """ "'")) + +(CharRef) @character + +(PEReference) @function.macro + +;; External references + +[ "PUBLIC" "SYSTEM" ] @keyword + +(PubidLiteral) @string.special + +(SystemLiteral (URI) @text.uri) + +;; Delimiters & punctuation + +[ "<?" "?>" "<!" ">" "]]>" ] @tag.delimiter + +[ "(" ")" "[" ] @punctuation.bracket + +[ "\"" "'" ] @punctuation.delimiter + +[ "," "|" "=" ] @operator + +;; Misc + +[ "INCLUDE" "IGNORE" ] @include + +(Comment) @comment @spell + +(ERROR) @error diff --git a/queries/dtd/injections.scm b/queries/dtd/injections.scm new file mode 100644 index 000000000..ed5557a05 --- /dev/null +++ b/queries/dtd/injections.scm @@ -0,0 +1 @@ +(Comment) @comment diff --git a/queries/http/injections.scm b/queries/http/injections.scm index 7f06e336d..cc17373dc 100644 --- a/queries/http/injections.scm +++ b/queries/http/injections.scm @@ -4,8 +4,8 @@ ((json_body) @injection.content (#set! injection.language "json")) -; ((xml_body) @injection.content -; (#set! injection.language "xml")) +((xml_body) @injection.content + (#set! injection.language "xml")) ; ((graphql_body) @injection.content ; (#set! injection.language "graphql")) ; Not used as of now.. diff --git a/queries/hurl/injections.scm b/queries/hurl/injections.scm index 3d961258f..363e90046 100644 --- a/queries/hurl/injections.scm +++ b/queries/hurl/injections.scm @@ -3,7 +3,7 @@ (#set! injection.language "json")) ((xml) @injection.content - (#set! injection.language "html")) + (#set! injection.language "xml")) (multiline_string (multiline_string_type) @_lang diff --git a/queries/xml/folds.scm b/queries/xml/folds.scm new file mode 100644 index 000000000..494e8c00a --- /dev/null +++ b/queries/xml/folds.scm @@ -0,0 +1,5 @@ +[ + (element) + (doctypedecl) + (Comment) +] @fold diff --git a/queries/xml/highlights.scm b/queries/xml/highlights.scm new file mode 100644 index 000000000..e47636ac4 --- /dev/null +++ b/queries/xml/highlights.scm @@ -0,0 +1,53 @@ +; inherits: dtd + +;; XML declaration + +(XMLDecl "standalone" @tag.attribute) + +(XMLDecl [ "yes" "no" ] @boolean) + +;; Processing instructions + +(XmlModelPI "xml-model" @preproc) + +(StyleSheetPI "xml-stylesheet" @preproc) + +(PseudoAtt (Name) @tag.attribute) + +(PseudoAtt (PseudoAttValue) @string) + +;; Doctype declaration + +(doctypedecl "DOCTYPE" @define) + +(doctypedecl (Name) @type.definition) + +;; Tags + +(STag (Name) @tag) + +(ETag (Name) @tag) + +(EmptyElemTag (Name) @tag) + +;; Attributes + +(Attribute (Name) @tag.attribute) + +(Attribute (AttValue) @string) + +;; Text + +(CharData) @text @spell + +((CDSect + (CDStart) @text.environment + (CData) @text.literal + "]]>" @text.environment) + (#set! "priority" 105)) + +;; Delimiters & punctuation + +[ "<" "</" "/>" ] @tag.delimiter + +"]" @punctuation.bracket diff --git a/queries/xml/indents.scm b/queries/xml/indents.scm new file mode 100644 index 000000000..24cd75cfa --- /dev/null +++ b/queries/xml/indents.scm @@ -0,0 +1,16 @@ +(element) @indent.begin + +[ + (Attribute) + (AttlistDecl) + (contentspec) +] @indent.align + +(ETag) @indent.dedent + +(doctypedecl) @indent.ignore + +[ + (Comment) + (ERROR) +] @indent.auto diff --git a/queries/xml/injections.scm b/queries/xml/injections.scm new file mode 100644 index 000000000..99b3a9cc8 --- /dev/null +++ b/queries/xml/injections.scm @@ -0,0 +1,29 @@ +((Comment) @injection.content + (#set! injection.language "comment")) + +; SVG style +((element + (STag (Name) @_name) + (content) @injection.content) + (#eq? @_name "style") + (#set! injection.combined) + (#set! injection.include-children) + (#set! injection.language "css")) + +; SVG script +((element + (STag (Name) @_name) + (content) @injection.content) + (#eq? @_name "script") + (#set! injection.combined) + (#set! injection.include-children) + (#set! injection.language "javascript")) + +; phpMyAdmin dump +((element + (STag (Name) @_name) + (content) @injection.content) + (#eq? @_name "pma:table") + (#set! injection.combined) + (#set! injection.include-children) + (#set! injection.language "sql")) |
