From c11e35837d4702fbc3a8b78d7237eeb5f8248e27 Mon Sep 17 00:00:00 2001 From: peter Date: Mon, 18 Apr 2011 13:46:39 +0200 Subject: [PATCH] less code for tab overwriting --- .../completion/CodeCompletionHandlerBase.java | 24 ++++++------------- .../CompletionProgressIndicator.java | 2 +- 2 files changed, 8 insertions(+), 18 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/codeInsight/completion/CodeCompletionHandlerBase.java b/platform/lang-impl/src/com/intellij/codeInsight/completion/CodeCompletionHandlerBase.java index ffbe17b86dba..a99115b407d0 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/completion/CodeCompletionHandlerBase.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/completion/CodeCompletionHandlerBase.java @@ -436,19 +436,6 @@ public class CodeCompletionHandlerBase implements CodeInsightActionHandler { } } - protected static void selectLookupItem(final LookupElement item, final char completionChar, final CompletionProgressIndicator context, final List items) { - final int caretOffset = context.getEditor().getCaretModel().getOffset(); - - context.getOffsetMap().addOffset(CompletionInitializationContext.SELECTION_END_OFFSET, caretOffset); - final int idEnd = context.getIdentifierEndOffset(); - final int identifierEndOffset = - CompletionUtil.isOverwrite(item, completionChar) && context.getSelectionEndOffset() == idEnd ? - caretOffset : - Math.max(caretOffset, idEnd); - context.getOffsetMap().addOffset(CompletionInitializationContext.IDENTIFIER_END_OFFSET, identifierEndOffset); - lookupItemSelected(context, item, completionChar, items); - } - private CompletionContext insertDummyIdentifier(CompletionInitializationContext initContext) { final PsiFile originalFile = initContext.getFile(); PsiFile fileCopy = createFileCopy(originalFile); @@ -500,17 +487,21 @@ public class CodeCompletionHandlerBase implements CodeInsightActionHandler { return invokedExplicitly && CodeInsightSettings.getInstance().AUTOCOMPLETE_COMMON_PREFIX; } - private static void lookupItemSelected(final CompletionProgressIndicator indicator, @NotNull final LookupElement item, final char completionChar, + protected static void lookupItemSelected(final CompletionProgressIndicator indicator, @NotNull final LookupElement item, final char completionChar, final List items) { - if (indicator.getHandler().autopopup) { + if (indicator.isAutopopupCompletion()) { FeatureUsageTracker.getInstance().triggerFeatureUsed(CodeCompletionFeatures.EDITING_COMPLETION_BASIC); } final Editor editor = indicator.getEditor(); + final int caretOffset = editor.getCaretModel().getOffset(); + indicator.getOffsetMap().addOffset(CompletionInitializationContext.SELECTION_END_OFFSET, caretOffset); + final WatchingInsertionContext context = new WatchingInsertionContext(indicator, completionChar, items, editor); ApplicationManager.getApplication().runWriteAction(new Runnable() { public void run() { - final int idEndOffset = indicator.getIdentifierEndOffset(); + final int idEndOffset = Math.max(caretOffset, indicator.getIdentifierEndOffset()); + indicator.getOffsetMap().addOffset(CompletionInitializationContext.IDENTIFIER_END_OFFSET, idEndOffset); if (idEndOffset != indicator.getSelectionEndOffset() && CompletionUtil.isOverwrite(item, completionChar)) { editor.getDocument().deleteString(indicator.getSelectionEndOffset(), idEndOffset); } @@ -522,7 +513,6 @@ public class CodeCompletionHandlerBase implements CodeInsightActionHandler { item.handleInsert(context); PostprocessReformattingAspect.getInstance(indicator.getProject()).doPostponedFormatting(); - final int tailOffset = context.getTailOffset(); if (tailOffset >= 0) { if (context.shouldAddCompletionChar()) { diff --git a/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionProgressIndicator.java b/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionProgressIndicator.java index 43573f76a2cc..bed4ba3b109f 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionProgressIndicator.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionProgressIndicator.java @@ -97,7 +97,7 @@ public class CompletionProgressIndicator extends ProgressIndicatorBase implement myOffsetMap.addOffset(CompletionInitializationContext.START_OFFSET, myEditor.getCaretModel().getOffset() - item.getLookupString().length()); - CodeCompletionHandlerBase.selectLookupItem(item, event.getCompletionChar(), CompletionProgressIndicator.this, myLookup.getItems()); + CodeCompletionHandlerBase.lookupItemSelected(CompletionProgressIndicator.this, item, event.getCompletionChar(), myLookup.getItems()); }