diff --git a/extensions/html/server/src/modes/embeddedSupport.ts b/extensions/html/server/src/modes/embeddedSupport.ts index cc992456b450a4565becfd8da2ed872cad885a12..25244863c44f6e5a2e221030a72295a4b1c0036d 100644 --- a/extensions/html/server/src/modes/embeddedSupport.ts +++ b/extensions/html/server/src/modes/embeddedSupport.ts @@ -58,7 +58,7 @@ export function getDocumentRegions(languageService: LanguageService, document: T } importedScripts.push(value); } else if (lastAttributeName === 'type' && lastTagName.toLowerCase() === 'script') { - if (/["'](text|application)\/(java|ecma)script["']/.test(scanner.getTokenText())) { + if (/["'](module|(text|application)\/(java|ecma)script)["']/.test(scanner.getTokenText())) { languageIdFromType = 'javascript'; } else { languageIdFromType = void 0; diff --git a/extensions/html/server/src/modes/htmlMode.ts b/extensions/html/server/src/modes/htmlMode.ts index ccfc76adf6cba33cf355d77d34b3f70f5053987a..38a2abc2367a23cc857494e35719025c719e5b15 100644 --- a/extensions/html/server/src/modes/htmlMode.ts +++ b/extensions/html/server/src/modes/htmlMode.ts @@ -5,7 +5,7 @@ 'use strict'; import { getLanguageModelCache } from '../languageModelCache'; -import { LanguageService as HTMLLanguageService, HTMLDocument, DocumentContext, FormattingOptions } from 'vscode-html-languageservice'; +import { LanguageService as HTMLLanguageService, HTMLDocument, DocumentContext, FormattingOptions, HTMLFormatConfiguration } from 'vscode-html-languageservice'; import { TextDocument, Position, Range } from 'vscode-languageserver-types'; import { LanguageMode, Settings } from './languageModes'; @@ -40,12 +40,18 @@ export function getHTMLMode(htmlLanguageService: HTMLLanguageService): LanguageM return htmlLanguageService.findDocumentSymbols(document, htmlDocuments.get(document)); }, format(document: TextDocument, range: Range, formatParams: FormattingOptions, settings: Settings = globalSettings) { - let formatSettings = settings && settings.html && settings.html.format; - if (!formatSettings) { - formatSettings = formatParams; + let formatSettings: HTMLFormatConfiguration = settings && settings.html && settings.html.format; + if (formatSettings) { + formatSettings = merge(formatSettings, {}); } else { - formatSettings = merge(formatParams, merge(formatSettings, {})); + formatSettings = {}; } + if (formatSettings.contentUnformatted) { + formatSettings.contentUnformatted = formatSettings.contentUnformatted + ',script'; + } else { + formatSettings.contentUnformatted = 'script'; + } + formatSettings = merge(formatParams, formatSettings); return htmlLanguageService.format(document, range, formatSettings); }, doAutoClose(document: TextDocument, position: Position) { diff --git a/extensions/html/server/src/test/fixtures/expected/19813-4spaces.html b/extensions/html/server/src/test/fixtures/expected/19813-4spaces.html index d6bf81365627b5f13f91dfc9ef9287945fb22b79..0a5a4431a1a206804c007eb43098a24b67ed6a84 100644 --- a/extensions/html/server/src/test/fixtures/expected/19813-4spaces.html +++ b/extensions/html/server/src/test/fixtures/expected/19813-4spaces.html @@ -13,7 +13,6 @@ } }, }); - diff --git a/extensions/html/server/src/test/fixtures/expected/19813-tab.html b/extensions/html/server/src/test/fixtures/expected/19813-tab.html index 5f0bf9e0003a5c42941445170c6a35b19a7e4f6e..6292fe9cd4e1a72ff022a906b90d266beed28393 100644 --- a/extensions/html/server/src/test/fixtures/expected/19813-tab.html +++ b/extensions/html/server/src/test/fixtures/expected/19813-tab.html @@ -13,7 +13,6 @@ } }, }); - diff --git a/extensions/html/server/src/test/fixtures/expected/19813.html b/extensions/html/server/src/test/fixtures/expected/19813.html index 296e4ba3e96f35728eebe5c335b5333472b8afed..aac7580ac1e5ad3c950e449c5f0a349a65243f82 100644 --- a/extensions/html/server/src/test/fixtures/expected/19813.html +++ b/extensions/html/server/src/test/fixtures/expected/19813.html @@ -13,7 +13,6 @@ } }, }); - diff --git a/extensions/html/server/src/test/fixtures/expected/21634.html b/extensions/html/server/src/test/fixtures/expected/21634.html index 189aab98163e5a2e0d2d45d6965f516709add1d3..8398821a6aed15c1cd1343667309e42dcfa4882a 100644 --- a/extensions/html/server/src/test/fixtures/expected/21634.html +++ b/extensions/html/server/src/test/fixtures/expected/21634.html @@ -3,5 +3,4 @@ \ 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 713d2943ed436816ba7e3c85d8fb8e0c99092cd6..56dfb4839e658343cee20a52d6788755c863ee28 100644 --- a/extensions/html/server/src/test/formatting.test.ts +++ b/extensions/html/server/src/test/formatting.test.ts @@ -58,12 +58,11 @@ suite('HTML Embedded Formatting', () => { test('HTML & Scripts', function (): any { assertFormat('', '\n\n\n \n\n\n'); - assertFormat('', '\n\n\n \n\n\n'); - assertFormat('', '\n\n\n \n\n\n'); - assertFormat('\n ', '\n\n\n \n\n\n'); - assertFormat('\n ', '\n\n\n \n\n\n'); - - assertFormat('\n ||', '\n '); + assertFormat('', '\n\n\n \n\n\n'); + assertFormat('', '\n\n\n \n\n\n'); + assertFormat('\n ', '\n\n\n \n\n\n'); + assertFormat('\n ', '\n\n\n \n\n\n'); + assertFormat('\n ||', '\n '); }); test('HTLM & Scripts - Fixtures', function () { @@ -74,11 +73,11 @@ suite('HTML Embedded Formatting', () => { }); test('Script end tag', function (): any { - assertFormat('\n\n ', '\n\n\n \n\n\n'); + assertFormat('\n\n ', '\n\n\n \n\n\n'); }); test('HTML & Multiple Scripts', function (): any { - assertFormat('\n', '\n\n\n \n \n\n\n'); + assertFormat('\n', '\n\n\n \n \n\n\n'); }); test('HTML & Styles', function (): any { @@ -95,7 +94,7 @@ suite('HTML Embedded Formatting', () => { }; assertFormat('

Hello

', '\n\n\n

Hello

\n\n\n\n', options); assertFormat('|

Hello

|', '\n

Hello

\n', options); - assertFormat('', '\n\n\n \n\n\n\n', options); + assertFormat('', '\n\n\n \n\n\n\n', options); }); test('Inside script', function (): any { @@ -104,7 +103,7 @@ suite('HTML Embedded Formatting', () => { }); test('Range after new line', function (): any { - assertFormat('\n |\n|', '\n \n'); + assertFormat('\n |\n|', '\n \n'); }); });