From f626e7efe866283013d0c2af3c3aa554f98665b3 Mon Sep 17 00:00:00 2001 From: "peter.gromov" Date: Thu, 2 Dec 2010 17:11:59 +0300 Subject: [PATCH] [rev=romka] EA-24270 IOOBE inserting completion character --- .../completion/CodeCompletionHandlerBase.java | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 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 557a27aba2e7..987976ce9080 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/completion/CodeCompletionHandlerBase.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/completion/CodeCompletionHandlerBase.java @@ -34,6 +34,7 @@ import com.intellij.openapi.application.ApplicationAdapter; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.Result; import com.intellij.openapi.application.ex.ApplicationEx; +import com.intellij.openapi.application.ex.ApplicationManagerEx; import com.intellij.openapi.command.CommandProcessor; import com.intellij.openapi.command.WriteCommandAction; import com.intellij.openapi.diagnostic.Logger; @@ -645,10 +646,17 @@ public class CodeCompletionHandlerBase implements CodeInsightActionHandler { item.handleInsert(context1); PostprocessReformattingAspect.getInstance(context.getProject()).doPostponedFormatting(); - if (context1.shouldAddCompletionChar() && - completionChar != Lookup.AUTO_INSERT_SELECT_CHAR && completionChar != Lookup.REPLACE_SELECT_CHAR && - completionChar != Lookup.NORMAL_SELECT_CHAR && completionChar != Lookup.COMPLETE_STATEMENT_SELECT_CHAR) { - TailType.insertChar(editor, context1.getTailOffset(), completionChar); + + final int tailOffset = context1.getTailOffset(); + if (tailOffset >= 0) { + if (context1.shouldAddCompletionChar() && + completionChar != Lookup.AUTO_INSERT_SELECT_CHAR && completionChar != Lookup.REPLACE_SELECT_CHAR && + completionChar != Lookup.NORMAL_SELECT_CHAR && completionChar != Lookup.COMPLETE_STATEMENT_SELECT_CHAR) { + TailType.insertChar(editor, tailOffset, completionChar); + } + } + else { + LOG.error("tailOffset<0 after inserting " + item + " of " + item.getClass()); } editor.getScrollingModel().scrollToCaret(ScrollType.RELATIVE); }