void SymbolsFindFilter::openEditor(const SearchResultItem &item) { if (!item.userData.canConvert<IndexItem::Ptr>()) return; IndexItem::Ptr info = item.userData.value<IndexItem::Ptr>(); EditorManager::openEditorAt(info->fileName(), info->line(), info->column()); }
QList<CppTools::IndexItem::Ptr> CppCurrentDocumentFilter::itemsOfCurrentDocument() { QMutexLocker locker(&m_mutex); if (m_currentFileName.isEmpty()) return QList<CppTools::IndexItem::Ptr>(); if (m_itemsOfCurrentDoc.isEmpty()) { const Snapshot snapshot = m_modelManager->snapshot(); if (const Document::Ptr thisDocument = snapshot.document(m_currentFileName)) { IndexItem::Ptr rootNode = search(thisDocument); rootNode->visitAllChildren([&](const IndexItem::Ptr &info) -> IndexItem::VisitorResult { m_itemsOfCurrentDoc.append(info); return IndexItem::Recurse; }); } } return m_itemsOfCurrentDoc; }
IndexItem::Ptr SearchSymbols::operator()(Document::Ptr doc, const QString &scope) { IndexItem::Ptr root = IndexItem::create(findOrInsert(doc->fileName()), 100); { // RAII scope ScopedIndexItemPtr parentRaii(_parent, root); QString newScope = scope; ScopedScope scopeRaii(_scope, newScope); QTC_ASSERT(_parent, return IndexItem::Ptr()); QTC_ASSERT(root, return IndexItem::Ptr()); QTC_ASSERT(_parent->fileName() == findOrInsert(doc->fileName()), return IndexItem::Ptr()); for (unsigned i = 0, ei = doc->globalSymbolCount(); i != ei; ++i) accept(doc->globalSymbolAt(i)); strings.scheduleGC(); m_paths.clear(); } root->squeeze(); return root; }
Core::LocatorFilterEntry CppLocatorFilter::filterEntryFromIndexItem(IndexItem::Ptr info) { const QVariant id = qVariantFromValue(info); Core::LocatorFilterEntry filterEntry(this, info->scopedSymbolName(), id, info->icon()); if (info->type() == IndexItem::Class || info->type() == IndexItem::Enum) filterEntry.extraInfo = info->shortNativeFilePath(); else filterEntry.extraInfo = info->symbolType(); return filterEntry; }
Core::LocatorFilterEntry CppFunctionsFilter::filterEntryFromIndexItem(IndexItem::Ptr info) { const QVariant id = qVariantFromValue(info); QString name = info->symbolName(); QString extraInfo = info->symbolScope(); info->unqualifiedNameAndScope(name, &name, &extraInfo); if (extraInfo.isEmpty()) { extraInfo = info->shortNativeFilePath(); } else { extraInfo.append(" (" + Utils::FileName::fromString(info->fileName()).fileName() + ')'); } Core::LocatorFilterEntry filterEntry(this, name + info->symbolType(), id, info->icon()); filterEntry.extraInfo = extraInfo; return filterEntry; }
void CppLocatorFilter::accept(Core::LocatorFilterEntry selection) const { IndexItem::Ptr info = qvariant_cast<IndexItem::Ptr>(selection.internalData); Core::EditorManager::openEditorAt(info->fileName(), info->line(), info->column()); }