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'); });