P: existe uma maneira geral de detectar se o ponto está ou não dentro de um par de caracteres correspondente?
Ou seja: existe uma função de predicado geral (ou algo assim) que pode determinar se o ponto está entre um par combinado ou alguns caracteres escolhidos arbitrariamente? Estou pensando em um que avaliaria t
, por exemplo, os seguintes cenários, com !
referência ao ponto:
"!" (quotes in general)
``!'' (LaTeX quotes)
$!$ (LaTeX math)
(!) (lisp parens)
*!* (org emphasis)
Edit : syntax-ppss
parece ser um bom ponto de partida, mas não está claro para mim como alguém o adaptaria a pares combinados com vários caracteres (por exemplo, as `` citações do LaTeX '', ou mesmo correspondentes <b>html tags</b>
). Eu estou querendo saber se existe uma solução geral, ou se exigiria um analisador criado especificamente para isso.
parse-partial-sexp
explica a estrutura de dados retornada comsyntax-ppss
mais detalhes do que a seção do manual do Elisp à qual vinculei.Se você quiser, por exemplo, verificar se há chaves, use este:
Claro, você pode substituir as chaves pelo que quiser.
EDITAR:
Uma função mais útil será algo próximo disso:
fonte
}
e não houver nada entre os{}
. Acertar os delimitadores emparelhados com os regexps pode ser complicado. Melhor usarsyntax-pps
como @paprika sugerido.}
não é o comportamento que eu vi: \ mas sim, obter os pares usando expressões regulares é complicado, de fatolooking-at
examina o texto começando no ponto. a menos que aponte}
sua primeira declaração acima, não deve funcionar? Talvez uma diferença entre as versões do Emacs. : /