mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IJPL-162853 introduce CommonElementTypeConverter + LanguageExtensionWithAny
GitOrigin-RevId: 50b7fd9cd6f42f81e04a47caebb851510a4f6bc1
This commit is contained in:
committed by
intellij-monorepo-bot
parent
98cea08ce7
commit
d1edb06662
+3
-2
@@ -1,15 +1,16 @@
|
||||
// Copyright 2000-2023 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.codeInsight.completion;
|
||||
|
||||
import com.intellij.lang.Language;
|
||||
import com.intellij.lang.LanguageExtension;
|
||||
import com.intellij.lang.LanguageExtensionPoint;
|
||||
import com.intellij.lang.LanguageExtensionWithAny;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public final class CompletionConfidenceEP extends LanguageExtensionPoint<CompletionConfidence> {
|
||||
private static final LanguageExtension<CompletionConfidence> INSTANCE = new CompletionExtension<>("com.intellij.completion.confidence");
|
||||
private static final LanguageExtension<CompletionConfidence> INSTANCE = new LanguageExtensionWithAny<>("com.intellij.completion.confidence");
|
||||
|
||||
public static List<CompletionConfidence> forLanguage(@NotNull Language language) {
|
||||
return INSTANCE.allForLanguage(language);
|
||||
|
||||
+3
-2
@@ -1,10 +1,11 @@
|
||||
// Copyright 2000-2024 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.codeInsight.completion;
|
||||
|
||||
import com.intellij.codeInsight.lookup.LookupElement;
|
||||
import com.intellij.codeInsight.lookup.LookupElementPresentation;
|
||||
import com.intellij.lang.Language;
|
||||
import com.intellij.lang.LanguageExtension;
|
||||
import com.intellij.lang.LanguageExtensionWithAny;
|
||||
import com.intellij.openapi.application.ReadAction;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.extensions.ExtensionPointName;
|
||||
@@ -240,5 +241,5 @@ public abstract class CompletionContributor implements PossiblyDumbAware {
|
||||
return DumbService.getInstance(project).filterByDumbAwareness(forLanguage(language));
|
||||
}
|
||||
|
||||
private static final LanguageExtension<CompletionContributor> INSTANCE = new CompletionExtension<>(EP.getName());
|
||||
private static final LanguageExtension<CompletionContributor> INSTANCE = new LanguageExtensionWithAny<>(EP.getName());
|
||||
}
|
||||
|
||||
+4
-7
@@ -1,9 +1,6 @@
|
||||
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.codeInsight.completion;
|
||||
// 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.lang;
|
||||
|
||||
import com.intellij.lang.Language;
|
||||
import com.intellij.lang.LanguageExtension;
|
||||
import com.intellij.lang.MetaLanguage;
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@@ -12,8 +9,8 @@ import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
@ApiStatus.Internal
|
||||
public final class CompletionExtension<T> extends LanguageExtension<T> {
|
||||
public CompletionExtension(String epName) {
|
||||
public final class LanguageExtensionWithAny<T> extends LanguageExtension<T> {
|
||||
public LanguageExtensionWithAny(String epName) {
|
||||
super(epName);
|
||||
}
|
||||
|
||||
+3
-2
@@ -1,16 +1,17 @@
|
||||
// Copyright 2000-2023 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.codeInsight.completion;
|
||||
|
||||
import com.intellij.lang.Language;
|
||||
import com.intellij.lang.LanguageExtension;
|
||||
import com.intellij.lang.LanguageExtensionPoint;
|
||||
import com.intellij.lang.LanguageExtensionWithAny;
|
||||
import com.intellij.openapi.extensions.ExtensionPointName;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
public class PlainTextSymbolCompletionContributorEP extends LanguageExtensionPoint<PlainTextSymbolCompletionContributor> {
|
||||
private static final ExtensionPointName<PlainTextSymbolCompletionContributorEP> EP = new ExtensionPointName<>("com.intellij.completion.plainTextSymbol");
|
||||
private static final LanguageExtension<PlainTextSymbolCompletionContributor> INSTANCE = new CompletionExtension<>(EP.getName());
|
||||
private static final LanguageExtension<PlainTextSymbolCompletionContributor> INSTANCE = new LanguageExtensionWithAny<>(EP.getName());
|
||||
|
||||
public static @Nullable PlainTextSymbolCompletionContributor forLanguage(@NotNull Language language) {
|
||||
return INSTANCE.forLanguage(language);
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
// 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.lang
|
||||
|
||||
import com.intellij.codeInsight.completion.CompletionExtension
|
||||
import com.intellij.ide.plugins.PluginManagerCore
|
||||
import com.intellij.mock.MockLanguageFileType
|
||||
import com.intellij.openapi.Disposable
|
||||
@@ -39,7 +38,7 @@ class LanguageExtensionCacheTest : LightPlatformTestCase() {
|
||||
private val descriptor = DefaultPluginDescriptor(PluginId.getId(""), javaClass.classLoader)
|
||||
private lateinit var area: ExtensionsAreaImpl
|
||||
private lateinit var extension: LanguageExtension<String>
|
||||
private lateinit var completionExtension: CompletionExtension<String>
|
||||
private lateinit var completionExtension: LanguageExtensionWithAny<String>
|
||||
|
||||
override fun setUp() {
|
||||
super.setUp()
|
||||
@@ -50,7 +49,7 @@ class LanguageExtensionCacheTest : LightPlatformTestCase() {
|
||||
area.unregisterExtensionPoint(myCompletionExtensionPointName.name)
|
||||
})
|
||||
extension = LanguageExtension(myExtensionPointName, null)
|
||||
completionExtension = CompletionExtension(myCompletionExtensionPointName.name)
|
||||
completionExtension = LanguageExtensionWithAny(myCompletionExtensionPointName.name)
|
||||
}
|
||||
|
||||
private fun registerExtension(extensionPointName: ExtensionPointName<KeyedLazyInstance<String>>,
|
||||
|
||||
@@ -7,4 +7,8 @@
|
||||
<with attribute="implementationClass" implements="com.intellij.platform.syntax.psi.LanguageSyntaxDefinition"/>
|
||||
</extensionPoint>
|
||||
</extensionPoints>
|
||||
|
||||
<extensions defaultExtensionNs="com.intellij">
|
||||
<syntax.elementTypeConverter language="any" implementationClass="com.intellij.platform.syntax.psi.CommonElementTypeConverter"/>
|
||||
</extensions>
|
||||
</idea-plugin>
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
// 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.platform.syntax.psi
|
||||
|
||||
import com.intellij.platform.syntax.element.SyntaxTokenTypes
|
||||
import com.intellij.psi.TokenType
|
||||
|
||||
internal class CommonElementTypeConverter : ElementTypeConverterBase(mapOf(
|
||||
SyntaxTokenTypes.ERROR_ELEMENT to TokenType.ERROR_ELEMENT,
|
||||
SyntaxTokenTypes.WHITE_SPACE to TokenType.WHITE_SPACE,
|
||||
SyntaxTokenTypes.BAD_CHARACTER to TokenType.BAD_CHARACTER,
|
||||
))
|
||||
+4
-7
@@ -2,6 +2,7 @@
|
||||
package com.intellij.platform.syntax.psi
|
||||
|
||||
import com.intellij.lang.LanguageExtension
|
||||
import com.intellij.lang.LanguageExtensionWithAny
|
||||
import com.intellij.platform.syntax.SyntaxElementType
|
||||
import com.intellij.psi.tree.IElementType
|
||||
import org.jetbrains.annotations.ApiStatus
|
||||
@@ -42,11 +43,7 @@ internal fun ElementTypeConverter.convertNotNull(type: SyntaxElementType): IElem
|
||||
}
|
||||
|
||||
@ApiStatus.Internal
|
||||
class ElementTypeConverters : LanguageExtension<ElementTypeConverter>(
|
||||
"com.intellij.syntax.elementTypeConverter",
|
||||
) {
|
||||
companion object {
|
||||
@JvmStatic
|
||||
val instance: ElementTypeConverters = ElementTypeConverters()
|
||||
}
|
||||
object ElementTypeConverters {
|
||||
@JvmStatic
|
||||
val instance: LanguageExtension<ElementTypeConverter> = LanguageExtensionWithAny("com.intellij.syntax.elementTypeConverter")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user