From 5949e2c5c0c205d5dafeabe88646e96b2a60ec9e Mon Sep 17 00:00:00 2001 From: Yong He Date: Thu, 14 Jul 2022 10:53:39 -0700 Subject: Language Server: Auto format bug fixes. (#2326) --- source/slang/slang-language-server-auto-format.cpp | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) (limited to 'source/slang/slang-language-server-auto-format.cpp') diff --git a/source/slang/slang-language-server-auto-format.cpp b/source/slang/slang-language-server-auto-format.cpp index 8d877eaca..fc6d2a25d 100644 --- a/source/slang/slang-language-server-auto-format.cpp +++ b/source/slang/slang-language-server-auto-format.cpp @@ -202,7 +202,24 @@ List formatSource(UnownedStringSlice text, Index lineStart, Index lineEnd, // Never allow clang-format to put the semicolon after `}` in its own line. if (edt.offset < text.getLength() && edt.length == 0 && text[edt.offset] == ';' && edt.offset >0 && text[edt.offset - 1] == '}') continue; - + // If need to preserve line break, turn all edits with a line break into a space. + if (options.behavior == FormatBehavior::PreserveLineBreak) + { + auto originalText = text.subString(edt.offset, edt.length); + bool originalHasLineBreak = originalText.indexOf('\n') != -1; + bool newHasLineBreak = edt.text.indexOf('\n') != -1; + if (originalHasLineBreak == newHasLineBreak) + { + } + else if (!originalHasLineBreak && newHasLineBreak) + { + edt.text = " "; + } + else + { + continue; + } + } edits.add(edt); } return edits; -- cgit v1.2.3