Как выделить текст в Scintilla?

Пишу редактор с использованием Сцинтилла.

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

Я пишу это на Perl, но если у вас есть предложения на других языках, это тоже было бы круто.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
7
0
7 155
3

Ответы 3

"Образец" редактора scite использует функцию закладок, чтобы пометить все строки, которые соответствуют результату поиска.

Вы читали Ссылка на маркеры в Scintilla doc? Эта ссылка может быть немного неясной, поэтому я советую также взглянуть на исходный код SciTE. Этот текстовый редактор изначально был испытательной площадкой для Scintilla. Он вырос до полноценного редактора, но по-прежнему остается хорошим справочником по реализации для всех вещей Scintilla.

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

HTH.

Я использовал Индикаторы для выделения результатов поиска.

Другие вопросы по теме