Skip to content

Commit cb7ab57

Browse files
authored
Merge pull request #2812 from 1c-syntax/feature/formatFluent
2 parents 0c43718 + 2bd553e commit cb7ab57

File tree

4 files changed

+47
-0
lines changed

4 files changed

+47
-0
lines changed

src/main/java/com/github/_1c_syntax/bsl/languageserver/providers/FormatProvider.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,11 @@ public String getNewText(
246246
newTextBuilder.append(StringUtils.repeat("\n" + currentIndentation, token.getLine() - lastLine - 1));
247247
}
248248

249+
if (needNewLine && tokenType == BSLLexer.DOT && additionalIndentLevel < 0) {
250+
currentIndentLevel++;
251+
additionalIndentLevel = currentIndentLevel;
252+
}
253+
249254
// Decrement indent on operators ends and right paren.
250255
if (needDecrementIndent(tokenType)) {
251256
currentIndentLevel--;

src/test/java/com/github/_1c_syntax/bsl/languageserver/providers/FormatProviderTest.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -231,6 +231,32 @@ void testFormatEngKeywords() throws IOException {
231231
assertThat(textEdit.getNewText()).isEqualTo(formattedFileContent);
232232
}
233233

234+
@Test
235+
void testFormatFluent() throws IOException {
236+
var originalFile = new File("./src/test/resources/providers/formatFluent.bsl");
237+
var formattedFile = new File("./src/test/resources/providers/format_formattedFluent.bsl");
238+
// given
239+
DocumentFormattingParams params = new DocumentFormattingParams();
240+
params.setTextDocument(getTextDocumentIdentifier());
241+
params.setOptions(new FormattingOptions(2, true));
242+
243+
String fileContent = FileUtils.readFileToString(originalFile, StandardCharsets.UTF_8);
244+
String formattedFileContent = FileUtils.readFileToString(formattedFile, StandardCharsets.UTF_8);
245+
var documentContext = TestUtils.getDocumentContext(
246+
URI.create(params.getTextDocument().getUri()),
247+
fileContent
248+
);
249+
250+
// when
251+
List<TextEdit> textEdits = formatProvider.getFormatting(params, documentContext);
252+
253+
// then
254+
assertThat(textEdits).hasSize(1);
255+
256+
TextEdit textEdit = textEdits.get(0);
257+
assertThat(textEdit.getNewText()).isEqualTo(formattedFileContent);
258+
}
259+
234260
@Test
235261
void testFormatUnaryMinus() {
236262

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
Процедура ДляФорматирования()
2+
3+
Утверждения()
4+
.Что(ЗадаНаКонтейнер)
5+
.Свойство("Статус")
6+
.Равно(Перечисления.усСтатусыЗадач.Завершена);
7+
8+
КонецПроцедуры
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
Процедура ДляФорматирования()
2+
3+
Утверждения()
4+
.Что(ЗадаНаКонтейнер)
5+
.Свойство("Статус")
6+
.Равно(Перечисления.усСтатусыЗадач.Завершена);
7+
8+
КонецПроцедуры

0 commit comments

Comments
 (0)