Was sind die Unterschiede zwischen Autopair und Smartparens?


7

Beide autopairund smartparensbieten Funktionen zum automatischen Einfügen übereinstimmender Trennzeichenpaare.

Wie unterscheiden sie sich in der Praxis (wenn überhaupt)? Welche Anwendungsfälle werden von einem dieser Pakete abgedeckt, nicht jedoch von dem anderen?


2
Wenn smartparens so etwas wie paredit ist (und soweit ich weiß, ist es das), dann geht es um viel mehr als nur um das Einfügen passender Paare. In der Tat, wenn alles, was Sie wollen, passende Paare sind, könnten Smartparens übertrieben sein.
Malabarba

Antworten:


6

smartparenshat eine Obermenge der von autopair. Abgesehen von der Bereitstellung von Paaren (was auch der autopairFall ist) unterstützt es die Manipulation von sogenannten "Hybrid-Sexps" oder Sexps im Nicht-Lisp-Modus. Es bietet unter anderem Befehle zum Navigieren, Markieren, Verbinden, Teilen, Absorbieren und mehr für Sexps.

Ich persönlich benutze smartparensund stellte fest, dass es einige überlappende Funktionen bietet

  • yasnippet - Fähigkeit, das Einfügen von Paaren mithilfe einer Zeichenfolge auszulösen
  • change-inner - Wählen Sie den Ausdruck innerhalb des übereinstimmenden Paares aus
  • und pareditnatürlich

Interessant! Wie groß ist die Überlappung mit change-inner? Würden Sie aufgrund Ihrer eigenen Erfahrung sagen, dass smartparensdies als Ersatz für verwendet werden könnte change-inner?
Itsjeyd

1
Ich bin sp-kill-sexpeine Art Dwim-Version von change-outermit einem kleinen Unterschied, wo der Punkt platziert werden muss. C-u C-u M-x sp-kill-hybrid-sexpist eine Dwim-Version von change-inner. Ich verwende beide Pakete für Auctex, was meine primäre Emacs-Verwendung ist.
Vamsi

1
Wenn Sie bereit sind, ein benutzerdefiniertes Elisp mit zu schreiben, smartparenswürde ich sagen, change-innerkann ersetzt werden. Aber change-innerist viel bequemer und nicht belasten nicht den Arbeitsspeicher (nur 2 Funktionen / keybinds zu erinnern) , so viel wie smartparensÄquivalente würde.
Vamsi

Vielen Dank! Ich habe ein bisschen mit den von Ihnen erwähnten Befehlen herumgespielt und nach allem, was ich sagen kann, C-u C-u M-x sp-kill-sexpsieht es nach einem anständigen Ersatz aus change-outer.
Itsjeyd

@Vamsi Inwiefern ist es sp-kill-hybrid-sexpbesser als change inner? Ich frage mich, ob ich wechseln soll.
Glühlampenmann

2

Ein grundlegender Unterschied besteht darin, dass smartparensmaskierte Paare und Nicht-Interpunktionszeichen wie ifund übereinstimmen können fi. Sie können auch Ihre Paare anpassen. smartparenswirklich groß ist , wenn regex arbeiten , wo es wie viele entkommen Paare sind \(...\), da es seine eigene hat Hervorhebung für solche Paare, was mit Arbeit sed, awk... viel angenehmer.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.