Skip to content

Commit 6041fce

Browse files
committed
support both old and new set of settings in the formatting API
1 parent 80bca64 commit 6041fce

File tree

3 files changed

+36
-12
lines changed

3 files changed

+36
-12
lines changed

src/services/formatting/formatting.ts

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,11 @@ namespace ts.formatting {
6767
delta: number;
6868
}
6969

70-
export function formatOnEnter(position: number, sourceFile: SourceFile, rulesProvider: RulesProvider, options: FormatCodeSettings): TextChange[] {
70+
export function formatOnEnter(position: number, sourceFile: SourceFile, rulesProvider: RulesProvider, options: FormatCodeSettings | FormatCodeOptions): TextChange[] {
71+
return formatOnEnterWorker(position, sourceFile, rulesProvider, toEditorSettings(options));
72+
}
73+
74+
export function formatOnEnterWorker(position: number, sourceFile: SourceFile, rulesProvider: RulesProvider, options: FormatCodeSettings): TextChange[] {
7175
const line = sourceFile.getLineAndCharacterOfPosition(position).line;
7276
if (line === 0) {
7377
return [];
@@ -96,23 +100,39 @@ namespace ts.formatting {
96100
return formatSpan(span, sourceFile, options, rulesProvider, FormattingRequestKind.FormatOnEnter);
97101
}
98102

99-
export function formatOnSemicolon(position: number, sourceFile: SourceFile, rulesProvider: RulesProvider, options: FormatCodeSettings): TextChange[] {
103+
export function formatOnSemicolon(position: number, sourceFile: SourceFile, rulesProvider: RulesProvider, options: FormatCodeSettings | FormatCodeOptions): TextChange[] {
104+
return formatOnSemicolonWorker(position, sourceFile, rulesProvider, toEditorSettings(options));
105+
}
106+
107+
export function formatOnSemicolonWorker(position: number, sourceFile: SourceFile, rulesProvider: RulesProvider, options: FormatCodeSettings): TextChange[] {
100108
return formatOutermostParent(position, SyntaxKind.SemicolonToken, sourceFile, options, rulesProvider, FormattingRequestKind.FormatOnSemicolon);
101109
}
102110

103-
export function formatOnClosingCurly(position: number, sourceFile: SourceFile, rulesProvider: RulesProvider, options: FormatCodeSettings): TextChange[] {
111+
export function formatOnClosingCurly(position: number, sourceFile: SourceFile, rulesProvider: RulesProvider, options: FormatCodeSettings | FormatCodeOptions): TextChange[] {
112+
return formatOnClosingCurlyWorker(position, sourceFile, rulesProvider, toEditorSettings(options));
113+
}
114+
115+
export function formatOnClosingCurlyWorker(position: number, sourceFile: SourceFile, rulesProvider: RulesProvider, options: FormatCodeSettings): TextChange[] {
104116
return formatOutermostParent(position, SyntaxKind.CloseBraceToken, sourceFile, options, rulesProvider, FormattingRequestKind.FormatOnClosingCurlyBrace);
105117
}
106118

107-
export function formatDocument(sourceFile: SourceFile, rulesProvider: RulesProvider, options: FormatCodeSettings): TextChange[] {
119+
export function formatDocument(sourceFile: SourceFile, rulesProvider: RulesProvider, options: FormatCodeSettings | FormatCodeOptions): TextChange[] {
120+
return formatDocumentWorker(sourceFile, rulesProvider, toEditorSettings(options));
121+
}
122+
123+
export function formatDocumentWorker(sourceFile: SourceFile, rulesProvider: RulesProvider, options: FormatCodeSettings): TextChange[] {
108124
const span = {
109125
pos: 0,
110126
end: sourceFile.text.length
111127
};
112128
return formatSpan(span, sourceFile, options, rulesProvider, FormattingRequestKind.FormatDocument);
113129
}
114130

115-
export function formatSelection(start: number, end: number, sourceFile: SourceFile, rulesProvider: RulesProvider, options: FormatCodeSettings): TextChange[] {
131+
export function formatSelection(start: number, end: number, sourceFile: SourceFile, rulesProvider: RulesProvider, options: FormatCodeSettings | FormatCodeOptions): TextChange[] {
132+
return formatSelectionWorker(start, end, sourceFile, rulesProvider, toEditorSettings(options));
133+
}
134+
135+
export function formatSelectionWorker(start: number, end: number, sourceFile: SourceFile, rulesProvider: RulesProvider, options: FormatCodeSettings): TextChange[] {
116136
// format from the beginning of the line
117137
const span = {
118138
pos: getLineStartPositionForPosition(start, sourceFile),

src/services/formatting/rulesProvider.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,11 @@ namespace ts.formatting {
2424
return this.rulesMap;
2525
}
2626

27-
public ensureUpToDate(options: ts.FormatCodeSettings) {
27+
public ensureUpToDate(options: ts.FormatCodeSettings | ts.FormatCodeOptions) {
28+
this.ensureUpToDateWorker(toEditorSettings(options));
29+
}
30+
31+
public ensureUpToDateWorker(options: ts.FormatCodeSettings) {
2832
if (!this.options || !ts.compareDataObjects(this.options, options)) {
2933
const activeRules = this.createActiveRules(options);
3034
const rulesMap = RulesMap.create(activeRules);

src/services/services.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3164,7 +3164,7 @@ namespace ts {
31643164
ruleProvider = new formatting.RulesProvider();
31653165
}
31663166

3167-
ruleProvider.ensureUpToDate(options);
3167+
ruleProvider.ensureUpToDateWorker(options);
31683168
return ruleProvider;
31693169
}
31703170

@@ -8509,27 +8509,27 @@ namespace ts {
85098509
function getFormattingEditsForRange(fileName: string, start: number, end: number, optionsOrSettings: FormatCodeOptions | FormatCodeSettings): TextChange[] {
85108510
const settings = toEditorSettings(optionsOrSettings);
85118511
const sourceFile = syntaxTreeCache.getCurrentSourceFile(fileName);
8512-
return formatting.formatSelection(start, end, sourceFile, getRuleProvider(settings), settings);
8512+
return formatting.formatSelectionWorker(start, end, sourceFile, getRuleProvider(settings), settings);
85138513
}
85148514

85158515
function getFormattingEditsForDocument(fileName: string, optionsOrSettings: FormatCodeOptions | FormatCodeSettings): TextChange[] {
85168516
const settings = toEditorSettings(optionsOrSettings);
85178517
const sourceFile = syntaxTreeCache.getCurrentSourceFile(fileName);
8518-
return formatting.formatDocument(sourceFile, getRuleProvider(settings), settings);
8518+
return formatting.formatDocumentWorker(sourceFile, getRuleProvider(settings), settings);
85198519
}
85208520

85218521
function getFormattingEditsAfterKeystroke(fileName: string, position: number, key: string, optionsOrSettings: FormatCodeOptions | FormatCodeSettings): TextChange[] {
85228522
const settings = toEditorSettings(optionsOrSettings);
85238523
const sourceFile = syntaxTreeCache.getCurrentSourceFile(fileName);
85248524

85258525
if (key === "}") {
8526-
return formatting.formatOnClosingCurly(position, sourceFile, getRuleProvider(settings), settings);
8526+
return formatting.formatOnClosingCurlyWorker(position, sourceFile, getRuleProvider(settings), settings);
85278527
}
85288528
else if (key === ";") {
8529-
return formatting.formatOnSemicolon(position, sourceFile, getRuleProvider(settings), settings);
8529+
return formatting.formatOnSemicolonWorker(position, sourceFile, getRuleProvider(settings), settings);
85308530
}
85318531
else if (key === "\n") {
8532-
return formatting.formatOnEnter(position, sourceFile, getRuleProvider(settings), settings);
8532+
return formatting.formatOnEnterWorker(position, sourceFile, getRuleProvider(settings), settings);
85338533
}
85348534

85358535
return [];

0 commit comments

Comments
 (0)