UNPKG

greybel-languageserver-core

Version:
65 lines 2.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.activate = void 0; const kind_1 = require("../helper/kind"); const handleItem = (document, item) => { if (item.source == null) { return []; } const kind = item.kind ? (0, kind_1.getSymbolItemKind)(item.kind) : 13; // SymbolKind.Variable const result = []; for (const source of item.source) { const start = { line: source.start.line - 1, character: source.start.character - 1 }; const end = { line: source.end.line - 1, character: source.end.character - 1 }; result.push({ name: item.name, kind, location: { uri: document.textDocument.uri, range: { start, end } } }); } return result; }; const findAllAssignments = (document, query) => { const typeDoc = document.typeDocument; const defs = typeDoc.resolveAllAssignmentsWithQuery(query); const result = []; for (const defItem of defs) { result.push(...handleItem(document, defItem)); } return result; }; function activate(context) { context.connection.onDocumentSymbol(async (params) => { const document = await context.fs.getTextDocument(params.textDocument.uri); if (document == null) { return; } const parseResult = context.documentManager.get(document); if (!parseResult.parsedPayload) { return; } return findAllAssignments(parseResult, ''); }); context.connection.onWorkspaceSymbol((params) => { const result = []; for (const document of context.fs.getAllTextDocuments()) { const parseResult = context.documentManager.get(document); if (!parseResult.parsedPayload) { continue; } result.push(...findAllAssignments(parseResult, params.query)); } return result; }); } exports.activate = activate; //# sourceMappingURL=symbol.js.map