Вопрос: существует ли общий способ определения того, находится ли точка внутри совпадающей пары символов?
То есть: существует ли общая функция предиката (или что-то еще), которая может определить, находится ли точка между соответствующей парой или какими-то произвольно выбранными символами? Я думаю о том, что можно оценить t
, скажем, в следующих сценариях со !
ссылкой на точку:
"!" (quotes in general)
``!'' (LaTeX quotes)
$!$ (LaTeX math)
(!) (lisp parens)
*!* (org emphasis)
Редактировать : syntax-ppss
кажется хорошей отправной точкой, но мне не ясно, как можно адаптировать его к многосимвольным парам (например, `` цитаты LaTeX '"или даже к ним <b>html tags</b>
). Мне интересно, есть ли общее решение, или оно потребует специального синтаксического анализатора.
parse-partial-sexp
объясняет структуру данных, возвращаемуюsyntax-ppss
более подробно, чем раздел руководства Elisp, на который я ссылался.Если вы хотите, например, проверить, что между фигурными скобками, используйте это:
Конечно, вы можете заменить фигурные скобки на что угодно.
РЕДАКТИРОВАТЬ:
Более полезная функция будет чем-то похожим на это:
источник
}
, а между ними нет ничего{}
. Получение парных разделителей правильно с регулярными выражениями может быть сложно. Лучше использоватьsyntax-pps
как предложено @paprika.}
не соответствует поведению, которое я видел: \ да, получить пары с помощьюlooking-at
исследует текст, начиная с точки. разве точка на}
вашем первом утверждении выше не должна работать? Может быть, разница между версиями Emacs. : /