diff --git a/plugins/yaml/src/org/jetbrains/yaml/psi/impl/YAMLScalarTextImpl.java b/plugins/yaml/src/org/jetbrains/yaml/psi/impl/YAMLScalarTextImpl.java index e4051676f45d..526bc224b639 100644 --- a/plugins/yaml/src/org/jetbrains/yaml/psi/impl/YAMLScalarTextImpl.java +++ b/plugins/yaml/src/org/jetbrains/yaml/psi/impl/YAMLScalarTextImpl.java @@ -57,11 +57,16 @@ public class YAMLScalarTextImpl extends YAMLBlockScalarImpl implements YAMLScala final String indentString = StringUtil.repeatSymbol(' ', indent); final List> result = new ArrayList<>(); + int currentLength = 0; + boolean currentLineIsIndented = input.length() > 0 && input.charAt(0) == ' '; for (int i = 0; i < input.length(); ++i) { if (input.charAt(i) == '\n') { final String replacement; - if (i + 1 >= input.length() || YAMLGrammarCharUtil.isSpaceLike(input.charAt(i + 1))) { + if (i + 1 >= input.length() || + YAMLGrammarCharUtil.isSpaceLike(input.charAt(i + 1)) || + input.charAt(i + 1) == '\n' || + currentLineIsIndented) { replacement = "\n" + indentString; } else { @@ -70,6 +75,7 @@ public class YAMLScalarTextImpl extends YAMLBlockScalarImpl implements YAMLScala result.add(Pair.create(TextRange.from(i, 1), replacement)); currentLength = 0; + currentLineIsIndented = i + 1 < input.length() && input.charAt(i + 1) == ' '; continue; }