Skip to content

Commit bd47ae4

Browse files
committed
Merge pull request #3001 from Microsoft/formattingOnChainedCallbacks
fix formatting for chained callbacks
2 parents e7447a1 + 5f3e7de commit bd47ae4

File tree

2 files changed

+13
-9
lines changed

2 files changed

+13
-9
lines changed

src/services/formatting/formatting.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -323,6 +323,9 @@ module ts.formatting {
323323
let previousParent: Node;
324324
let previousRangeStartLine: number;
325325

326+
let lastIndentedLine: number;
327+
let indentationOnLastIndentedLine: number;
328+
326329
let edits: TextChange[] = [];
327330

328331
formattingScanner.advance();
@@ -416,7 +419,9 @@ module ts.formatting {
416419
// if node is located on the same line with the parent
417420
// - inherit indentation from the parent
418421
// - push children if either parent of node itself has non-zero delta
419-
indentation = parentDynamicIndentation.getIndentation();
422+
indentation = startLine === lastIndentedLine
423+
? indentationOnLastIndentedLine
424+
: parentDynamicIndentation.getIndentation();
420425
delta = Math.min(options.IndentSize, parentDynamicIndentation.getDelta() + delta);
421426
}
422427
return {
@@ -716,7 +721,6 @@ module ts.formatting {
716721
continue;
717722
}
718723

719-
let triviaStartLine = sourceFile.getLineAndCharacterOfPosition(triviaItem.pos).line;
720724
switch (triviaItem.kind) {
721725
case SyntaxKind.MultiLineCommentTrivia:
722726
let commentIndentation = dynamicIndentation.getIndentationForComment(currentTokenInfo.token.kind);
@@ -741,6 +745,9 @@ module ts.formatting {
741745
if (isTokenInRange && !rangeContainsError(currentTokenInfo.token)) {
742746
let tokenIndentation = dynamicIndentation.getIndentationForToken(tokenStart.line, currentTokenInfo.token.kind);
743747
insertIndentation(currentTokenInfo.token.pos, tokenIndentation, lineAdded);
748+
749+
lastIndentedLine = tokenStart.line;
750+
indentationOnLastIndentedLine = tokenIndentation;
744751
}
745752
}
746753

tests/cases/fourslash/formattingOnChainedCallbacks.ts

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
//// .resolve()
55
//// .then(() => {/*1*/""/*2*/
66
////}).then(() => {/*3*//*4*/
7-
////})/*semi1*/ /*semi2*/
7+
////})/*semi1*//*semi2*/
88

99
////function foo() {
1010
//// return Promise.resolve()
@@ -16,17 +16,15 @@
1616
goTo.marker('1');
1717
edit.insertLine('');
1818
goTo.marker('2');
19-
// Expected, with bug 1888: verify.currentLineContentIs(' ""');
20-
verify.currentLineContentIs(' ""');
19+
verify.currentLineContentIs(' ""');
2120
goTo.marker('4');
2221
edit.insertLine('');
2322
goTo.marker('3');
2423
verify.currentLineContentIs(' }).then(() => {');
2524

2625
goTo.marker("semi1");
2726
edit.insert(';');
28-
// Expected, with bug 1888: verify.currentLineContentIs(' });');
29-
verify.currentLineContentIs('}); ');
27+
verify.currentLineContentIs(' });');
3028
goTo.marker("semi2");
3129
edit.insert(';');
3230
verify.currentLineContentIs(' });;');
@@ -36,5 +34,4 @@ edit.insert(';');
3634
verify.currentLineContentIs(' "";');
3735
goTo.marker('b');
3836
edit.insert(';');
39-
// Expected, with bug 1888: verify.currentLineContentIs(' });');
40-
verify.currentLineContentIs(' });');
37+
verify.currentLineContentIs(' });');

0 commit comments

Comments
 (0)