From 3c4170ccb9362fb7cd040c22029a3d321cd75030 Mon Sep 17 00:00:00 2001 From: Valentin Fondaratov Date: Fri, 30 Jul 2021 17:52:01 +0200 Subject: [PATCH] FLEET-T-2087 support template variables and positioning in extract/altEnter templates GitOrigin-RevId: c4937d2d04e95468786f834737882e163dbb8f45 --- .../com/intellij/codeInsight/template/Template.java | 12 +++++++++++- .../codeInsight/template/impl/TemplateImpl.java | 1 + .../rename/inplace/InplaceRefactoring.java | 5 ++++- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/platform/analysis-impl/src/com/intellij/codeInsight/template/Template.java b/platform/analysis-impl/src/com/intellij/codeInsight/template/Template.java index 94061b01a832..1cc87ceaf55b 100644 --- a/platform/analysis-impl/src/com/intellij/codeInsight/template/Template.java +++ b/platform/analysis-impl/src/com/intellij/codeInsight/template/Template.java @@ -10,8 +10,11 @@ import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.List; + /** * Used to build and run a live template. + * * @see TemplateManager */ public abstract class Template implements PresentableLookupValue { @@ -26,17 +29,24 @@ public abstract class Template implements PresentableLookupValue { private boolean myUseStaticImport; public abstract void addTextSegment(@NotNull String text); + public abstract void addVariableSegment(@NonNls @NotNull String name); @NotNull public Variable addVariable(@NonNls @NotNull String name, @NotNull Expression defaultValueExpression, boolean isAlwaysStopAt) { return addVariable(name, defaultValueExpression, defaultValueExpression, isAlwaysStopAt); } + + public abstract List getVariables(); + @NotNull public abstract Variable addVariable(@NotNull Expression expression, boolean isAlwaysStopAt); @NotNull - public Variable addVariable(@NonNls @NotNull String name, Expression expression, Expression defaultValueExpression, boolean isAlwaysStopAt) { + public Variable addVariable(@NonNls @NotNull String name, + Expression expression, + Expression defaultValueExpression, + boolean isAlwaysStopAt) { return addVariable(name, expression, defaultValueExpression, isAlwaysStopAt, false); } diff --git a/platform/analysis-impl/src/com/intellij/codeInsight/template/impl/TemplateImpl.java b/platform/analysis-impl/src/com/intellij/codeInsight/template/impl/TemplateImpl.java index 188e90922998..f932f04fc702 100644 --- a/platform/analysis-impl/src/com/intellij/codeInsight/template/impl/TemplateImpl.java +++ b/platform/analysis-impl/src/com/intellij/codeInsight/template/impl/TemplateImpl.java @@ -385,6 +385,7 @@ public class TemplateImpl extends TemplateBase implements SchemeElement { return myVariables.get(i).skipOnStart(); } + @Override public ArrayList getVariables() { return new ArrayList<>(myVariables); } diff --git a/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/InplaceRefactoring.java b/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/InplaceRefactoring.java index 8ca83121b27a..054e79dae89d 100644 --- a/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/InplaceRefactoring.java +++ b/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/InplaceRefactoring.java @@ -1019,7 +1019,10 @@ public abstract class InplaceRefactoring { finally { if (!bind) { try { - ((EditorImpl)InjectedLanguageEditorUtil.getTopLevelEditor(myEditor)).stopDumbLater(); + Editor editor = InjectedLanguageEditorUtil.getTopLevelEditor(myEditor); + if (editor instanceof EditorImpl) { + ((EditorImpl)editor).stopDumbLater(); + } } finally { FinishMarkAction.finish(myProject, myEditor, myMarkAction);