diff --git a/extensions/html/server/src/modes/javascriptMode.ts b/extensions/html/server/src/modes/javascriptMode.ts
index deb1bc2977e..52377fab1cc 100644
--- a/extensions/html/server/src/modes/javascriptMode.ts
+++ b/extensions/html/server/src/modes/javascriptMode.ts
@@ -23,12 +23,19 @@ export function getJavascriptMode(documentRegions: LanguageModelCache compilerOptions,
getScriptFileNames: () => [FILE_NAME, JQUERY_D_TS],
getScriptVersion: (fileName: string) => {
if (fileName === FILE_NAME) {
- return String(currentTextDocument.version);
+ return String(scriptFileVersion);
}
return '1'; // default lib an jquery.d.ts are static
},
@@ -62,7 +69,7 @@ export function getJavascriptMode(documentRegions: LanguageModelCache {
return {
@@ -73,7 +80,7 @@ export function getJavascriptMode(documentRegions: LanguageModelCache {
@@ -172,7 +179,7 @@ export function getJavascriptMode(documentRegions: LanguageModelCache d.fileName === FILE_NAME).map(d => {
@@ -221,7 +228,7 @@ export function getJavascriptMode(documentRegions: LanguageModelCache d.fileName === FILE_NAME).map(d => {
@@ -234,7 +241,7 @@ export function getJavascriptMode(documentRegions: LanguageModelCache
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/extensions/html/server/src/test/fixtures/expected/19813-tab.html b/extensions/html/server/src/test/fixtures/expected/19813-tab.html
new file mode 100644
index 00000000000..4413c5ef3b3
--- /dev/null
+++ b/extensions/html/server/src/test/fixtures/expected/19813-tab.html
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/extensions/html/server/src/test/fixtures/expected/19813.html b/extensions/html/server/src/test/fixtures/expected/19813.html
new file mode 100644
index 00000000000..04485e3ff71
--- /dev/null
+++ b/extensions/html/server/src/test/fixtures/expected/19813.html
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/extensions/html/server/src/test/fixtures/inputs/19813.html b/extensions/html/server/src/test/fixtures/inputs/19813.html
new file mode 100644
index 00000000000..e61821b691f
--- /dev/null
+++ b/extensions/html/server/src/test/fixtures/inputs/19813.html
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/extensions/html/server/src/test/formatting.test.ts b/extensions/html/server/src/test/formatting.test.ts
index be6a2a5db69..f84114afefe 100644
--- a/extensions/html/server/src/test/formatting.test.ts
+++ b/extensions/html/server/src/test/formatting.test.ts
@@ -4,6 +4,9 @@
*--------------------------------------------------------------------------------------------*/
'use strict';
+import * as path from 'path'
+import * as fs from 'fs'
+
import * as assert from 'assert';
import { getLanguageModes } from '../modes/languageModes';
import { TextDocument, Range, TextEdit, FormattingOptions } from 'vscode-languageserver-types';
@@ -12,7 +15,7 @@ import { format } from '../modes/formatting';
suite('HTML Embedded Formatting', () => {
- function assertFormat(value: string, expected: string, options?: any): void {
+ function assertFormat(value: string, expected: string, options?: any, formatOptions?: FormattingOptions): void {
var languageModes = getLanguageModes({ css: true, javascript: true });
if (options) {
languageModes.getAllModes().forEach(m => m.configure(options));
@@ -31,7 +34,9 @@ suite('HTML Embedded Formatting', () => {
}
let document = TextDocument.create('test://test/test.html', 'html', 0, value);
let range = Range.create(document.positionAt(rangeStartOffset), document.positionAt(rangeEndOffset));
- let formatOptions = FormattingOptions.create(2, true);
+ if (!formatOptions) {
+ formatOptions = FormattingOptions.create(2, true);
+ }
let result = format(languageModes, document, range, formatOptions, { css: true, javascript: true });
@@ -39,6 +44,12 @@ suite('HTML Embedded Formatting', () => {
assert.equal(actual, expected);
}
+ function assertFormatWithFixture(fixtureName: string, expectedPath: string, options?: any, formatOptions?: FormattingOptions): void {
+ let input = fs.readFileSync(path.join(__dirname, 'fixtures', 'inputs', fixtureName)).toString();
+ let expected = fs.readFileSync(path.join(__dirname, 'fixtures', 'expected', expectedPath)).toString();
+ assertFormat(input, expected, options, formatOptions);
+ }
+
test('HTML only', function (): any {
assertFormat('Hello
', '\n\n\n Hello
\n\n\n');
assertFormat('|Hello
|', '\n\n\n Hello
\n\n\n');
@@ -56,6 +67,12 @@ suite('HTML Embedded Formatting', () => {
assertFormat('\n ', '\n ');
});
+ test('HTLM & Scripts - Fixtures', function() {
+ assertFormatWithFixture('19813.html', '19813.html');
+ assertFormatWithFixture('19813.html', '19813-4spaces.html', void 0, FormattingOptions.create(4, true));
+ assertFormatWithFixture('19813.html', '19813-tab.html', void 0, FormattingOptions.create(1, false));
+ })
+
test('Script end tag', function (): any {
assertFormat('\n\n ', '\n\n\n \n\n\n');
});