From 49fa7c93d07699a0c087cae4e32699aad21dc5c8 Mon Sep 17 00:00:00 2001 From: Denis Zhdanov Date: Tue, 1 Feb 2011 17:04:13 +0300 Subject: [PATCH] IDEA-64898 When splitting long strings formatter must provide information to Enter handler that the latter is called within formatting operation. --- .../source/codeStyle/CodeFormatterFacade.java | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/platform/lang-impl/src/com/intellij/psi/impl/source/codeStyle/CodeFormatterFacade.java b/platform/lang-impl/src/com/intellij/psi/impl/source/codeStyle/CodeFormatterFacade.java index 3090899d1fd1..b901ee55b317 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/source/codeStyle/CodeFormatterFacade.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/source/codeStyle/CodeFormatterFacade.java @@ -30,6 +30,7 @@ import com.intellij.openapi.editor.actionSystem.EditorActionManager; import com.intellij.openapi.editor.ex.util.EditorUtil; import com.intellij.openapi.extensions.Extensions; import com.intellij.openapi.project.Project; +import com.intellij.openapi.util.Key; import com.intellij.openapi.util.TextRange; import com.intellij.psi.PsiDocumentManager; import com.intellij.psi.PsiElement; @@ -49,8 +50,17 @@ import java.awt.*; import java.util.List; public class CodeFormatterFacade { + private static final Logger LOG = Logger.getInstance("#com.intellij.psi.impl.source.codeStyle.CodeFormatterFacade"); + /** + * This key is used as a flag that indicates if 'wrap long line during formatting' activity is performed now. + * + * @see CodeStyleSettings#WRAP_LONG_LINES + */ + public static final Key WRAP_LONG_LINE_DURING_FORMATTING_IN_PROGRESS_KEY + = new Key("WRAP_LONG_LINE_DURING_FORMATTING_IN_PROGRESS_KEY"); + private final CodeStyleSettings mySettings; public CodeFormatterFacade(CodeStyleSettings settings) { @@ -367,7 +377,14 @@ public class CodeFormatterFacade { selectionModel.removeSelection(); } int textLengthBeforeWrap = document.getTextLength(); - EditorActionManager.getInstance().getActionHandler(IdeActions.ACTION_EDITOR_ENTER).execute(editor, dataContext); + + DataManager.getInstance().saveInDataContext(dataContext, WRAP_LONG_LINE_DURING_FORMATTING_IN_PROGRESS_KEY, true); + try { + EditorActionManager.getInstance().getActionHandler(IdeActions.ACTION_EDITOR_ENTER).execute(editor, dataContext); + } + finally { + DataManager.getInstance().saveInDataContext(dataContext, WRAP_LONG_LINE_DURING_FORMATTING_IN_PROGRESS_KEY, null); + } if (restoreSelection) { int symbolsDiff = document.getTextLength() - textLengthBeforeWrap; int newSelectionStart = startSelectionOffset;