P: ¿hay alguna forma general de detectar si el punto está dentro de un par de caracteres coincidentes?
Es decir: ¿hay una función de predicado general (o algo) que pueda determinar si el punto está entre un par coincidente o algunos caracteres elegidos arbitrariamente? Estoy pensando en uno que evaluaría t
en, por ejemplo, los siguientes escenarios, con !
referencia al punto:
"!" (quotes in general)
``!'' (LaTeX quotes)
$!$ (LaTeX math)
(!) (lisp parens)
*!* (org emphasis)
Editar : syntax-ppss
parece ser un buen punto de partida, pero no está claro para mí cómo uno lo adaptaría a pares coincidentes de varios caracteres (por ejemplo, las `` citas de LaTeX '', o incluso las coincide <b>html tags</b>
). Me pregunto si hay una solución general, o si requeriría un analizador especialmente diseñado.
parse-partial-sexp
explica la estructura de datos devuelta consyntax-ppss
más detalle que la sección del manual de Elisp a la que me vinculé.Si desea, por ejemplo, verificar si está entre llaves, use esto:
Claro, puedes reemplazar las llaves por lo que quieras.
EDITAR:
Una función más útil será algo parecido a esto:
fuente
}
, y no hay nada entre{}
. Obtener delimitadores emparejados correctamente con expresiones regulares puede ser complicado. Mejor usarsyntax-pps
como sugirió @paprika.}
no es el comportamiento que he visto: \ pero sí, obtener pares usando expresiones regulares es complicado, de hecholooking-at
examina el texto comenzando en el punto. a menos que el punto esté en}
su primera declaración anterior, ¿no debería funcionar? Tal vez una diferencia entre las versiones de Emacs. : /