From 465b08c7699a3b3e6d782da2128cef24d1256af1 Mon Sep 17 00:00:00 2001 From: Dennis Ushakov Date: Thu, 28 May 2015 16:36:21 +0300 Subject: [PATCH] pass correct max offset + add xml comment characters to wrappable elements #WEB-16691 fixed --- .../PsiAwareLineWrapPositionStrategy.java | 2 +- .../MarkupLineWrapPositionStrategy.java | 3 ++- .../src/com/intellij/editor/XmlEditorTest.java | 17 +++++++++++++++++ 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/platform/lang-api/src/com/intellij/openapi/editor/PsiAwareLineWrapPositionStrategy.java b/platform/lang-api/src/com/intellij/openapi/editor/PsiAwareLineWrapPositionStrategy.java index 54be09b33aba..ac229772d343 100644 --- a/platform/lang-api/src/com/intellij/openapi/editor/PsiAwareLineWrapPositionStrategy.java +++ b/platform/lang-api/src/com/intellij/openapi/editor/PsiAwareLineWrapPositionStrategy.java @@ -96,7 +96,7 @@ public abstract class PsiAwareLineWrapPositionStrategy implements LineWrapPositi TextRange textRange = element.getTextRange(); int start = Math.max(textRange.getStartOffset(), startOffset); int end = Math.min(textRange.getEndOffset(), endOffset); - int result = doCalculateWrapPosition(document, project, start, end, end, false, virtual); + int result = doCalculateWrapPosition(document, project, start, end, maxPreferredOffset, false, virtual); if (result >= 0) { return result; } diff --git a/xml/impl/src/com/intellij/psi/formatter/MarkupLineWrapPositionStrategy.java b/xml/impl/src/com/intellij/psi/formatter/MarkupLineWrapPositionStrategy.java index 4db5fbe6ab83..5a4380d9e431 100644 --- a/xml/impl/src/com/intellij/psi/formatter/MarkupLineWrapPositionStrategy.java +++ b/xml/impl/src/com/intellij/psi/formatter/MarkupLineWrapPositionStrategy.java @@ -19,6 +19,7 @@ import com.intellij.openapi.editor.LineWrapPositionStrategy; import com.intellij.openapi.editor.PsiAwareDefaultLineWrapPositionStrategy; import com.intellij.psi.TokenType; import com.intellij.psi.xml.XmlElementType; +import com.intellij.psi.xml.XmlTokenType; /** * {@link LineWrapPositionStrategy} for markup languages like XML, HTML etc. @@ -29,6 +30,6 @@ import com.intellij.psi.xml.XmlElementType; public class MarkupLineWrapPositionStrategy extends PsiAwareDefaultLineWrapPositionStrategy { public MarkupLineWrapPositionStrategy() { - super(true, XmlElementType.XML_TEXT, TokenType.WHITE_SPACE); + super(true, XmlElementType.XML_TEXT, XmlTokenType.XML_COMMENT_CHARACTERS, TokenType.WHITE_SPACE); } } diff --git a/xml/tests/src/com/intellij/editor/XmlEditorTest.java b/xml/tests/src/com/intellij/editor/XmlEditorTest.java index 4cb188e10cab..95432cdf2413 100644 --- a/xml/tests/src/com/intellij/editor/XmlEditorTest.java +++ b/xml/tests/src/com/intellij/editor/XmlEditorTest.java @@ -57,6 +57,23 @@ public class XmlEditorTest extends LightCodeInsightTestCase { ""); } + public void testHardWrapInComment() throws Exception { + configureFromFileText("a.xml", + ""); + + CodeStyleSettings clone = CodeStyleSettingsManager.getInstance(getProject()).getCurrentSettings().clone(); + clone.WRAP_WHEN_TYPING_REACHES_RIGHT_MARGIN = true; + try { + CodeStyleSettingsManager.getInstance(getProject()).setTemporarySettings(clone); + EditorTestUtil.performTypingAction(getEditor(), '?'); + } + finally { + CodeStyleSettingsManager.getInstance(getProject()).dropTemporarySettings(); + } + checkResultByText(""); + } + @NotNull @Override protected String getTestDataPath() {