mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Do not use reserved line wrap width for wrapping plain text files
This commit is contained in:
+4
-4
@@ -17,10 +17,8 @@ package com.intellij.codeInsight.editorActions;
|
||||
|
||||
import com.intellij.codeInsight.template.TemplateManager;
|
||||
import com.intellij.formatting.FormatConstants;
|
||||
import com.intellij.lang.Language;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.psi.formatter.WhiteSpaceFormattingStrategy;
|
||||
import com.intellij.ide.DataManager;
|
||||
import com.intellij.lang.Language;
|
||||
import com.intellij.openapi.actionSystem.DataContext;
|
||||
import com.intellij.openapi.actionSystem.IdeActions;
|
||||
import com.intellij.openapi.editor.*;
|
||||
@@ -30,7 +28,9 @@ import com.intellij.openapi.editor.event.DocumentListener;
|
||||
import com.intellij.openapi.editor.impl.TextChangeImpl;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.Key;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.psi.codeStyle.CodeStyleSettings;
|
||||
import com.intellij.psi.formatter.WhiteSpaceFormattingStrategy;
|
||||
import com.intellij.psi.formatter.WhiteSpaceFormattingStrategyFactory;
|
||||
import com.intellij.util.containers.WeakHashMap;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -160,7 +160,7 @@ public class AutoHardWrapHandler {
|
||||
|
||||
// Is assumed to be max possible number of characters inserted on the visual line with caret.
|
||||
int maxPreferredOffset = editor.logicalPositionToOffset(editor.visualToLogicalPosition(
|
||||
new VisualPosition(caretModel.getVisualPosition().line, margin - FormatConstants.RESERVED_LINE_WRAP_WIDTH_IN_COLUMNS)
|
||||
new VisualPosition(caretModel.getVisualPosition().line, margin - FormatConstants.getReservedLineWrapWidthInColumns(editor))
|
||||
));
|
||||
|
||||
int wrapOffset = strategy.calculateWrapPosition(document, project, startOffset, endOffset, maxPreferredOffset, true, false);
|
||||
|
||||
@@ -15,6 +15,12 @@
|
||||
*/
|
||||
package com.intellij.formatting;
|
||||
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.fileTypes.PlainTextLanguage;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import static com.intellij.psi.util.PsiUtilBase.getLanguageInEditor;
|
||||
|
||||
/**
|
||||
* Is assumed to be a single place to hold various constants to use during formatting.
|
||||
* <p/>
|
||||
@@ -54,4 +60,12 @@ public class FormatConstants {
|
||||
|
||||
private FormatConstants() {
|
||||
}
|
||||
|
||||
public static int getReservedLineWrapWidthInColumns(@NotNull Editor editor) {
|
||||
return isPlainTextFile(editor) ? 0 : RESERVED_LINE_WRAP_WIDTH_IN_COLUMNS;
|
||||
}
|
||||
|
||||
private static boolean isPlainTextFile(@NotNull Editor editor) {
|
||||
return editor.getProject() != null && PlainTextLanguage.INSTANCE.is(getLanguageInEditor(editor, editor.getProject()));
|
||||
}
|
||||
}
|
||||
|
||||
+17
-11
@@ -641,20 +641,24 @@ public class CodeFormatterFacade {
|
||||
}
|
||||
}
|
||||
|
||||
int reservedWidthInColumns = FormatConstants.getReservedLineWrapWidthInColumns(editor);
|
||||
|
||||
if (!hasTabs) {
|
||||
return wrapPositionForTextWithoutTabs(startLineOffset, endLineOffset, targetRangeEndOffset);
|
||||
return wrapPositionForTextWithoutTabs(startLineOffset, endLineOffset, targetRangeEndOffset, reservedWidthInColumns);
|
||||
}
|
||||
else if (canOptimize) {
|
||||
return wrapPositionForTabbedTextWithOptimization(text, tabSize, startLineOffset, endLineOffset, targetRangeEndOffset);
|
||||
return wrapPositionForTabbedTextWithOptimization(text, tabSize, startLineOffset, endLineOffset, targetRangeEndOffset,
|
||||
reservedWidthInColumns);
|
||||
}
|
||||
else {
|
||||
return wrapPositionForTabbedTextWithoutOptimization(editor, text, spaceSize, startLineOffset, endLineOffset, targetRangeEndOffset);
|
||||
return wrapPositionForTabbedTextWithoutOptimization(editor, text, spaceSize, startLineOffset, endLineOffset, targetRangeEndOffset,
|
||||
reservedWidthInColumns);
|
||||
}
|
||||
}
|
||||
|
||||
private int wrapPositionForTextWithoutTabs(int startLineOffset, int endLineOffset, int targetRangeEndOffset) {
|
||||
private int wrapPositionForTextWithoutTabs(int startLineOffset, int endLineOffset, int targetRangeEndOffset, int reservedWidthInColumns) {
|
||||
if (Math.min(endLineOffset, targetRangeEndOffset) - startLineOffset > myRightMargin) {
|
||||
return startLineOffset + myRightMargin - FormatConstants.RESERVED_LINE_WRAP_WIDTH_IN_COLUMNS;
|
||||
return startLineOffset + myRightMargin - reservedWidthInColumns;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
@@ -663,7 +667,8 @@ public class CodeFormatterFacade {
|
||||
int tabSize,
|
||||
int startLineOffset,
|
||||
int endLineOffset,
|
||||
int targetRangeEndOffset)
|
||||
int targetRangeEndOffset,
|
||||
int reservedWidthInColumns)
|
||||
{
|
||||
int width = 0;
|
||||
int symbolWidth;
|
||||
@@ -675,8 +680,8 @@ public class CodeFormatterFacade {
|
||||
case '\t': symbolWidth = tabSize - (width % tabSize); break;
|
||||
default: symbolWidth = 1;
|
||||
}
|
||||
if (width + symbolWidth + FormatConstants.RESERVED_LINE_WRAP_WIDTH_IN_COLUMNS >= myRightMargin
|
||||
&& (Math.min(endLineOffset, targetRangeEndOffset) - i) >= FormatConstants.RESERVED_LINE_WRAP_WIDTH_IN_COLUMNS)
|
||||
if (width + symbolWidth + reservedWidthInColumns >= myRightMargin
|
||||
&& (Math.min(endLineOffset, targetRangeEndOffset) - i) >= reservedWidthInColumns)
|
||||
{
|
||||
// Remember preferred position.
|
||||
result = i - 1;
|
||||
@@ -695,7 +700,8 @@ public class CodeFormatterFacade {
|
||||
int spaceSize,
|
||||
int startLineOffset,
|
||||
int endLineOffset,
|
||||
int targetRangeEndOffset)
|
||||
int targetRangeEndOffset,
|
||||
int reservedWidthInColumns)
|
||||
{
|
||||
int width = 0;
|
||||
int x = 0;
|
||||
@@ -716,8 +722,8 @@ public class CodeFormatterFacade {
|
||||
break;
|
||||
default: newX = x + EditorUtil.charWidth(c, Font.PLAIN, editor); symbolWidth = 1;
|
||||
}
|
||||
if (width + symbolWidth + FormatConstants.RESERVED_LINE_WRAP_WIDTH_IN_COLUMNS >= myRightMargin
|
||||
&& (Math.min(endLineOffset, targetRangeEndOffset) - i) >= FormatConstants.RESERVED_LINE_WRAP_WIDTH_IN_COLUMNS)
|
||||
if (width + symbolWidth + reservedWidthInColumns >= myRightMargin
|
||||
&& (Math.min(endLineOffset, targetRangeEndOffset) - i) >= reservedWidthInColumns)
|
||||
{
|
||||
result = i - 1;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user