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?


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

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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.