From aa1f56a945c5c4385a8be4476c61adcf9c85545e Mon Sep 17 00:00:00 2001 From: Valentin Fondaratov Date: Fri, 15 Jul 2016 19:32:38 +0300 Subject: [PATCH] RUBY-18147 Fix encoding text to folded scalars-compatible text routine --- .../org/jetbrains/yaml/psi/impl/YAMLScalarTextImpl.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) 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; }