Skip to content

Commit 6479734

Browse files
committed
json: multiple selection ranges
1 parent a45fb40 commit 6479734

4 files changed

Lines changed: 17 additions & 17 deletions

File tree

extensions/json-language-features/client/src/jsonMain.ts

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import * as fs from 'fs';
88
import * as nls from 'vscode-nls';
99
const localize = nls.loadMessageBundle();
1010

11-
import { workspace, window, languages, commands, ExtensionContext, extensions, Uri, LanguageConfiguration, Diagnostic, StatusBarAlignment, TextEditor, TextDocument, Position, SelectionRange, Range, SelectionRangeKind } from 'vscode';
11+
import { workspace, window, languages, commands, ExtensionContext, extensions, Uri, LanguageConfiguration, Diagnostic, StatusBarAlignment, TextEditor, TextDocument, Position, SelectionRange } from 'vscode';
1212
import { LanguageClient, LanguageClientOptions, RequestType, ServerOptions, TransportKind, NotificationType, DidChangeConfigurationNotification, HandleDiagnosticsSignature } from 'vscode-languageclient';
1313
import TelemetryReporter from 'vscode-extension-telemetry';
1414

@@ -202,18 +202,18 @@ export function activate(context: ExtensionContext) {
202202
toDispose.push(languages.registerSelectionRangeProvider(selector, {
203203
async provideSelectionRanges(document: TextDocument, positions: Position[]): Promise<SelectionRange[][]> {
204204
const textDocument = client.code2ProtocolConverter.asTextDocumentIdentifier(document);
205-
return Promise.all(positions.map(async position => {
206-
const rawRanges = await client.sendRequest<Range[]>('$/textDocument/selectionRange', { textDocument, position });
207-
if (Array.isArray(rawRanges)) {
208-
return rawRanges.map(r => {
205+
const rawResult = await client.sendRequest<SelectionRange[][]>('$/textDocument/selectionRanges', { textDocument, positions: positions.map(client.code2ProtocolConverter.asPosition) });
206+
if (Array.isArray(rawResult)) {
207+
return rawResult.map(rawSelectionRanges => {
208+
return rawSelectionRanges.map(selectionRange => {
209209
return {
210-
range: client.protocol2CodeConverter.asRange(r),
211-
kind: SelectionRangeKind.Declaration
210+
range: client.protocol2CodeConverter.asRange(selectionRange.range),
211+
kind: selectionRange.kind
212212
};
213213
});
214-
}
215-
return [];
216-
}));
214+
});
215+
}
216+
return [];
217217
}
218218
}));
219219
});

extensions/json-language-features/server/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
"dependencies": {
1515
"jsonc-parser": "^2.0.2",
1616
"request-light": "^0.2.4",
17-
"vscode-json-languageservice": "^3.3.0-next.0",
17+
"vscode-json-languageservice": "^3.3.0-next.2",
1818
"vscode-languageserver": "^5.1.0",
1919
"vscode-nls": "^4.0.0",
2020
"vscode-uri": "^1.0.6"

extensions/json-language-features/server/src/jsonServerMain.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -427,12 +427,12 @@ connection.onFoldingRanges((params, token) => {
427427
}, null, `Error while computing folding ranges for ${params.textDocument.uri}`, token);
428428
});
429429

430-
connection.onRequest('$/textDocument/selectionRange', async (params, token) => {
430+
connection.onRequest('$/textDocument/selectionRanges', async (params, token) => {
431431
return runSafe(() => {
432432
const document = documents.get(params.textDocument.uri);
433433
if (document) {
434434
const jsonDocument = getJSONDocument(document);
435-
return languageService.getSelectionRanges(document, params.position, jsonDocument);
435+
return languageService.getSelectionRanges(document, params.positions, jsonDocument);
436436
}
437437
return [];
438438
}, [], `Error while computing selection ranges for ${params.textDocument.uri}`, token);

extensions/json-language-features/server/yarn.lock

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -73,10 +73,10 @@ request-light@^0.2.4:
7373
https-proxy-agent "^2.2.1"
7474
vscode-nls "^4.0.0"
7575

76-
vscode-json-languageservice@^3.3.0-next.0:
77-
version "3.3.0-next.0"
78-
resolved "https://registry.yarnpkg.com/vscode-json-languageservice/-/vscode-json-languageservice-3.3.0-next.0.tgz#c17db95d0eacc24f80d3b3f120ab5e03943769a0"
79-
integrity sha512-YZXL3yHzbr0/Ar5dGdeM/f5Y0l41z/Y4QSQTdL3Hl3ScuY76IPcDEnf7iuk9yx+QoPfEHFCBDv5Rg6XVcMl8Tg==
76+
vscode-json-languageservice@^3.3.0-next.2:
77+
version "3.3.0-next.2"
78+
resolved "https://registry.yarnpkg.com/vscode-json-languageservice/-/vscode-json-languageservice-3.3.0-next.2.tgz#32ac8546a7b80d910b72b0f18ef591d917fa6938"
79+
integrity sha512-ny4vye7kqJfzm31Gvt/zkrNoav2iyck6njmdtugjWslWx1i8ZPSCa1FyPRajnORJpTXu9VC+2oYl2Vmliuywog==
8080
dependencies:
8181
jsonc-parser "^2.0.2"
8282
vscode-languageserver-types "^3.13.0"

0 commit comments

Comments
 (0)