From 4dcac6193637d382358588256c55071e585ed4d5 Mon Sep 17 00:00:00 2001 From: Josh Johnson Date: Fri, 8 Jan 2016 21:50:30 -0500 Subject: [PATCH 1/2] Fix #15 --- src/Extension.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/Extension.ts b/src/Extension.ts index e54d51e..379655b 100644 --- a/src/Extension.ts +++ b/src/Extension.ts @@ -51,6 +51,10 @@ export function deactivate() { } function _handleContextChange(editor: vsc.TextEditor): void { + if (!editor || !editor.document) { + return; + } + switch (editor.document.languageId) { case 'xquery': XQueryLintingFeatureProvider.provideXQueryDiagnostics(editor); From 5e637bb185f8768447f95f64ff64604d38f5354d Mon Sep 17 00:00:00 2001 From: Josh Johnson Date: Sat, 9 Jan 2016 00:35:50 -0500 Subject: [PATCH 2/2] Fix #16 --- src/services/XmlFormatter.ts | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/services/XmlFormatter.ts b/src/services/XmlFormatter.ts index 2aed3c1..a615acd 100644 --- a/src/services/XmlFormatter.ts +++ b/src/services/XmlFormatter.ts @@ -119,8 +119,10 @@ export class XmlFormatter { removeComments = false; } + xml = this._stripLineBreaks(xml); xml = (removeComments) ? xml.replace(/\/g, '') : xml; xml = xml.replace(/>\s{0,}<'); + xml = xml.replace(/"\s+(?=[^\s]+=)/g, '" '); return xml; } @@ -130,6 +132,34 @@ export class XmlFormatter { return `${this.newLine}${this.indentPattern.repeat(level)}${trailingValue}`; } + + private _stripLineBreaks(xml: string): string { + let output: string = ''; + let inTag: boolean = false; + let inTagName: boolean = false; + let inCdata: boolean = false; + let inAttribute: boolean = false; + + for (let i = 0; i < xml.length; i++) { + let char: string = xml.charAt(i); + + if (char == '!' && (xml.substr(i, 8) == '![CDATA[' || xml.substr(i, 3) == '!--')) { + inCdata = true; + } + + else if (char == ']' && (xml.substr(i, 3) == ']]>' || xml.substr(i, 3) == '-->')) { + inCdata = false; + } + + else if (char.search(/[\r\n]/g) > -1 && !inCdata) { + continue; + } + + output += char; + } + + return output; + } } export interface IXmlFormatterOptions {