Ich habe dies standardmäßig in meinem auto-mode-alist
:
("\\.js\\'" . javascript-mode)
(auch mit emacs -Q
). Ich möchte als Ersatz js2-mode
für javascript-mode
. Natürlich könnte ich assq-delete-all
und dann add-to-list
wieder verwenden, aber ich frage mich, ob es keinen besseren Weg gibt.
Bearbeiten: Ich möchte Anpassen ausdrücklich nicht verwenden, ich bastle lieber init.el
selbst.
elisp
association-lists
mbork
quelle
quelle
Verwenden Sie
setf
, um den Wert zu ändern:Wenn Sie einen Wert in der Liste ersetzen möchten ,
setf
ist dies die verallgemeinerte Maschinerie, die Sie dazu benötigen. Informationen zur idiomatischeren Vorgehensweise finden Sie inauto-mode-alist
der Antwort von @ Drew (und in der Erklärung zum Shadowing).quelle
setf
Lage zu sein, sollte wirklich Java-Jungs gezeigt werden.)setf
wird in Common Lisp die ganze Zeit verwendet, aber in elisp stößt man viel seltener darauf.setf
Vergleich zu CL ...Der schnellste Weg, um tatsächlich die Nachteile der Zelle zu ändern, ist wahrscheinlich
setcdr
Es ist erwähnenswert, dass
setf
es in älteren Emacsen nicht verfügbar ist, abersetcdr
.quelle
setf
?Das OP fragt nach einer Lösung, die Alisten mit String-Schlüsseln behandelt. Sehen Sie sich dazu diese Frage an . Wenn Sie zufällig nur mit Alisten mit Symbolschlüsseln umgehen müssen, können Sie ab Emacs 25 Folgendes verwenden:
eine cdr ersetzen. Wenn Sie Zugriff auf Emacs 26 haben, funktioniert diese Technik mit Zeichenfolgenschlüsseln wie folgt:
Beachten Sie, dass es in Emacs 26 auch andere Möglichkeiten gibt, mit String-Schlüsseln umzugehen. siehe diese Frage wie oben erwähnt.
quelle
(setf (alist-get "\\.js\\'" auto-mode-alist nil nil #'equal) 'js2-mode)
sollte funktionieren (erfordert allerdings Emacs 26).alist-get
mit der Zeichenfolge"\\.js\\'"
,alist-get
basieren jedoch aufassq
, sodass sie nicht mit einer Zeichenfolge funktioniert, wie Sie in Ihrer Antwort angeben.Wenn Sie wissen, dass Sie den JavaScript-Modus nie wieder verwenden werden, lassen Sie den automatischen Modus-Alist unberührt und ergänzen Sie ihn zu Ihrem init.el
quelle
javascript-mode
: Esjavascript-mode
gibt nur einen Alias fürjs-mode
(standardmäßig) und dieser wurde speziell so erstellt, dass die Benutzer Ihren Vorschlägen folgen können, wenn sie dies bevorzugenjs2-mode
(ohne die Fähigkeit zu verlieren, ihn zu verwenden,js-mode
wenn sie dies möchten).js-mode
(im Gegensatz zu dem, wasperl-mode
zum Beispiel passiert ).