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