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

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

7 голосов
/ 18 сентября 2008

Я пишу редактор, используя Scintilla .

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

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

Ответы [ 3 ]

9 голосов
/ 18 сентября 2008

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

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

НТН.

2 голосов
/ 18 сентября 2008

В редакторе «sample» редактор использует функцию закладок для закладки всех строк, которые соответствуют результату поиска.

1 голос
/ 31 января 2011

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

...