diff --git a/src/services/htmlFormatter.ts b/src/services/htmlFormatter.ts
index 46f32ea..b5cec75 100644
--- a/src/services/htmlFormatter.ts
+++ b/src/services/htmlFormatter.ts
@@ -42,6 +42,18 @@ export function format(document: TextDocument, range: Range | undefined, options
}
range = Range.create(document.positionAt(startOffset), document.positionAt(endOffset));
+ //Do not modify if substring in inside an element
+ let firstHalf = value.substring(0, startOffset);
+ let secondHalf = value.substring(endOffset, value.length);
+ if(new RegExp(/.*[<][^>]*$/).test(firstHalf) && new RegExp(/^[^<]*[>].*/).test(secondHalf) ){
+ //return without modification
+ value = value.substring(startOffset, endOffset);
+ return [{
+ range: range,
+ newText: value
+ }];
+ }
+
includesEnd = endOffset === value.length;
value = value.substring(startOffset, endOffset);
diff --git a/src/test/formatter.test.ts b/src/test/formatter.test.ts
index 16bcf3b..688664a 100644
--- a/src/test/formatter.test.ts
+++ b/src/test/formatter.test.ts
@@ -193,4 +193,17 @@ suite('JSON Formatter', () => {
format(content, expected);
});
-});
\ No newline at end of file
+
+ test('bug 58693', () => {
+ var content = [
+ ''
+ ].join('\n');
+
+ var expected = [
+ ''
+ ].join('\n');
+
+ format(content, expected);
+ });
+
+});