Как выделить строку и отменить выделение строки в буфере - make-overlay

596
lawlist

Я сейчас прочесываю, isearch.elчтобы узнать как highlight-stringи unhighlight-stringв буфере. Это необходимо, когда highlight-regexpне будет работать - например, такая строка:

** Active [#A] .;;;;;;;;;;;;;;;;;;;;;;;;;;;; HIGH ;;;;;;;;;;;;;;;;;;;;;;;;;;;. :HIGH: DEADLINE: <2013-12-15 Sun> 

Функции isearch-highlight (beg end)и isearch-dehighlightэто почти то, что нужно - мне просто нужно изменить, (beg end)чтобы можно было использовать строку.

begи endможет перемещаться во время функции (например, org-archive-subtree), так что это несколько дополнительных строк кода, чтобы снова найти строку и переопределить begи end- было бы неплохо просто использовать что-то вроде(highlight-string string).

1
Вопрос мне не понятен. Каким образом `highlight-regexp`" не работает "? Какова спецификация для вашего гипотетического `highlight-string`? Это нечто большее, чем `(highlight-regexp (строка reqgexp-quote))`? Drew 10 лет назад 1
@Drew Я узнал, что сегодня кое-что знал благодаря тебе - я раньше не видел `(highlight-regexp (regexp-quote string))` `. Большое спасибо - очень признателен !!! lawlist 10 лет назад 0
Пожалуйста. Иногда люди забывают, что литеральная строка *** является *** регулярным выражением, поэтому функции, работающие с регулярными выражениями, также работают с литеральными строками. И `regexp-opt` делает строку литеральной, как регулярное выражение. Я разместил информацию в качестве ответа, для ясности. Drew 10 лет назад 0

1 ответ на вопрос

1
Drew

Просто используйте (highlight-regexp (regexp-quote YOUR-STRING)), чтобы избежать всех специальных символов регулярных выражений YOUR-STRING.

Похожие вопросы