diff --git a/src/language-html/parser-html.js b/src/language-html/parser-html.js
index 165653e12..32c8e00bd 100644
--- a/src/language-html/parser-html.js
+++ b/src/language-html/parser-html.js
@@ -87,7 +87,7 @@ function ngHtmlParser(
return false;
}
const language = node.attrs.find((attr) => attr.name === "lang")?.value;
- return !language || inferParserByLanguage(language, options) === "html";
+ return !language || inferParserByLanguage(options, language) === "html";
};
if (rootNodes.some(shouldParseAsHTML)) {
/** @type {ParserTreeResult | undefined} */
diff --git a/src/language-html/utils/index.js b/src/language-html/utils/index.js
index c23f9e356..3bdee04c8 100644
--- a/src/language-html/utils/index.js
+++ b/src/language-html/utils/index.js
@@ -386,7 +386,7 @@ function inferStyleParser(node, options) {
// But, we need to handle `"stylus"` here for printing a style block in Vue SFC as stylus code by external plugin.
// https://github.com/prettier/prettier/pull/12707
if (lang === "stylus") {
- return inferParserByLanguage("stylus", options);
+ return inferParserByLanguage(options, "stylus");
}
}
@@ -406,7 +406,7 @@ function inferScriptParser(node, options) {
return (
_inferScriptParser(node) ||
(!("src" in node.attrMap) &&
- inferParserByLanguage(node.attrMap.lang, options))
+ inferParserByLanguage(options, node.attrMap.lang))
);
}
}
diff --git a/src/language-markdown/embed.js b/src/language-markdown/embed.js
index 1e4c509ba..4c80d772a 100644
--- a/src/language-markdown/embed.js
+++ b/src/language-markdown/embed.js
@@ -9,7 +9,7 @@ function embed(path, options) {
const { node } = path;
if (node.type === "code" && node.lang !== null) {
- const parser = inferParserByLanguage(node.lang, options);
+ const parser = inferParserByLanguage(options, node.lang);
if (parser) {
return async (textToDoc) => {
const styleUnit = options.__inJsTemplate ? "~" : "`";
diff --git a/src/utils/infer-parser-by-language.js b/src/utils/infer-parser-by-language.js
index 18af7863f..36e147553 100644
--- a/src/utils/infer-parser-by-language.js
+++ b/src/utils/infer-parser-by-language.js
@@ -1,7 +1,10 @@
-import { getSupportInfo } from "../main/support.js";
+function inferParserByLanguage(options, language) {
+ if (!language) {
+ return;
+ }
+
+ const languages = options.plugins.flatMap((plugin) => plugin.languages ?? []);
-function inferParserByLanguage(language, options) {
- const { languages } = getSupportInfo({ plugins: options.plugins });
const matched =
languages.find(({ name }) => name.toLowerCase() === language) ??
languages.find(({ aliases }) => aliases?.includes(language)) ??