У меня есть следующая функция, которая удаляет команду LaTeX, окружающую текущую позицию курсора:
(defun remove-tex-cmd ()
(interactive)
(save-excursion
(let (cur-point beg-point end-point)
(setq cur-point (point))
(catch 'notexcmd
(if (not (re-search-backward "\\.*?{" nil t)) ; now the point is at the {
(throw 'notexcmd nil))
(search-backward "\\" nil t)
(setq beg-point (point))
(re-search-forward "}")
(setq end-point (point))
(if (> end-point cur-point)
(kill-region beg-point end-point))
(throw 'notexcmd nil)))
(if 'notexcmd
(message "no tex command at point"))))
Работает хорошо, за исключением следующей ситуации, потому что просто соответствует следующему закрытию }
:
\test{a<cursor here>sdf ${bla}+1$}
результаты в
+1$}
Я мог бы, конечно, сосчитать открывающие и закрывающие скобки. Однако, поскольку эта проблема возникает часто, мне интересно, существует ли какая-то более интеллектуальная функция поиска или я упускаю совершенно другую точку?