Пишу редактор с использованием Сцинтилла.
Я уже использую лексер для автоматического выделения синтаксиса, но теперь я хотел бы отметить результаты поиска. Если я хочу отметить только одно попадание, я могу установить здесь выделение, однако я хотел бы отметить (например, желтым фоном) все попадания.
Я пишу это на Perl, но если у вас есть предложения на других языках, это тоже было бы круто.





"Образец" редактора scite использует функцию закладок, чтобы пометить все строки, которые соответствуют результату поиска.
Вы читали Ссылка на маркеры в Scintilla doc? Эта ссылка может быть немного неясной, поэтому я советую также взглянуть на исходный код SciTE. Этот текстовый редактор изначально был испытательной площадкой для Scintilla. Он вырос до полноценного редактора, но по-прежнему остается хорошим справочником по реализации для всех вещей Scintilla.
В нашем конкретном случае в диалоговом окне «Найти» есть кнопка «Отметить все». Вы можете найти его реализацию в методе SciTEBase :: MarkAll (). Этот метод зацикливается только на результатах поиска (до тех пор, пока он не переходит к первому результату поиска, если таковой имеется), и ставит закладку на найденные строки (и, при необходимости, устанавливает индикатор на найденных элементах). Найденная строка получается с помощью SCI_LINEFROMPOSITION (posFound), закладка - это просто вызов SCI_MARKERADD (lnineo, markerBookmark). Обратите внимание, что метка может быть символом на поле или, если она не связана с полем, будет выделять всю строку.
HTH.
Я использовал Индикаторы для выделения результатов поиска.