mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-15 02:59:33 +07:00
IJPL-189507 Move XML stub-related extensions to intellij.xml.analysis.impl
GitOrigin-RevId: 4340fbdaade3b9f060f3a1c82951c8182ec0ce26
This commit is contained in:
committed by
intellij-monorepo-bot
parent
8fdb8d1bbd
commit
3acce61116
@@ -40,9 +40,6 @@
|
||||
<lang.parserDefinition language="HTML" implementationClass="com.intellij.lang.html.HTMLParserDefinition"/>
|
||||
<lang.parserDefinition language="XHTML" implementationClass="com.intellij.lang.xhtml.XHTMLParserDefinition"/>
|
||||
|
||||
<languageStubDefinition language="HTML" implementationClass="com.intellij.psi.xml.HtmlLanguageStubDefinition"/>
|
||||
<stubElementRegistryExtension implementation="com.intellij.psi.xml.HtmlStubRegistryExtension"/>
|
||||
|
||||
<syntax.elementTypeConverter language="XML" implementationClass="com.intellij.psi.xml.XmlElementTypeConverterExtension"/>
|
||||
|
||||
<syntaxHighlighter key="IDEA_PROJECT" implementationClass="com.intellij.ide.highlighter.XmlFileHighlighter"/>
|
||||
|
||||
@@ -148,5 +148,8 @@
|
||||
<fileBasedIndex implementation="com.intellij.xml.index.SchemaTypeInheritanceIndex"/>
|
||||
|
||||
<daemon.changeLocalityDetector implementation="com.intellij.xml.XmlChangeLocalityDetector"/>
|
||||
|
||||
<languageStubDefinition language="HTML" implementationClass="com.intellij.xml.HtmlLanguageStubDefinition"/>
|
||||
<stubElementRegistryExtension implementation="com.intellij.xml.HtmlStubRegistryExtension"/>
|
||||
</extensions>
|
||||
</idea-plugin>
|
||||
@@ -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"
|
||||
}
|
||||
}
|
||||
@@ -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<PsiFileStub<*>> {
|
||||
@@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user