mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-16 14:23:28 +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="HTML" implementationClass="com.intellij.lang.html.HTMLParserDefinition"/>
|
||||||
<lang.parserDefinition language="XHTML" implementationClass="com.intellij.lang.xhtml.XHTMLParserDefinition"/>
|
<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"/>
|
<syntax.elementTypeConverter language="XML" implementationClass="com.intellij.psi.xml.XmlElementTypeConverterExtension"/>
|
||||||
|
|
||||||
<syntaxHighlighter key="IDEA_PROJECT" implementationClass="com.intellij.ide.highlighter.XmlFileHighlighter"/>
|
<syntaxHighlighter key="IDEA_PROJECT" implementationClass="com.intellij.ide.highlighter.XmlFileHighlighter"/>
|
||||||
|
|||||||
@@ -148,5 +148,8 @@
|
|||||||
<fileBasedIndex implementation="com.intellij.xml.index.SchemaTypeInheritanceIndex"/>
|
<fileBasedIndex implementation="com.intellij.xml.index.SchemaTypeInheritanceIndex"/>
|
||||||
|
|
||||||
<daemon.changeLocalityDetector implementation="com.intellij.xml.XmlChangeLocalityDetector"/>
|
<daemon.changeLocalityDetector implementation="com.intellij.xml.XmlChangeLocalityDetector"/>
|
||||||
|
|
||||||
|
<languageStubDefinition language="HTML" implementationClass="com.intellij.xml.HtmlLanguageStubDefinition"/>
|
||||||
|
<stubElementRegistryExtension implementation="com.intellij.xml.HtmlStubRegistryExtension"/>
|
||||||
</extensions>
|
</extensions>
|
||||||
</idea-plugin>
|
</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.
|
// 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.IndexSink
|
||||||
import com.intellij.psi.stubs.PsiFileStub
|
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.StubRegistryExtension
|
||||||
import com.intellij.psi.stubs.StubSerializer
|
import com.intellij.psi.stubs.StubSerializer
|
||||||
import com.intellij.psi.stubs.StubSerializerId
|
import com.intellij.psi.stubs.StubSerializerId
|
||||||
import com.intellij.psi.xml.XmlElementType.HTML_FILE
|
import com.intellij.psi.xml.XmlElementType
|
||||||
|
|
||||||
class HtmlStubRegistryExtension : StubRegistryExtension {
|
class HtmlStubRegistryExtension : StubRegistryExtension {
|
||||||
override fun register(registry: StubRegistry) {
|
override fun register(registry: StubRegistry) {
|
||||||
registry.registerStubSerializer(HTML_FILE, HtmlFileStubSerializer())
|
registry.registerStubSerializer(XmlElementType.HTML_FILE, HtmlFileStubSerializer())
|
||||||
}
|
}
|
||||||
|
|
||||||
private class HtmlFileStubSerializer : StubSerializer<PsiFileStub<*>> {
|
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