From 3d1c3d1a3c2000e161d7e39ca8ecf7889ed98cf7 Mon Sep 17 00:00:00 2001 From: "Denis.Zhdanov" Date: Mon, 4 Feb 2013 14:37:43 +0400 Subject: [PATCH] IDEA-99666 Adding parens in emacs mode causes selected contents to duplicate --- .../editorActions/SelectionQuotingTypedHandler.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/codeInsight/editorActions/SelectionQuotingTypedHandler.java b/platform/lang-impl/src/com/intellij/codeInsight/editorActions/SelectionQuotingTypedHandler.java index 0e720ffcba28..c43909ca79dd 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/editorActions/SelectionQuotingTypedHandler.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/editorActions/SelectionQuotingTypedHandler.java @@ -47,11 +47,13 @@ public class SelectionQuotingTypedHandler extends TypedHandlerDelegate { // beforeCharTyped always works with removed selection SelectionModel selectionModel = editor.getSelectionModel(); if(CodeInsightSettings.getInstance().SURROUND_SELECTION_ON_QUOTE_TYPED && selectionModel.hasSelection() && isDelimiter(c)) { - CaretModel caretModel = editor.getCaretModel(); String selectedText = selectionModel.getSelectedText(); if (selectedText.length() < 1) { return super.checkAutoPopup(c, project, editor, psiFile); } + + final int selectionStart = selectionModel.getSelectionStart(); + final int selectionEnd = selectionModel.getSelectionEnd(); if (selectedText.length() > 1) { final char firstChar = selectedText.charAt(0); if (isSimilarDelimiters(firstChar, c) && @@ -73,7 +75,7 @@ public class SelectionQuotingTypedHandler extends TypedHandlerDelegate { myRestoreStickySelection = false; } selectionModel.removeSelection(); - editor.getDocument().replaceString(caretOffset, caretOffset + selectedText.length(), newText); + editor.getDocument().replaceString(selectionStart, selectionEnd, newText); if (Registry.is("editor.smarterSelectionQuoting")) { myReplacedTextRange = new TextRange(caretOffset + 1, caretOffset + newText.length() - 1); } else {