From 4b3647cd202ff44decd64897de93c3f8a631ae9a Mon Sep 17 00:00:00 2001 From: Ekaterina Tuzova Date: Fri, 4 Oct 2013 15:26:43 +0400 Subject: [PATCH] fixed PY-10995 properly, fixed broken test we can skip formatting events in case of current string ends with spaces --- .../codeInsight/editorActions/AutoHardWrapHandler.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/platform/lang-impl/src/com/intellij/codeInsight/editorActions/AutoHardWrapHandler.java b/platform/lang-impl/src/com/intellij/codeInsight/editorActions/AutoHardWrapHandler.java index 02dbc4ae4b28..341c1447409e 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/editorActions/AutoHardWrapHandler.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/editorActions/AutoHardWrapHandler.java @@ -17,6 +17,7 @@ package com.intellij.codeInsight.editorActions; import com.intellij.codeInsight.template.TemplateManager; import com.intellij.formatting.FormatConstants; +import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.formatter.WhiteSpaceFormattingStrategy; import com.intellij.ide.DataManager; import com.intellij.openapi.actionSystem.DataContext; @@ -107,7 +108,8 @@ public class AutoHardWrapHandler { int line = document.getLineNumber(caretOffset); int startOffset = document.getLineStartOffset(line); int endOffset = document.getLineEndOffset(line); - + final String endOfString = document.getText().substring(caretOffset, endOffset); + final boolean endsWithSpaces = StringUtil.isEmptyOrSpaces(endOfString); // Check if right margin is exceeded. int margin = editor.getSettings().getRightMargin(project); if (margin <= 0) { @@ -183,6 +185,11 @@ public class AutoHardWrapHandler { caretOffsetDiff[0] += event.getNewLength() - event.getOldLength(); } + if (event.getNewLength() <= event.getOldLength() && endsWithSpaces) { + // There is a possible case that document fragment is removed because of auto-formatting. + // We don't want to process such events in case of current string ends with spaces. + return; + } wrapIntroducedSymbolsNumber[0] += event.getNewLength() - event.getOldLength(); }