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 a59da3c70e69..54be09b33aba 100644 --- a/platform/lang-api/src/com/intellij/openapi/editor/PsiAwareLineWrapPositionStrategy.java +++ b/platform/lang-api/src/com/intellij/openapi/editor/PsiAwareLineWrapPositionStrategy.java @@ -85,6 +85,7 @@ public abstract class PsiAwareLineWrapPositionStrategy implements LineWrapPositi return -1; } + documentManager.commitDocument(document); PsiElement element = psiFile.findElementAt(maxPreferredOffset); if (element == null) { return -1; diff --git a/platform/lang-api/src/com/intellij/psi/codeStyle/CodeStyleSettingsManager.java b/platform/lang-api/src/com/intellij/psi/codeStyle/CodeStyleSettingsManager.java index 08b742beea04..bfbd019a8eae 100644 --- a/platform/lang-api/src/com/intellij/psi/codeStyle/CodeStyleSettingsManager.java +++ b/platform/lang-api/src/com/intellij/psi/codeStyle/CodeStyleSettingsManager.java @@ -114,6 +114,9 @@ public class CodeStyleSettingsManager implements PersistentStateComponent> getHighlightUsages(@NotNull PsiElement target, PsiFile psiFile, boolean withDecls) { + public static Couple> getHighlightUsages(@NotNull PsiElement target, PsiFile psiFile, boolean withDeclarations) { Collection readRanges = new ArrayList(); Collection writeRanges = new ArrayList(); final ReadWriteAccessDetector detector = ReadWriteAccessDetector.findDetector(target); @@ -143,7 +143,7 @@ public class IdentifierHighlighterPass extends TextEditorHighlightingPass { } } - if (withDecls) { + if (withDeclarations) { final TextRange declRange = HighlightUsagesHandler.getNameIdentifierRange(psiFile, target); if (declRange != null) { if (detector != null && detector.isDeclarationWriteAccess(target)) { diff --git a/platform/testFramework/src/com/intellij/testFramework/fixtures/CodeInsightTestFixture.java b/platform/testFramework/src/com/intellij/testFramework/fixtures/CodeInsightTestFixture.java index e4be651d0c18..1ce1ca387556 100644 --- a/platform/testFramework/src/com/intellij/testFramework/fixtures/CodeInsightTestFixture.java +++ b/platform/testFramework/src/com/intellij/testFramework/fixtures/CodeInsightTestFixture.java @@ -40,6 +40,7 @@ import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.psi.PsiManager; import com.intellij.psi.PsiReference; +import com.intellij.testFramework.EditorTestUtil; import com.intellij.testFramework.HighlightTestInfo; import com.intellij.testFramework.TestDataFile; import com.intellij.usageView.UsageInfo; @@ -59,7 +60,7 @@ import java.util.List; */ public interface CodeInsightTestFixture extends IdeaProjectTestFixture { - @NonNls String CARET_MARKER = ""; + @NonNls String CARET_MARKER = EditorTestUtil.CARET_TAG; @NonNls String ERROR_MARKER = "error"; @NonNls String WARNING_MARKER = "warning"; diff --git a/xml/tests/src/com/intellij/editor/XmlEditorTest.java b/xml/tests/src/com/intellij/editor/XmlEditorTest.java index 6a5e7524261b..4cb188e10cab 100644 --- a/xml/tests/src/com/intellij/editor/XmlEditorTest.java +++ b/xml/tests/src/com/intellij/editor/XmlEditorTest.java @@ -1,5 +1,7 @@ package com.intellij.editor; +import com.intellij.psi.codeStyle.CodeStyleSettings; +import com.intellij.psi.codeStyle.CodeStyleSettingsManager; import com.intellij.testFramework.EditorTestUtil; import com.intellij.testFramework.LightCodeInsightTestCase; import com.intellij.testFramework.PlatformTestUtil; @@ -28,6 +30,33 @@ public class XmlEditorTest extends LightCodeInsightTestCase { checkResultByFile(getTestFilePath(false)); } + public void testHardWrap() throws Exception { + configureFromFileText("a.xml", + "\n" + + "\n" + + "\n" + + " #000000\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-miterlimit=\"10\" d=\"M19.333,8.333V12c0,1.519-7.333,4-7.333,4s-7.333-2.481-7.333-4V8.333\"/>\n" + + "\n" + + ""); + + CodeStyleSettings clone = CodeStyleSettingsManager.getInstance(getProject()).getCurrentSettings().clone(); + clone.WRAP_WHEN_TYPING_REACHES_RIGHT_MARGIN = true; + try { + CodeStyleSettingsManager.getInstance(getProject()).setTemporarySettings(clone); + EditorTestUtil.performTypingAction(getEditor(), 'x'); + } + finally { + CodeStyleSettingsManager.getInstance(getProject()).dropTemporarySettings(); + } + checkResultByText("\n" + + "\n" + + "\n" + + " \n" + + "\n" + + ""); + } + @NotNull @Override protected String getTestDataPath() {