| 26 | } |
| 27 | |
| 28 | SymbolManager::SymbolInfo SymbolManagerPrivate::findSymbol(const newlsp::DocumentSymbol &symbol, int line, int column) |
| 29 | { |
| 30 | auto children = symbol.children.value_or(QList<newlsp::DocumentSymbol>()); |
| 31 | auto iter = std::find_if(children.cbegin(), children.cend(), |
| 32 | [&](const newlsp::DocumentSymbol &child) { |
| 33 | return child.range.contains({ line, column }); |
| 34 | }); |
| 35 | if (iter != children.cend()) |
| 36 | return findSymbol(*iter, line, column); |
| 37 | |
| 38 | QString name = q->displayNameFromDocumentSymbol(static_cast<SymbolManager::SymbolKind>(symbol.kind), |
| 39 | symbol.name, |
| 40 | symbol.detail.value_or(QString())); |
| 41 | return { name, static_cast<SymbolManager::SymbolKind>(symbol.kind), symbol.range }; |
| 42 | } |
| 43 | |
| 44 | SymbolManager::SymbolManager(QObject *parent) |
| 45 | : QObject(parent), |
no test coverage detected