This is a list of issues found while validating the extensions shipped with Nova 2.1.
The <syntax> element has an <identifiers> child:
<identifiers>
<characters>
<alphanumeric />
<string>-_</string>
</characters>
<prefixes>
<string>#</string>
</prefixes>
</identifiers>This undocumented element appears in other extensions too.
A <strings> element with a suffix= attribute can be followed by captures:
<starts-with>
<strings suffix="(:)?">
<string>any-hover</string>
<string>any-pointer</string>
...
<string>min-width</string>
<string>max-width</string>
</strings>
<capture number="1" name="css.style.media-feature.keyword" />
<capture number="2" name="css.style.media-feature.separator" />
</starts-with>This makes sense, but it isn't clear from the documentation that this is possible.
This looks like a typo:
<strings case-insensitive="true" prefixsuffix="(?=\()">A single case of <expression capture="1" in one of the CSS completion behaviors. What does it mean?
A completion string="..." description="..." appeared. Is this attribute used?
A completion provider contains an <assistant type="files" /> element.
A number of syntax scopes have a lookup="documentation", but the documentation only mentions the possibilities:
attribute lookup { "inherit"|"lookup"|"dictionary" }?,
The symbol context attribute unclosed has a documented value of extend-parent, byt the HTML syntax uses:
<context behavior="start" group-by-name="true" unclosed="parent">So do some of the examples in the documentation.
Can a subsyntax reference a collection of another syntax?
<subsyntax name="css" collection="attributes">This isn't documented.
What's this?
<ends-with>
<template>\3</template>
<capture number="0" name="html.tag.attribute.value.quote.right" />
</ends-with>Named, reusable regex fragments like Lex offers would be cool.
In an HTML completion provider:
<symbols type="style-class" syntax="css" />Is this a leftover from an older schema?
This variables attribute does not seem to be documented:
<behavior variables="true" suffix="(?!>)">Maybe from an older schema?
<set name="html.entities">
<string>&quot;</string>
<string>&apos;</string>The Markdown extension has two <surrounding-pairs> elements. Looks like a copy-pasto.
The code blocks handle dynamic subsyntaxes like this:
<subsyntax capture="2">
<alias key="objc" value="objective-c" />This mechanism is not documented (maybe intentionally?).
In Completions/PHP.xml there's a bunch of static completions with a name attribute:
<completion name="php.HttpDeflateStream::__construct" string="HttpDeflateStream::__construct">
<behavior symbol="function">
<append>($[int $flags = 0])</append>
</behavior>
</completion>Python's <syntax> element contains:
<symbols redefinition="within-construct">
<local scope="within-construct" />
<documentation mode="after" match="string" match-multiple="comment" />
<documentation mode="before" match-multiple="comment" skip="decorator" />
</symbols>The export-local context attribute is documented as a boolean, but Python uses:
<context behavior="whitespace" export-local="property" />The + sign is not allowed in syntax names:
<syntax name="html+erb">This override feature is not documented:
<collection name="directives" override="true">This looks like a bug:
<scope name="typescript.arguments">
<include syntax="self" collection="comments" />
<starts-with>
<expression>\(</expression>
<capture number="0" name="typescript.bracket" />
</starts-with>