diff options
Diffstat (limited to 'runtime/queries/xml')
| -rw-r--r-- | runtime/queries/xml/folds.scm | 5 | ||||
| -rw-r--r-- | runtime/queries/xml/highlights.scm | 199 | ||||
| -rw-r--r-- | runtime/queries/xml/indents.scm | 16 | ||||
| -rw-r--r-- | runtime/queries/xml/injections.scm | 32 | ||||
| -rw-r--r-- | runtime/queries/xml/locals.scm | 35 |
5 files changed, 287 insertions, 0 deletions
diff --git a/runtime/queries/xml/folds.scm b/runtime/queries/xml/folds.scm new file mode 100644 index 000000000..494e8c00a --- /dev/null +++ b/runtime/queries/xml/folds.scm @@ -0,0 +1,5 @@ +[ + (element) + (doctypedecl) + (Comment) +] @fold diff --git a/runtime/queries/xml/highlights.scm b/runtime/queries/xml/highlights.scm new file mode 100644 index 000000000..85e6e9bb4 --- /dev/null +++ b/runtime/queries/xml/highlights.scm @@ -0,0 +1,199 @@ +; XML declaration +(XMLDecl + "xml" @keyword.directive) + +(XMLDecl + [ + "version" + "encoding" + "standalone" + ] @tag.attribute) + +(XMLDecl + (EncName) @string.special) + +(XMLDecl + (VersionNum) @number) + +(XMLDecl + [ + "yes" + "no" + ] @boolean) + +; Processing instructions +(PI) @keyword.directive + +; Element declaration +(elementdecl + "ELEMENT" @keyword.directive.define + (Name) @tag) + +(contentspec + (_ + (Name) @tag.attribute)) + +"#PCDATA" @type.builtin + +[ + "EMPTY" + "ANY" +] @keyword.modifier + +[ + "*" + "?" + "+" +] @character.special + +; Entity declaration +(GEDecl + "ENTITY" @keyword.directive.define + (Name) @constant) + +(GEDecl + (EntityValue) @string) + +(NDataDecl + "NDATA" @keyword + (Name) @label) + +; Parsed entity declaration +(PEDecl + "ENTITY" @keyword.directive.define + "%" @operator + (Name) @function.macro) + +(PEDecl + (EntityValue) @string) + +; Notation declaration +(NotationDecl + "NOTATION" @keyword.directive + (Name) @label) + +; Attlist declaration +(AttlistDecl + "ATTLIST" @keyword.directive.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) @string.special.url) + +; Processing instructions +(XmlModelPI + "xml-model" @keyword.directive) + +(StyleSheetPI + "xml-stylesheet" @keyword.directive) + +(PseudoAtt + (Name) @tag.attribute) + +(PseudoAtt + (PseudoAttValue) @string) + +; Doctype declaration +(doctypedecl + "DOCTYPE" @keyword.directive.define) + +(doctypedecl + (Name) @type.definition) + +; Tags +(STag + (Name) @tag) + +(ETag + (Name) @tag) + +(EmptyElemTag + (Name) @tag) + +; Attributes +(Attribute + (Name) @tag.attribute) + +(Attribute + (AttValue) @string) + +; Delimiters & punctuation +[ + "<?" + "?>" + "<" + ">" + "</" + "/>" + "<!" + "]]>" +] @tag.delimiter + +[ + "(" + ")" + "[" + "]" +] @punctuation.bracket + +[ + "\"" + "'" +] @punctuation.delimiter + +[ + "," + "|" + "=" +] @operator + +; Text +(CharData) @none @spell + +((CDSect + (CDStart) @module + (CData) @markup.raw + "]]>" @module) + (#set! priority 105)) + +; Misc +(Comment) @comment @spell diff --git a/runtime/queries/xml/indents.scm b/runtime/queries/xml/indents.scm new file mode 100644 index 000000000..803c6e8a1 --- /dev/null +++ b/runtime/queries/xml/indents.scm @@ -0,0 +1,16 @@ +(element) @indent.begin + +[ + (Attribute) + (AttlistDecl) + (contentspec) +] @indent.align + +(ETag) @indent.branch + +(doctypedecl) @indent.ignore + +[ + (Comment) + (ERROR) +] @indent.auto diff --git a/runtime/queries/xml/injections.scm b/runtime/queries/xml/injections.scm new file mode 100644 index 000000000..02e99f02d --- /dev/null +++ b/runtime/queries/xml/injections.scm @@ -0,0 +1,32 @@ +((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")) diff --git a/runtime/queries/xml/locals.scm b/runtime/queries/xml/locals.scm new file mode 100644 index 000000000..2806b530c --- /dev/null +++ b/runtime/queries/xml/locals.scm @@ -0,0 +1,35 @@ +; tags +(elementdecl + (Name) @local.definition.type) + +(elementdecl + (contentspec + (children + (Name) @local.reference))) + +(AttlistDecl + . + (Name) @local.reference) + +(STag + (Name) @local.reference) + +(ETag + (Name) @local.reference) + +(EmptyElemTag + (Name) @local.reference) + +; attributes +(AttDef + (Name) @local.definition.field) + +(Attribute + (Name) @local.reference) + +; entities +(GEDecl + (Name) @local.definition.macro) + +(EntityRef + (Name) @local.reference) |
