From 848dbbec29d16ecf75a7032142600ea2329a1493 Mon Sep 17 00:00:00 2001 From: Max Medvedev Date: Mon, 13 Oct 2025 12:33:19 +0200 Subject: [PATCH] [completion] IJPL-207762 registry key for enabling frontend completion GitOrigin-RevId: 1c6d4e53edc410c6c7c72d8a4346577c51aec16e --- platform/lang-impl/api-dump-unreviewed.txt | 2 +- .../actions/ClassNameCompletionAction.java | 13 ++++++++--- .../actions/CodeCompletionAction.java | 23 ++++++++++++++++++- .../actions/SmartCodeCompletionAction.java | 13 ++++++++--- .../lookup/impl/actions/ChooseItemAction.java | 16 +++++++++++-- .../src/META-INF/PlatformExtensions.xml | 6 +++++ 6 files changed, 63 insertions(+), 10 deletions(-) diff --git a/platform/lang-impl/api-dump-unreviewed.txt b/platform/lang-impl/api-dump-unreviewed.txt index 9e8ebecd73c1..ad35b7abd074 100644 --- a/platform/lang-impl/api-dump-unreviewed.txt +++ b/platform/lang-impl/api-dump-unreviewed.txt @@ -4436,8 +4436,8 @@ f:com.intellij.codeInsight.lookup.impl.LookupTypedHandler - execute(com.intellij.openapi.editor.Editor,C,com.intellij.openapi.actionSystem.DataContext):V - s:getLookupAction(C,com.intellij.codeInsight.lookup.impl.LookupImpl):com.intellij.codeInsight.lookup.CharFilter$Result a:com.intellij.codeInsight.lookup.impl.actions.ChooseItemAction -- com.intellij.openapi.editor.actionSystem.EditorAction - com.intellij.codeInsight.hint.HintManagerImpl$ActionToIgnore +- com.intellij.openapi.editor.actionSystem.EditorAction - com.intellij.openapi.editor.actionSystem.LatencyAwareEditorAction - (com.intellij.codeInsight.lookup.impl.actions.ChooseItemAction$Handler):V - s:hasTemplatePrefix(com.intellij.codeInsight.lookup.impl.LookupImpl,C):Z diff --git a/platform/lang-impl/src/com/intellij/codeInsight/completion/actions/ClassNameCompletionAction.java b/platform/lang-impl/src/com/intellij/codeInsight/completion/actions/ClassNameCompletionAction.java index 66cf70c3c79d..0685afdf15fd 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/completion/actions/ClassNameCompletionAction.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/completion/actions/ClassNameCompletionAction.java @@ -1,19 +1,26 @@ -// 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.actions; import com.intellij.codeInsight.completion.CompletionType; import com.intellij.openapi.actionSystem.AnActionEvent; +import com.intellij.openapi.actionSystem.remoting.ActionRemoteBehavior; +import com.intellij.openapi.actionSystem.remoting.ActionRemoteBehaviorSpecification; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; @ApiStatus.Internal -public final class ClassNameCompletionAction extends BaseCodeCompletionAction{ +public final class ClassNameCompletionAction extends BaseCodeCompletionAction implements ActionRemoteBehaviorSpecification { @Override public void actionPerformed(@NotNull AnActionEvent e) { invokeCompletion(e, CompletionType.BASIC, 2); } - + @Override + @ApiStatus.Internal + public @Nullable ActionRemoteBehavior getBehavior() { + return CodeCompletionAction.getCompletionBehavior(); + } } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/completion/actions/CodeCompletionAction.java b/platform/lang-impl/src/com/intellij/codeInsight/completion/actions/CodeCompletionAction.java index c0b687361498..a962e4f16fa5 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/completion/actions/CodeCompletionAction.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/completion/actions/CodeCompletionAction.java @@ -5,12 +5,33 @@ package com.intellij.codeInsight.completion.actions; import com.intellij.codeInsight.completion.CompletionType; import com.intellij.ide.lightEdit.LightEditCompatible; import com.intellij.openapi.actionSystem.AnActionEvent; +import com.intellij.openapi.actionSystem.remoting.ActionRemoteBehavior; +import com.intellij.openapi.actionSystem.remoting.ActionRemoteBehaviorSpecification; +import com.intellij.openapi.util.registry.Registry; +import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; -public class CodeCompletionAction extends BaseCodeCompletionAction implements LightEditCompatible { +public class CodeCompletionAction extends BaseCodeCompletionAction implements LightEditCompatible, ActionRemoteBehaviorSpecification { @Override public void actionPerformed(@NotNull AnActionEvent e) { invokeCompletion(e, CompletionType.BASIC, 1); } + + @Override + @ApiStatus.Internal + public final @Nullable ActionRemoteBehavior getBehavior() { + return getCompletionBehavior(); + } + + @ApiStatus.Internal + public static @Nullable ActionRemoteBehavior getCompletionBehavior() { + if (Registry.is("remdev.completion.on.frontend")) { + return ActionRemoteBehavior.FrontendOnly; + } + else { + return null; + } + } } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/completion/actions/SmartCodeCompletionAction.java b/platform/lang-impl/src/com/intellij/codeInsight/completion/actions/SmartCodeCompletionAction.java index a5454f86d3b2..ef92342830dd 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/completion/actions/SmartCodeCompletionAction.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/completion/actions/SmartCodeCompletionAction.java @@ -1,19 +1,26 @@ -// 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.actions; import com.intellij.codeInsight.completion.CompletionType; import com.intellij.openapi.actionSystem.AnActionEvent; +import com.intellij.openapi.actionSystem.remoting.ActionRemoteBehavior; +import com.intellij.openapi.actionSystem.remoting.ActionRemoteBehaviorSpecification; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; @ApiStatus.Internal -public final class SmartCodeCompletionAction extends BaseCodeCompletionAction{ +public final class SmartCodeCompletionAction extends BaseCodeCompletionAction implements ActionRemoteBehaviorSpecification { @Override public void actionPerformed(@NotNull AnActionEvent e) { invokeCompletion(e, CompletionType.SMART, 1); } - + @Override + @ApiStatus.Internal + public @Nullable ActionRemoteBehavior getBehavior() { + return CodeCompletionAction.getCompletionBehavior(); + } } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/actions/ChooseItemAction.java b/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/actions/ChooseItemAction.java index 1ec05c68fcbf..36919f5fb9a1 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/actions/ChooseItemAction.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/actions/ChooseItemAction.java @@ -1,9 +1,10 @@ -// 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.lookup.impl.actions; import com.intellij.codeInsight.completion.CompletionProcess; import com.intellij.codeInsight.completion.CompletionService; +import com.intellij.codeInsight.completion.actions.CodeCompletionAction; import com.intellij.codeInsight.hint.HintManagerImpl; import com.intellij.codeInsight.lookup.Lookup; import com.intellij.codeInsight.lookup.LookupFocusDegree; @@ -13,6 +14,8 @@ import com.intellij.codeInsight.template.TemplateActionContext; import com.intellij.codeInsight.template.impl.*; import com.intellij.codeInsight.template.impl.editorActions.ExpandLiveTemplateCustomAction; import com.intellij.openapi.actionSystem.DataContext; +import com.intellij.openapi.actionSystem.remoting.ActionRemoteBehavior; +import com.intellij.openapi.actionSystem.remoting.ActionRemoteBehaviorSpecification; import com.intellij.openapi.editor.Caret; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.editor.actionSystem.EditorAction; @@ -21,16 +24,25 @@ import com.intellij.openapi.editor.actionSystem.LatencyAwareEditorAction; import com.intellij.psi.PsiDocumentManager; import com.intellij.psi.PsiFile; import com.intellij.util.containers.ContainerUtil; +import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.List; -public abstract class ChooseItemAction extends EditorAction implements HintManagerImpl.ActionToIgnore, LatencyAwareEditorAction { +public abstract class ChooseItemAction extends EditorAction implements HintManagerImpl.ActionToIgnore, + LatencyAwareEditorAction, + ActionRemoteBehaviorSpecification { public ChooseItemAction(Handler handler) { super(handler); } + @Override + @ApiStatus.Internal + public final @Nullable ActionRemoteBehavior getBehavior() { + return CodeCompletionAction.getCompletionBehavior(); + } + public static class Handler extends EditorActionHandler { final boolean focusedOnly; final char finishingChar; diff --git a/platform/platform-resources/src/META-INF/PlatformExtensions.xml b/platform/platform-resources/src/META-INF/PlatformExtensions.xml index 35acec229474..d0b560e6774a 100644 --- a/platform/platform-resources/src/META-INF/PlatformExtensions.xml +++ b/platform/platform-resources/src/META-INF/PlatformExtensions.xml @@ -901,6 +901,12 @@ id="EditorDeleteLine.checkHandler" /> + +