| 452 | } |
| 453 | |
| 454 | static QVector<KDevelop::IProblem::Ptr> findProblemsUnderCursor(TopDUContext* topContext, KTextEditor::Cursor position, |
| 455 | KTextEditor::Range& handleRange) |
| 456 | { |
| 457 | QVector<KDevelop::IProblem::Ptr> problems; |
| 458 | handleRange = KTextEditor::Range::invalid(); |
| 459 | |
| 460 | const auto modelsData = ICore::self()->languageController()->problemModelSet()->models(); |
| 461 | for (const auto& modelData : modelsData) { |
| 462 | const auto modelProblems = modelData.model->problems(topContext->url()); |
| 463 | for (const auto& problem : modelProblems) { |
| 464 | DocumentRange problemRange = problem->finalLocation(); |
| 465 | if (problemRange.contains(position) || |
| 466 | (problemRange.isEmpty() && problemRange.boundaryAtCursor(position))) { |
| 467 | problems += problem; |
| 468 | // first? |
| 469 | if (!handleRange.isValid()) { |
| 470 | handleRange = problemRange; |
| 471 | } else { |
| 472 | handleRange.confineToRange(problemRange); |
| 473 | } |
| 474 | } |
| 475 | } |
| 476 | } |
| 477 | |
| 478 | return problems; |
| 479 | } |
| 480 | |
| 481 | static QVector<KDevelop::IProblem::Ptr> findProblemsCloseToCursor(const TopDUContext* topContext, |
| 482 | KTextEditor::Cursor position, |
no test coverage detected