Quais são as diferenças entre autopair e smartparens?

7

Ambos autopaire smartparensfornecem funcionalidade para inserir automaticamente pares de delimitadores correspondentes.

Como eles diferem um do outro na prática (se houver)? Quais são alguns casos de uso cobertos por um desses pacotes, mas não pelo outro?

itsjeyd
fonte
2
Se smartparens é parecido (e pelo que entendi), é muito mais do que apenas inserir pares correspondentes. De fato, se tudo o que você deseja é combinar pares, os smartparens podem ser um exagero.
Malabarba 10/10

Respostas:

6

smartparenspossui um superconjunto da funcionalidade fornecida por autopair. Além de fornecer inserção de pares (o que é o que autopairfaz), ele suporta manipular o que chama de "sexps híbridos" ou sexps nos modos não-ciesp. Ele fornece comandos para navegar, marcar, juntar, dividir, absorver e muito mais para sexps, entre outras coisas.

Eu pessoalmente uso smartparense descobri que ele fornece algumas funcionalidades sobrepostas

  • yasnippet - capacidade de acionar a inserção de pares usando uma string
  • change-inner - selecionar expressão dentro do par correspondente
  • e pareditclaro
Vamsi
fonte
Interessante! Qual é o tamanho da sobreposição change-inner? Com base em sua própria experiência, você diria que smartparenspoderia ser usado como um substituto change-inner?
itsjeyd
11
Eu sp-kill-sexpsou um pouco de uma versão dwim de change-outercom uma ligeira diferença em que ponto deve ser colocado. C-u C-u M-x sp-kill-hybrid-sexpé uma versão dwim de change-inner. Eu uso os dois pacotes para o Auctex, que é o meu uso principal do emacs.
Vamsi
11
Se você estiver disposto a escrever algum elisp personalizado, smartparenseu diria que change-innerpode ser substituído. Mas change-inneré muito mais conveniente e não sobrecarrega a memória de trabalho (apenas duas funções / teclas para lembrar) tanto quanto smartparensequivalentes.
Vamsi
Obrigado! Eu brinquei um pouco com os comandos que você mencionou e pelo que posso dizer C-u C-u M-x sp-kill-sexpparece um substituto decente change-outer.
itsjeyd
@Vamsi De que maneira é sp-kill-hybrid-sexpmelhor que change inner? Estou pensando se devo mudar.
Incandescentman
2

Uma diferença básica é que smartparenspode combinar pares escapados e sinais de não pontuação, como ife fi; você também pode personalizar seus pares. smartparensé realmente grande quando se trabalha regex onde existem muitos pares escaparam como \(...\), uma vez que tem o seu próprio destaque para tais pares, fazendo trabalhar com sed, awk... muito mais agradável.

Tu Do
fonte