From 8d094215f74dfd7cae34b2413543d273ef3c7df1 Mon Sep 17 00:00:00 2001 From: Alexander Zolotov Date: Fri, 11 Apr 2014 17:29:50 +0400 Subject: [PATCH] Make CustomTemplateCallback immutable --- .../template/CustomTemplateCallback.java | 16 +++++++--------- .../template/impl/TemplateManagerImpl.java | 4 ++-- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/codeInsight/template/CustomTemplateCallback.java b/platform/lang-impl/src/com/intellij/codeInsight/template/CustomTemplateCallback.java index 51d3a8d17107..7f9b9c389f2f 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/template/CustomTemplateCallback.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/template/CustomTemplateCallback.java @@ -41,7 +41,7 @@ public class CustomTemplateCallback { private final TemplateManager myTemplateManager; private final Editor myEditor; private final PsiFile myFile; - private int myOffset; + private final int myOffset; private final Project myProject; private final boolean myInInjectedFragment; @@ -52,14 +52,12 @@ public class CustomTemplateCallback { myProject = file.getProject(); myTemplateManager = TemplateManager.getInstance(myProject); - int offset = getOffset(wrapping, editor); - PsiElement element = InjectedLanguageUtil.findInjectedElementNoCommit(file, offset); + myOffset = getOffset(wrapping, editor); + PsiElement element = InjectedLanguageUtil.findInjectedElementNoCommit(file, myOffset); myFile = element != null ? element.getContainingFile() : file; myInInjectedFragment = InjectedLanguageManager.getInstance(myProject).isInjectedFragment(myFile); - myEditor = myInInjectedFragment ? InjectedLanguageUtil.getEditorForInjectedLanguageNoCommit(editor, file, offset) : editor; - - fixInitialState(wrapping); + myEditor = myInInjectedFragment ? InjectedLanguageUtil.getEditorForInjectedLanguageNoCommit(editor, file, myOffset) : editor; } @NotNull @@ -67,8 +65,8 @@ public class CustomTemplateCallback { return getContext(myFile, myOffset); } - public void fixInitialState(boolean wrapping) { - myOffset = getOffset(wrapping, myEditor); + public int getOffset() { + return myOffset; } private static int getOffset(boolean wrapping, Editor editor) { @@ -88,7 +86,7 @@ public class CustomTemplateCallback { } @NotNull - public List findApplicableTemplates(String key) { + public List findApplicableTemplates(@NotNull String key) { List templates = getMatchingTemplates(key); templates = filterApplicableCandidates(templates); return templates; diff --git a/platform/lang-impl/src/com/intellij/codeInsight/template/impl/TemplateManagerImpl.java b/platform/lang-impl/src/com/intellij/codeInsight/template/impl/TemplateManagerImpl.java index 2a6c011a4d11..080188c71d71 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/template/impl/TemplateManagerImpl.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/template/impl/TemplateManagerImpl.java @@ -281,7 +281,7 @@ public class TemplateManagerImpl extends TemplateManager implements ProjectCompo for (final CustomLiveTemplate customLiveTemplate : CustomLiveTemplate.EP_NAME.getExtensions()) { if (shortcutChar == customLiveTemplate.getShortcut()) { - if (editor.getCaretModel().getCaretCount() > 1 && supportsMultiCaretMode(customLiveTemplate)) { + if (editor.getCaretModel().getCaretCount() > 1 && !supportsMultiCaretMode(customLiveTemplate)) { continue; } if (isApplicable(customLiveTemplate, editor, file)) { @@ -308,7 +308,7 @@ public class TemplateManagerImpl extends TemplateManager implements ProjectCompo } private static boolean supportsMultiCaretMode(CustomLiveTemplate customLiveTemplate) { - return customLiveTemplate instanceof CustomLiveTemplateBase && !((CustomLiveTemplateBase)customLiveTemplate).supportsMultiCaret(); + return !(customLiveTemplate instanceof CustomLiveTemplateBase) || ((CustomLiveTemplateBase)customLiveTemplate).supportsMultiCaret(); } public static boolean isApplicable(CustomLiveTemplate customLiveTemplate, Editor editor, PsiFile file) {