Q: Existe -t-il un moyen général de détecter si le point se trouve ou non à l'intérieur d'une paire de caractères correspondante?
C'est-à-dire: y a-t-il une fonction de prédicat générale (ou quelque chose) qui peut déterminer si le point est entre une paire appariée ou certains caractères choisis arbitrairement? Je pense à un qui évaluerait t
dans, disons, les scénarios suivants, en se !
référant au point:
"!" (quotes in general)
``!'' (LaTeX quotes)
$!$ (LaTeX math)
(!) (lisp parens)
*!* (org emphasis)
Edit : syntax-ppss
semble être un bon point de départ, mais je ne sais pas comment on pourrait l'adapter à des paires appariées à plusieurs caractères (par exemple, les `` guillemets LaTeX '', ou même appariés <b>html tags</b>
). Je me demande s'il existe une solution générale ou si elle nécessiterait un analyseur spécialement conçu.
parse-partial-sexp
explique la structure de données retournée parsyntax-ppss
plus en détail que la section du manuel Elisp à laquelle j'ai lié.Si vous voulez par exemple vérifier si entre accolades, utilisez ceci:
Bien sûr, vous pouvez remplacer les accolades par ce que vous voulez.
ÉDITER:
Une fonction plus utile sera proche de cela:
la source
}
, et il n'y a rien entre les{}
. Il peut être difficile d'obtenir des délimiteurs appariés avec des expressions rationnelles. Mieux vaut l'utilisersyntax-pps
comme l'a suggéré @paprika.}
n'est pas le comportement que j'ai vu: \ mais oui, obtenir les paires en utilisant des expressions rationnelles est difficile, en effetlooking-at
examine le texte à partir du point. sauf si le point est sur}
votre première déclaration ci-dessus ne devrait pas fonctionner? Peut-être une différence entre les versions d'Emacs. : /