¿Cuáles son las diferencias entre autopair y smartparens?

7

Ambos autopairy smartparensproporcionan funcionalidad para insertar pares de delimitadores coincidentes automáticamente.

¿Cómo se diferencian entre sí en la práctica (si es que lo hacen)? ¿Cuáles son algunos casos de uso que están cubiertos por uno de estos paquetes pero no por el otro?

itsjeyd
fuente
2
Si smartparens es algo así como el crédito (y por lo que entiendo, lo es), entonces se trata de mucho más que simplemente insertar pares coincidentes. De hecho, si todo lo que quiere es emparejar pares, los smartparens pueden ser excesivos.
Malabarba

Respuestas:

6

smartparenstiene un superconjunto de la funcionalidad proporcionada por autopair. Además de proporcionar inserción de pares (que es lo que autopairhace), admite la manipulación de lo que llama "sexps híbridos" o sexps en modos sin lisp. Proporciona comandos para navegar, marcar, unir, dividir, absorber y más para sexps, entre otras cosas.

Yo personalmente uso smartparensy descubrí que proporciona una funcionalidad superpuesta con

  • yasnippet - capacidad para activar la inserción de pares usando una cadena
  • change-inner - Seleccione la expresión dentro del par coincidente
  • y pareditpor supuesto
Vamsi
fuente
¡Interesante! ¿Qué tan grande es la superposición change-inner? Según su propia experiencia, ¿diría que smartparenspodría usarse como un reemplazo change-inner?
itsjeyd
1
Soy sp-kill-sexpuna especie de versión dwim change-outercon una ligera diferencia en el lugar donde se debe colocar el punto. C-u C-u M-x sp-kill-hybrid-sexpes una versión dwim de change-inner. Utilizo ambos paquetes para Auctex, que es mi uso principal de emacs.
Vamsi
1
Si está dispuesto a escribir algo de elisp personalizado smartparens, diría que change-innerpuede ser reemplazado. Pero change-inneres mucho más conveniente y no agota la memoria de trabajo (solo 2 funciones / teclas para recordar) tanto como smartparenslo harían los equivalentes.
Vamsi
¡Gracias! Jugué un poco con los comandos que mencionaste y, por lo que puedo decir, C-u C-u M-x sp-kill-sexpparece un reemplazo decente change-outer.
itsjeyd
@Vamsi ¿De qué manera es sp-kill-hybrid-sexpmejor que change inner? Me pregunto si debería cambiar.
incandescentman
2

Una diferencia básica es que smartparenspuede coincidir con los pares escapados y los signos de no puntuación, como ify fi; También puedes personalizar tus pares. smartparenses realmente grande cuando se trabaja expresiones regulares donde hay un montón de pares escapado como \(...\), ya que tiene su propio resaltado de tales pares, por lo que trabajar con sed, awk... mucho más agradable.

Tu Do
fuente