From af895ef068c33fc7fd608c2a42fd20050d9d5cf6 Mon Sep 17 00:00:00 2001 From: Artemiy Sartakov Date: Thu, 24 Oct 2019 15:26:35 +0200 Subject: [PATCH] JavaTextBlockIndentPass: take last line indent chars into consideration(IDEA-225003) GitOrigin-RevId: d7f7d7ad34a36b7c1f4062f7a50367b284317ee3 --- .../daemon/impl/JavaTextBlockIndentPass.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/JavaTextBlockIndentPass.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/JavaTextBlockIndentPass.java index 82bb2f6a877a..5437d5a5c9ad 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/JavaTextBlockIndentPass.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/JavaTextBlockIndentPass.java @@ -225,9 +225,11 @@ public class JavaTextBlockIndentPass extends TextEditorHighlightingPass { @Nullable private static IndentType findIndentType(@NotNull String[] lines, int indent) { IndentType indentType = null; - for (String line : lines) { - for (int i = 0; i < indent; i++) { - char c = line.charAt(i); + for (int i = 0; i < lines.length; i++) { + String line = lines[i]; + if (!isContentPart(lines, i, line)) continue; + for (int j = 0; j < indent; j++) { + char c = line.charAt(j); IndentType currentType = IndentType.of(c); if (currentType == null) return null; if (indentType == null) { @@ -241,6 +243,10 @@ public class JavaTextBlockIndentPass extends TextEditorHighlightingPass { return indentType; } + private static boolean isContentPart(@NotNull String[] lines, int i, String line) { + return !line.isEmpty() && (i == lines.length - 1 || !line.chars().allMatch(Character::isWhitespace)); + } + private enum IndentType { SPACES, TABS;