diff --git a/platform/platform-resources/src/META-INF/XmlPlugin.xml b/platform/platform-resources/src/META-INF/XmlPlugin.xml
index 093ced26ac64..576c7622ddf4 100644
--- a/platform/platform-resources/src/META-INF/XmlPlugin.xml
+++ b/platform/platform-resources/src/META-INF/XmlPlugin.xml
@@ -40,9 +40,6 @@
-
-
-
diff --git a/xml/xml-analysis-impl/resources/META-INF/XmlAnalysisImpl.xml b/xml/xml-analysis-impl/resources/META-INF/XmlAnalysisImpl.xml
index 50b7506e7e97..257f86de0b5f 100644
--- a/xml/xml-analysis-impl/resources/META-INF/XmlAnalysisImpl.xml
+++ b/xml/xml-analysis-impl/resources/META-INF/XmlAnalysisImpl.xml
@@ -148,5 +148,8 @@
+
+
+
\ No newline at end of file
diff --git a/xml/xml-analysis-impl/src/com/intellij/xml/HtmlLanguageStubDefinition.kt b/xml/xml-analysis-impl/src/com/intellij/xml/HtmlLanguageStubDefinition.kt
new file mode 100644
index 000000000000..df56d5db9835
--- /dev/null
+++ b/xml/xml-analysis-impl/src/com/intellij/xml/HtmlLanguageStubDefinition.kt
@@ -0,0 +1,47 @@
+// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
+package com.intellij.xml
+
+import com.intellij.psi.StubBuilder
+import com.intellij.xml.HtmlLanguageStubVersionUtil.getHtmlStubVersion
+import com.intellij.psi.stubs.DefaultStubBuilder
+import com.intellij.psi.stubs.LanguageStubDefinition
+import com.intellij.psi.stubs.StubElementRegistryService
+import com.intellij.psi.tree.IElementType
+import com.intellij.psi.tree.IFileElementType
+
+class HtmlLanguageStubDefinition : LanguageStubDefinition {
+ override val stubVersion: Int
+ get() = getHtmlStubVersion() + 3
+
+ override val builder: StubBuilder
+ get() = DefaultStubBuilder()
+}
+
+object HtmlLanguageStubVersionUtil {
+ @Volatile
+ private var stubVersion = -1
+
+ @JvmStatic
+ fun getHtmlStubVersion(): Int {
+ val version = stubVersion
+ if (version != -1)
+ return version
+
+ val result = IElementType.enumerate { it is IFileElementType && isAcceptable(it) }
+ .mapNotNull { StubElementRegistryService.getInstance().getStubDescriptor(it.language)?.stubDefinition }
+ .sumOf { it.stubVersion }
+
+ stubVersion = result
+
+ return result
+ }
+
+ @JvmStatic
+ fun isAcceptable(elementType: IElementType): Boolean {
+ val id = elementType.language.id
+
+ //hardcoded values as in BaseHtmlLexer
+ //js and css dialect uses the same stub id as the parent language
+ return id == "JavaScript" || id == "CSS"
+ }
+}
\ No newline at end of file
diff --git a/xml/xml-parser/src/com/intellij/psi/xml/HtmlStubRegistryExtension.kt b/xml/xml-analysis-impl/src/com/intellij/xml/HtmlStubRegistryExtension.kt
similarity index 88%
rename from xml/xml-parser/src/com/intellij/psi/xml/HtmlStubRegistryExtension.kt
rename to xml/xml-analysis-impl/src/com/intellij/xml/HtmlStubRegistryExtension.kt
index 10e219e1e54b..b64d56a9a576 100644
--- a/xml/xml-parser/src/com/intellij/psi/xml/HtmlStubRegistryExtension.kt
+++ b/xml/xml-analysis-impl/src/com/intellij/xml/HtmlStubRegistryExtension.kt
@@ -1,5 +1,5 @@
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
-package com.intellij.psi.xml
+package com.intellij.xml
import com.intellij.psi.stubs.IndexSink
import com.intellij.psi.stubs.PsiFileStub
@@ -11,11 +11,11 @@ import com.intellij.psi.stubs.StubRegistry
import com.intellij.psi.stubs.StubRegistryExtension
import com.intellij.psi.stubs.StubSerializer
import com.intellij.psi.stubs.StubSerializerId
-import com.intellij.psi.xml.XmlElementType.HTML_FILE
+import com.intellij.psi.xml.XmlElementType
class HtmlStubRegistryExtension : StubRegistryExtension {
override fun register(registry: StubRegistry) {
- registry.registerStubSerializer(HTML_FILE, HtmlFileStubSerializer())
+ registry.registerStubSerializer(XmlElementType.HTML_FILE, HtmlFileStubSerializer())
}
private class HtmlFileStubSerializer : StubSerializer> {
diff --git a/xml/xml-parser/src/com/intellij/psi/xml/HtmlLanguageStubDefinition.kt b/xml/xml-parser/src/com/intellij/psi/xml/HtmlLanguageStubDefinition.kt
deleted file mode 100644
index e4707ad74b79..000000000000
--- a/xml/xml-parser/src/com/intellij/psi/xml/HtmlLanguageStubDefinition.kt
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
-package com.intellij.psi.xml
-
-import com.intellij.psi.StubBuilder
-import com.intellij.psi.stubs.DefaultStubBuilder
-import com.intellij.psi.stubs.LanguageStubDefinition
-import com.intellij.psi.stubs.StubElementRegistryService
-import com.intellij.psi.tree.IElementType
-import com.intellij.psi.tree.IElementType.enumerate
-import com.intellij.psi.tree.IFileElementType
-
-class HtmlLanguageStubDefinition : LanguageStubDefinition {
- override val stubVersion: Int
- get() = getHtmlStubVersion() + 3
-
- override val builder: StubBuilder
- get() = DefaultStubBuilder()
-
- companion object {
- @Volatile
- private var stubVersion = -1
-
- @JvmStatic
- fun getHtmlStubVersion(): Int {
- val version = stubVersion
- if (version != -1)
- return version
-
- val result = enumerate { it is IFileElementType && isAcceptable(it) }
- .mapNotNull { StubElementRegistryService.getInstance().getStubDescriptor(it.language)?.stubDefinition }
- .sumOf { it.stubVersion }
-
- stubVersion = result
-
- return result
- }
-
- @JvmStatic
- fun isAcceptable(elementType: IElementType): Boolean {
- val id = elementType.language.id
-
- //hardcoded values as in BaseHtmlLexer
- //js and css dialect uses the same stub id as the parent language
- return id == "JavaScript" || id == "CSS"
- }
- }
-}
\ No newline at end of file