diff --git a/extensions/html/server/src/modes/embeddedSupport.ts b/extensions/html/server/src/modes/embeddedSupport.ts
index 90f45705b56..cc992456b45 100644
--- a/extensions/html/server/src/modes/embeddedSupport.ts
+++ b/extensions/html/server/src/modes/embeddedSupport.ts
@@ -13,7 +13,7 @@ export interface LanguageRange extends Range {
}
export interface HTMLDocumentRegions {
- getEmbeddedDocument(languageId: string): TextDocument;
+ getEmbeddedDocument(languageId: string, ignoreAttributeValues?: boolean): TextDocument;
getLanguageRanges(range: Range): LanguageRange[];
getLanguageAtPosition(position: Position): string;
getLanguagesInDocument(): string[];
@@ -83,7 +83,7 @@ export function getDocumentRegions(languageService: LanguageService, document: T
}
return {
getLanguageRanges: (range: Range) => getLanguageRanges(document, regions, range),
- getEmbeddedDocument: (languageId: string) => getEmbeddedDocument(document, regions, languageId),
+ getEmbeddedDocument: (languageId: string, ignoreAttributeValues: boolean) => getEmbeddedDocument(document, regions, languageId, ignoreAttributeValues),
getLanguageAtPosition: (position: Position) => getLanguageAtPosition(document, regions, position),
getLanguagesInDocument: () => getLanguagesInDocument(document, regions),
getImportedScripts: () => importedScripts
@@ -160,13 +160,13 @@ function getLanguageAtPosition(document: TextDocument, regions: EmbeddedRegion[]
return 'html';
}
-function getEmbeddedDocument(document: TextDocument, contents: EmbeddedRegion[], languageId: string): TextDocument {
+function getEmbeddedDocument(document: TextDocument, contents: EmbeddedRegion[], languageId: string, ignoreAttributeValues: boolean): TextDocument {
let currentPos = 0;
let oldContent = document.getText();
let result = '';
let lastSuffix = '';
for (let c of contents) {
- if (c.languageId === languageId) {
+ if (c.languageId === languageId && (!ignoreAttributeValues || !c.attributeValue)) {
result = substituteWithWhitespace(result, currentPos, c.start, oldContent, lastSuffix, getPrefix(c));
result += oldContent.substring(c.start, c.end);
currentPos = c.end;
diff --git a/extensions/html/server/src/modes/javascriptMode.ts b/extensions/html/server/src/modes/javascriptMode.ts
index 04c2177a365..9d781ac1b34 100644
--- a/extensions/html/server/src/modes/javascriptMode.ts
+++ b/extensions/html/server/src/modes/javascriptMode.ts
@@ -241,7 +241,9 @@ export function getJavascriptMode(documentRegions: LanguageModelCache
+
\ No newline at end of file
diff --git a/extensions/html/server/src/test/fixtures/inputs/21634.html b/extensions/html/server/src/test/fixtures/inputs/21634.html
new file mode 100644
index 00000000000..f5ec28098f3
--- /dev/null
+++ b/extensions/html/server/src/test/fixtures/inputs/21634.html
@@ -0,0 +1,6 @@
+
+
+
\ 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 f84114afefe..b3d79eb8089 100644
--- a/extensions/html/server/src/test/formatting.test.ts
+++ b/extensions/html/server/src/test/formatting.test.ts
@@ -71,6 +71,7 @@ suite('HTML Embedded Formatting', () => {
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));
+ assertFormatWithFixture('21634.html', '21634.html');
})
test('Script end tag', function (): any {