mirror of
https://github.com/microsoft/vscode.git
synced 2026-04-23 10:08:49 +01:00
incorperate folding api feedback
This commit is contained in:
@@ -9,7 +9,7 @@ import * as Proto from '../protocol';
|
||||
import * as typeConverters from '../utils/typeConverters';
|
||||
import { ITypeScriptServiceClient } from '../typescriptService';
|
||||
|
||||
export default class TypeScriptFoldingProvider implements vscode.FoldingProvider {
|
||||
export default class TypeScriptFoldingProvider implements vscode.FoldingRangeProvider {
|
||||
public constructor(
|
||||
private readonly client: ITypeScriptServiceClient
|
||||
) { }
|
||||
@@ -18,7 +18,7 @@ export default class TypeScriptFoldingProvider implements vscode.FoldingProvider
|
||||
document: vscode.TextDocument,
|
||||
_context: vscode.FoldingContext,
|
||||
token: vscode.CancellationToken
|
||||
): Promise<vscode.FoldingRangeList | undefined> {
|
||||
): Promise<vscode.FoldingRange[] | undefined> {
|
||||
if (!this.client.apiVersion.has280Features()) {
|
||||
return;
|
||||
}
|
||||
@@ -34,13 +34,13 @@ export default class TypeScriptFoldingProvider implements vscode.FoldingProvider
|
||||
return;
|
||||
}
|
||||
|
||||
return new vscode.FoldingRangeList(response.body.map(span => {
|
||||
return response.body.map(span => {
|
||||
const range = typeConverters.Range.fromTextSpan(span.textSpan);
|
||||
// workaround for #47240
|
||||
if (range.end.character > 0 && document.getText(new vscode.Range(range.end.translate(0, -1), range.end)) === '}') {
|
||||
return new vscode.FoldingRange(range.start.line, Math.max(range.end.line - 1, range.start.line));
|
||||
}
|
||||
return new vscode.FoldingRange(range.start.line, range.end.line);
|
||||
}));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -159,7 +159,7 @@ export default class LanguageProvider {
|
||||
let enable = workspace.getConfiguration().get(foldingSetting, false);
|
||||
if (enable && this.client.apiVersion.has280Features()) {
|
||||
if (!this.foldingProviderRegistration) {
|
||||
this.foldingProviderRegistration = languages.registerFoldingProvider(this.documentSelector, new (await import('./features/foldingProvider')).default(this.client));
|
||||
this.foldingProviderRegistration = languages.registerFoldingRangeProvider(this.documentSelector, new (await import('./features/foldingProvider')).default(this.client));
|
||||
}
|
||||
} else {
|
||||
if (this.foldingProviderRegistration) {
|
||||
|
||||
Reference in New Issue
Block a user