Skip to content

Commit 300e4bd

Browse files
committed
1 parent c8843e3 commit 300e4bd

2 files changed

Lines changed: 12 additions & 5 deletions

File tree

src/vs/workbench/api/common/extHostApiCommands.ts

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import { CustomCodeAction } from 'vs/workbench/api/common/extHostLanguageFeature
1818
import { ICommandsExecutor, OpenFolderAPICommand, DiffAPICommand, OpenAPICommand, RemoveFromRecentlyOpenedAPICommand, SetEditorLayoutAPICommand, OpenIssueReporter } from './apiCommands';
1919
import { EditorGroupLayout } from 'vs/workbench/services/editor/common/editorGroupsService';
2020
import { isFalsyOrEmpty } from 'vs/base/common/arrays';
21+
import { IRange } from 'vs/editor/common/core/range';
2122

2223
export class ExtHostApiCommands {
2324

@@ -414,15 +415,21 @@ export class ExtHostApiCommands {
414415
});
415416
}
416417

417-
private _executeSelectionRangeProvider(resource: URI, positions: types.Position[]): Promise<vscode.SelectionRange[][]> {
418+
private _executeSelectionRangeProvider(resource: URI, positions: types.Position[]): Promise<vscode.SelectionRange[]> {
418419
const pos = positions.map(typeConverters.Position.from);
419420
const args = {
420421
resource,
421422
position: pos[0],
422423
positions: pos
423424
};
424-
return this._commands.executeCommand<modes.SelectionRange[][]>('_executeSelectionRangeProvider', args).then(result => {
425-
return result.map(oneResult => oneResult.map(typeConverters.SelectionRange.to));
425+
return this._commands.executeCommand<IRange[][]>('_executeSelectionRangeProvider', args).then(result => {
426+
return result.map(ranges => {
427+
let node: types.SelectionRange | undefined;
428+
for (const range of ranges.reverse()) {
429+
node = new types.SelectionRange(typeConverters.Range.to(range), node);
430+
}
431+
return node!;
432+
});
426433
});
427434
}
428435

src/vs/workbench/test/electron-browser/api/extHostApiCommands.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -796,9 +796,9 @@ suite('ExtHostLanguageFeatureCommands', function () {
796796
}));
797797

798798
await rpcProtocol.sync();
799-
let value = await commands.executeCommand<vscode.SelectionRange[][]>('vscode.executeSelectionRangeProvider', model.uri, [new types.Position(0, 10)]);
799+
let value = await commands.executeCommand<vscode.SelectionRange[]>('vscode.executeSelectionRangeProvider', model.uri, [new types.Position(0, 10)]);
800800
assert.equal(value.length, 1);
801-
assert.ok(value[0].length >= 2);
801+
assert.ok(value[0].parent);
802802
});
803803

804804
});

0 commit comments

Comments
 (0)