Skip to content

Commit 4609d24

Browse files
committed
formatting: handle templates spans
1 parent aec8d96 commit 4609d24

2 files changed

Lines changed: 21 additions & 2 deletions

File tree

src/services/formatting/formattingScanner.ts

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
/// <reference path="..\formatting.ts"/>
12
/// <reference path="..\..\compiler\scanner.ts"/>
23

34
module ts.formatting {
@@ -14,7 +15,8 @@ module ts.formatting {
1415
const enum ScanAction{
1516
Scan,
1617
RescanGreaterThanToken,
17-
RescanSlashToken
18+
RescanSlashToken,
19+
RescanTemplateToken
1820
}
1921

2022
export function getFormattingScanner(sourceFile: SourceFile, startPos: number, endPos: number): FormattingScanner {
@@ -111,6 +113,10 @@ module ts.formatting {
111113
return container.kind === SyntaxKind.RegularExpressionLiteral;
112114
}
113115

116+
function shouldRescanTemplateToken(container: Node): boolean {
117+
return container.kind === SyntaxKind.TemplateSpan;
118+
}
119+
114120
function startsWithSlashToken(t: SyntaxKind): boolean {
115121
return t === SyntaxKind.SlashToken || t === SyntaxKind.SlashEqualsToken;
116122
}
@@ -132,7 +138,9 @@ module ts.formatting {
132138
? ScanAction.RescanGreaterThanToken
133139
: shouldRescanSlashToken(n)
134140
? ScanAction.RescanSlashToken
135-
: ScanAction.Scan
141+
: shouldRescanTemplateToken(n)
142+
? ScanAction.RescanTemplateToken
143+
: ScanAction.Scan
136144

137145
if (lastTokenInfo && expectedScanAction === lastScanAction) {
138146
// readTokenInfo was called before with the same expected scan action.
@@ -159,6 +167,10 @@ module ts.formatting {
159167
Debug.assert(n.kind === currentToken);
160168
lastScanAction = ScanAction.RescanSlashToken;
161169
}
170+
else if (expectedScanAction === ScanAction.RescanTemplateToken && currentToken === SyntaxKind.CloseBraceToken) {
171+
currentToken = scanner.reScanTemplateToken();
172+
lastScanAction = ScanAction.RescanTemplateToken;
173+
}
162174
else {
163175
lastScanAction = ScanAction.Scan;
164176
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
///<reference path="fourslash.ts"/>
2+
3+
////String.call `${123}`/*1*/
4+
5+
goTo.marker("1");
6+
edit.insert(";");
7+
verify.currentLineContentIs("String.call `${123}`;");

0 commit comments

Comments
 (0)