forked from external/vscode-xml
parent
07b47c4748
commit
156e1ab435
5 changed files with 25 additions and 0 deletions
|
@ -86,6 +86,12 @@
|
||||||
"description": "Enables auto-reveal of elements in the XML Document view when a start tag is clicked in the editor.",
|
"description": "Enables auto-reveal of elements in the XML Document view when a start tag is clicked in the editor.",
|
||||||
"scope": "window"
|
"scope": "window"
|
||||||
},
|
},
|
||||||
|
"xmlTools.enforcePrettySelfClosingTagOnFormat": {
|
||||||
|
"type": "boolean",
|
||||||
|
"default": false,
|
||||||
|
"description": "Enforces a space before the forward slash at the end of a self-closing XML tag.",
|
||||||
|
"scope": "resource"
|
||||||
|
},
|
||||||
"xmlTools.ignoreDefaultNamespace": {
|
"xmlTools.ignoreDefaultNamespace": {
|
||||||
"type": "boolean",
|
"type": "boolean",
|
||||||
"default": true,
|
"default": true,
|
||||||
|
|
|
@ -43,6 +43,10 @@ export class Configuration {
|
||||||
return this._getForWindow<string>("xqueryExecutionInputSearchPattern");
|
return this._getForWindow<string>("xqueryExecutionInputSearchPattern");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static enforcePrettySelfClosingTagOnFormat(resource: Uri): boolean {
|
||||||
|
return this._getForResource<boolean>("enforcePrettySelfClosingTagOnFormat", resource);
|
||||||
|
}
|
||||||
|
|
||||||
static removeCommentsOnMinify(resource: Uri): boolean {
|
static removeCommentsOnMinify(resource: Uri): boolean {
|
||||||
return this._getForResource<boolean>("removeCommentsOnMinify", resource);
|
return this._getForResource<boolean>("removeCommentsOnMinify", resource);
|
||||||
}
|
}
|
||||||
|
|
|
@ -135,6 +135,14 @@ export class V2XmlFormatter implements XmlFormatter {
|
||||||
location = Location.StartTag;
|
location = Location.StartTag;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// approaching the end of a self-closing tag where there was no whitespace (issue #149)
|
||||||
|
else if ((location === Location.StartTag || location === Location.StartTagName)
|
||||||
|
&& cc === "/"
|
||||||
|
&& pc !== " "
|
||||||
|
&& options.enforcePrettySelfClosingTagOnFormat) {
|
||||||
|
output += " /";
|
||||||
|
}
|
||||||
|
|
||||||
// exiting StartTag or StartTag.StartTagName, entering Text
|
// exiting StartTag or StartTag.StartTagName, entering Text
|
||||||
else if ((location === Location.StartTag || location === Location.StartTagName) && cc === ">") {
|
else if ((location === Location.StartTag || location === Location.StartTagName) && cc === ">") {
|
||||||
// if this was a self-closing tag, we need to decrement the indent level and add a newLine
|
// if this was a self-closing tag, we need to decrement the indent level and add a newLine
|
||||||
|
|
|
@ -5,6 +5,7 @@ import * as constants from "../constants";
|
||||||
|
|
||||||
export interface XmlFormattingOptions {
|
export interface XmlFormattingOptions {
|
||||||
editorOptions: FormattingOptions;
|
editorOptions: FormattingOptions;
|
||||||
|
enforcePrettySelfClosingTagOnFormat: boolean;
|
||||||
newLine: string;
|
newLine: string;
|
||||||
removeCommentsOnMinify: boolean;
|
removeCommentsOnMinify: boolean;
|
||||||
splitAttributesOnFormat: boolean;
|
splitAttributesOnFormat: boolean;
|
||||||
|
@ -15,6 +16,7 @@ export class XmlFormattingOptionsFactory {
|
||||||
static getXmlFormattingOptions(formattingOptions: FormattingOptions, document: TextDocument): XmlFormattingOptions {
|
static getXmlFormattingOptions(formattingOptions: FormattingOptions, document: TextDocument): XmlFormattingOptions {
|
||||||
return {
|
return {
|
||||||
editorOptions: formattingOptions,
|
editorOptions: formattingOptions,
|
||||||
|
enforcePrettySelfClosingTagOnFormat: Configuration.enforcePrettySelfClosingTagOnFormat(document.uri),
|
||||||
newLine: (document.eol === EndOfLine.CRLF) ? "\r\n" : "\n",
|
newLine: (document.eol === EndOfLine.CRLF) ? "\r\n" : "\n",
|
||||||
removeCommentsOnMinify: Configuration.removeCommentsOnMinify(document.uri),
|
removeCommentsOnMinify: Configuration.removeCommentsOnMinify(document.uri),
|
||||||
splitAttributesOnFormat: Configuration.splitAttributesOnFormat(document.uri),
|
splitAttributesOnFormat: Configuration.splitAttributesOnFormat(document.uri),
|
||||||
|
|
|
@ -17,6 +17,7 @@ describe("V2XmlFormatter", () => {
|
||||||
insertSpaces: true,
|
insertSpaces: true,
|
||||||
tabSize: 4
|
tabSize: 4
|
||||||
},
|
},
|
||||||
|
enforcePrettySelfClosingTagOnFormat: false,
|
||||||
newLine: "\r\n",
|
newLine: "\r\n",
|
||||||
removeCommentsOnMinify: false,
|
removeCommentsOnMinify: false,
|
||||||
splitAttributesOnFormat: false,
|
splitAttributesOnFormat: false,
|
||||||
|
@ -60,7 +61,11 @@ describe("V2XmlFormatter", () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
it("should allow users to enforce space before self-closing tag slash", () => {
|
it("should allow users to enforce space before self-closing tag slash", () => {
|
||||||
|
options.enforcePrettySelfClosingTagOnFormat = true;
|
||||||
|
|
||||||
testFormatter(xmlFormatter, options, "issue-149");
|
testFormatter(xmlFormatter, options, "issue-149");
|
||||||
|
|
||||||
|
options.enforcePrettySelfClosingTagOnFormat = false;
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
Loading…
Add table
Reference in a new issue