J'écris (et réécris) beaucoup de formules mathématiques dans LaTeX avec Emacs. Je rencontre fréquemment des situations où je souhaite changer une paire de parenthèses correspondantes, pour améliorer la lisibilité. Mon Emacs est assez aimable pour me montrer le délimiteur correspondant, mais comment le modifier par programme?
Par exemple, modifiez les délimiteurs externes en une seule fois:
( (\sqrt{a} + b)^{-1} + c^{-1} )
à
[ (\sqrt{a} + b)^{-1} + c^{-1} ]
\bigl(...\bigr)
en\Bigl(...\Bigr)
etc.forward-sexp-function
(ce qui, je suppose que le mode TeX le fait), ou qu'il utiliserascan-sexps
pour trouver la correspondance possible. Dans le dernier cas, la correspondance ne sera pas toujours correcte. Donc, si tout ce dont vous avez besoin est de faire correspondre les délimiteurs correspondants, vous pouvez vérifier la syntaxe du caractère sous le point. Si c'est le cas$
, alors il doit avoir une correspondance, et vous pouvez l'utiliserforwad-sexp
pour arriver à sa correspondance.Réponses:
J'utilise le code ci-dessous et me lie
yf/replace-or-delete-pair
àM-D
.Exemple d'utilisation: avec point sur
(
, je frappeM-D [
et la()
paire devient une[]
paire. Si vous frappez à laM-D RET
place, la paire sera supprimée.Ce code utilise la table de syntaxe, ce qui signifie que pour certaines paires, vous devrez spécifier vous-même le paren de fermeture. par exemple en mode html,
()
peut être remplacé par<>
en appuyant surM-D <
. Cependant, dans de nombreux modes, ce<>
n'est pas une paire reconnue, etM-D <
dira "Je ne sais pas comment fermer <". Vous pouvez alors simplement taper>
.la source
Pour ceux qui utilisent le mal, vous pouvez utiliser le mal-surround qui vous donne la
c s
mouvement (changement, surround).Pour votre exemple, faites simplement
c s ( [
(mouvement, du type de paren au type de paren)la source
ar-parentized2bracketed-atpt
ferait la tâche.Il vient avec
ar-braced2parentized-atpt
et essentiellement toutes les combinaisons respectives.Obtenez-le à partir de thingatpt-transform-delimited.el de
URL: https://github.com/andreas-roehler/thing-at-point-utils
Une classe de commandes abstraite transforme toutes les formes délimitées, par exemple:
Ces commandes sont livrées dans le même repo par
thingatpt-transform-generic-delimited.el
la source
Les parenthèses correspondantes sont visualisées avec
show-paren-mode
. L'approche logique consiste à baser la fonction pour changer les parens à la même logique et fonction sous-jacente. Lorsque les parens correspondants sont mis en surbrillance, vous pouvez appeler la fonctiontoggle-parens
définie ci-dessous:la source