37 lines
1.5 KiB
Plaintext
37 lines
1.5 KiB
Plaintext
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.register = void 0;
|
|
const transformer = require("../transformer");
|
|
const common_1 = require("../utils/common");
|
|
const cancellation_1 = require("../utils/cancellation");
|
|
function register(context) {
|
|
return async (query, token = cancellation_1.NoneCancellationToken) => {
|
|
const symbolsList = [];
|
|
for (const service of Object.values(context.services)) {
|
|
if (token.isCancellationRequested)
|
|
break;
|
|
if (!service.provideWorkspaceSymbols)
|
|
continue;
|
|
const embeddedSymbols = await service.provideWorkspaceSymbols(query, token);
|
|
if (!embeddedSymbols)
|
|
continue;
|
|
const symbols = embeddedSymbols.map(symbol => transformer.asWorkspaceSymbol(symbol, loc => {
|
|
if (context.documents.isVirtualFileUri(loc.uri)) {
|
|
for (const [_, map] of context.documents.getMapsByVirtualFileUri(loc.uri)) {
|
|
const range = map.toSourceRange(loc.range);
|
|
if (range) {
|
|
return { uri: map.sourceFileDocument.uri, range };
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
return loc;
|
|
}
|
|
})).filter(common_1.notEmpty);
|
|
symbolsList.push(symbols);
|
|
}
|
|
return symbolsList.flat();
|
|
};
|
|
}
|
|
exports.register = register;
|
|
//# sourceMappingURL=workspaceSymbols.js.map |