michael-hoke commented on code in PR #117: URL: https://github.com/apache/daffodil-vscode/pull/117#discussion_r893706827
##########
language/syntaxes/dfdl.tmLanguage.json:
##########
@@ -0,0 +1,387 @@
+{
+ "information_for_contributors": [
+ "This file has been converted from
https://github.com/atom/language-xml/blob/master/grammars/xml.cson",
+ "If you want to provide a fix or improvement, please create a
pull request against the original repository.",
+ "Once accepted there, we are happy to receive an update
request."
+ ],
+ "version":
"https://github.com/atom/language-xml/commit/7bc75dfe779ad5b35d9bf4013d9181864358cb49",
+ "name": "dfdl",
+ "scopeName": "text.xml.dfdl.xsd",
+ "patterns": [
+ {
+ "begin": "(<\\?)\\s*([-_a-zA-Z0-9]+)",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.tag.xml"
+ },
+ "2": {
+ "name": "entity.name.tag.xml"
+ }
+ },
+ "end": "(\\?>)",
+ "name": "meta.tag.preprocessor.xml",
+ "patterns": [
+ {
+ "match": " ([a-zA-Z-]+)",
+ "name":
"entity.other.attribute-name.xml"
+ },
+ {
+ "include": "#doublequotedString"
+ },
+ {
+ "include": "#singlequotedString"
+ }
+ ]
+ },
+ {
+ "begin":
"(<!)(DOCTYPE)\\s+([:a-zA-Z_][:a-zA-Z0-9_.-]*)",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.tag.xml"
+ },
+ "2": {
+ "name": "keyword.other.doctype.xml"
+ },
+ "3": {
+ "name":
"variable.language.documentroot.xml"
+ }
+ },
+ "end": "\\s*(>)",
+ "name": "meta.tag.sgml.doctype.xml",
+ "patterns": [
+ {
+ "include": "#internalSubset"
+ }
+ ]
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "begin":
"(<)((?:([-_a-zA-Z0-9]+)(:))?([-_a-zA-Z0-9:]+))(?=(\\s[^>]*)?></\\2>)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.xml"
+ },
+ "2": {
+ "name": "entity.name.tag.xml"
+ },
+ "3": {
+ "name": "entity.name.tag.namespace.xml"
+ },
+ "4": {
+ "name":
"punctuation.separator.namespace.xml"
+ },
+ "5": {
+ "name": "entity.name.tag.localname.xml"
+ }
+ },
+ "end":
"(>)(</)((?:([-_a-zA-Z0-9]+)(:))?([-_a-zA-Z0-9:]+))(>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.xml"
+ },
+ "2": {
+ "name": "punctuation.definition.tag.xml"
+ },
+ "3": {
+ "name": "entity.name.tag.xml"
+ },
+ "4": {
+ "name": "entity.name.tag.namespace.xml"
+ },
+ "5": {
+ "name":
"punctuation.separator.namespace.xml"
+ },
+ "6": {
+ "name": "entity.name.tag.localname.xml"
+ },
+ "7": {
+ "name": "punctuation.definition.tag.xml"
+ }
+ },
+ "name": "meta.tag.no-content.xml",
+ "patterns": [
+ {
+ "include": "#tagStuff"
+ }
+ ]
+ },
+ {
+ "begin": "(</?)(?:([-\\w\\.]+)((:)))?([-\\w\\.:]+)",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.tag.xml"
+ },
+ "2": {
+ "name": "entity.name.tag.namespace.xml"
+ },
+ "3": {
+ "name": "entity.name.tag.xml"
+ },
+ "4": {
+ "name":
"punctuation.separator.namespace.xml"
+ },
+ "5": {
+ "name": "entity.name.tag.localname.xml"
+ }
+ },
+ "end": "(/?>)",
+ "name": "meta.tag.xml",
+ "patterns": [
+ {
+ "include": "#tagStuff"
+ }
+ ]
+ },
+ {
+ "include": "#entity"
+ },
+ {
+ "include": "#bare-ampersand"
+ },
+ {
+ "begin": "<%@",
+ "beginCaptures": {
+ "0": {
+ "name":
"punctuation.section.embedded.begin.xml"
+ }
+ },
+ "end": "%>",
+ "endCaptures": {
+ "0": {
+ "name":
"punctuation.section.embedded.end.xml"
+ }
+ },
+ "name": "source.java-props.embedded.xml",
+ "patterns": [
+ {
+ "match": "page|include|taglib",
+ "name": "keyword.other.page-props.xml"
+ }
+ ]
+ },
+ {
+ "begin": "<%[!=]?(?!--)",
+ "beginCaptures": {
+ "0": {
+ "name":
"punctuation.section.embedded.begin.xml"
+ }
+ },
+ "end": "(?!--)%>",
+ "endCaptures": {
+ "0": {
+ "name":
"punctuation.section.embedded.end.xml"
+ }
+ },
+ "name": "source.java.embedded.xml",
+ "patterns": [
+ {
+ "include": "source.java"
+ }
+ ]
+ },
+ {
+ "begin": "<!\\[CDATA\\[",
+ "beginCaptures": {
+ "0": {
+ "name":
"punctuation.definition.string.begin.xml"
+ }
+ },
+ "end": "]]>",
+ "endCaptures": {
+ "0": {
+ "name":
"punctuation.definition.string.end.xml"
+ }
+ },
+ "name": "string.unquoted.cdata.xml"
+ }
+ ],
+ "repository": {
+ "EntityDecl": {
+ "begin":
"(<!)(ENTITY)\\s+(%\\s+)?([:a-zA-Z_][:a-zA-Z0-9_.-]*)(\\s+(?:SYSTEM|PUBLIC)\\s+)?",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.tag.xml"
+ },
+ "2": {
+ "name": "keyword.other.entity.xml"
+ },
+ "3": {
+ "name":
"punctuation.definition.entity.xml"
+ },
+ "4": {
+ "name": "variable.language.entity.xml"
+ },
+ "5": {
+ "name": "keyword.other.entitytype.xml"
+ }
+ },
+ "end": "(>)",
+ "patterns": [
+ {
+ "include": "#doublequotedString"
+ },
+ {
+ "include": "#singlequotedString"
+ }
+ ]
+ },
+ "bare-ampersand": {
+ "match": "&",
+ "name": "invalid.illegal.bad-ampersand.xml"
+ },
+ "doublequotedString": {
+ "begin": "(?<!\\}\\s*+)\"(?!\\s*+\\{)",
+ "beginCaptures": {
+ "0": {
+ "name":
"punctuation.definition.string.begin.xml"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name":
"punctuation.definition.string.end.xml"
+ }
+ },
+ "name": "string.quoted.double.xml",
+ "patterns": [
+ {
+ "include": "#entity"
+ },
+ {
+ "include": "#bare-ampersand"
+ }
+ ]
+ },
+ "entity": {
+ "captures": {
+ "1": {
+ "name":
"punctuation.definition.constant.xml"
+ },
+ "3": {
+ "name":
"punctuation.definition.constant.xml"
+ }
+ },
+ "match":
"(&)([:a-zA-Z_][:a-zA-Z0-9_.-]*|#[0-9]+|#x[0-9a-fA-F]+)(;)",
+ "name": "constant.character.entity.xml"
+ },
+ "internalSubset": {
+ "begin": "(\\[)",
+ "captures": {
+ "1": {
+ "name":
"punctuation.definition.constant.xml"
+ }
+ },
+ "end": "(\\])",
+ "name": "meta.internalsubset.xml",
+ "patterns": [
+ {
+ "include": "#EntityDecl"
+ },
+ {
+ "include": "#parameterEntity"
+ },
+ {
+ "include": "#comments"
+ }
+ ]
+ },
+ "parameterEntity": {
+ "captures": {
+ "1": {
+ "name":
"punctuation.definition.constant.xml"
+ },
+ "3": {
+ "name":
"punctuation.definition.constant.xml"
+ }
+ },
+ "match": "(%)([:a-zA-Z_][:a-zA-Z0-9_.-]*)(;)",
+ "name": "constant.character.parameter-entity.xml"
+ },
+ "singlequotedString": {
+ "begin": "(?<!\\}\\s*+)'(?!\\s*+\\{)",
+ "beginCaptures": {
+ "0": {
+ "name":
"punctuation.definition.string.begin.xml"
+ }
+ },
+ "end": "'",
+ "endCaptures": {
+ "0": {
+ "name":
"punctuation.definition.string.end.xml"
+ }
+ },
+ "name": "string.quoted.single.xml",
+ "patterns": [
+ {
+ "include": "#entity"
+ },
+ {
+ "include": "#bare-ampersand"
+ }
+ ]
+ },
+ "tagStuff": {
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name":
"entity.other.attribute-name.namespace.xml"
+ },
+ "2": {
+ "name":
"entity.other.attribute-name.xml"
+ },
+ "3": {
+ "name":
"punctuation.separator.namespace.xml"
+ },
+ "4": {
+ "name":
"entity.other.attribute-name.localname.xml"
+ }
+ },
+ "match":
"(?:^|\\s+)(?:([-\\w.]+)((:)))?([-\\w.:]+)\\s*="
+ },
+ {
+ "include": "#doublequotedString"
+ },
+ {
+ "include": "#singlequotedString"
+ }
+ ]
+ },
+ "comments": {
+ "patterns": [
+ {
+ "begin": "<%--",
+ "captures": {
+ "0": {
+ "name":
"punctuation.definition.comment.xml"
+ },
+ "end": "--%>",
+ "name": "comment.block.xml"
+ }
+ },
+ {
+ "begin": "<!--",
+ "captures": {
+ "0": {
+ "name":
"punctuation.definition.comment.xml"
+ }
+ },
+ "end": "-->",
+ "name": "comment.block.xml",
+ "patterns": [
+ {
+ "begin": "--(?!>)",
+ "captures": {
+ "0": {
+ "name":
"invalid.illegal.bad-comments-or-CDATA.xml"
+ }
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+}
Review Comment:
Just to add a little more detail to this: you can inherit scopes from other
languages - the first implementation of this colorization was using that to
effectively add dfdl as an additional alias for XML. The reason we're
re-defining the entire XML language in here is because we needed to change an
existing setting from the XML. Normally, with inheritance, you would expect
that you'd be able to take everything and make the small changes that you need
to, but the tmLanguage file doesn't support overwriting like we would need it
to.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
