Ich habe eine Frage zu Emacs Lisp. Was ist der Unterschied zwischen setq und setq-default? ?
In Tutorials heißt es, dass setq im lokalen Puffer wirksam wird, während setq-default alle Puffer betrifft.
Wenn ich zum Beispiel in init.el geschrieben habe (setq a-var a-vars-value) , habe ich nach dem Starten von Emacs und dem Öffnen eines neuen Puffers festgestellt, dass die a-var ebenfalls vorhanden ist und ihr Wert a-vars-value ist . Ich dachte, es sollte nicht da sein. Es scheint keinen Unterschied zwischen setq und setq-default zu geben .
Stimmt etwas mit meinem Verständnis nicht?
Beispielsweise:
Ich habe (setq hello 123) in die Datei init.el geschrieben und emacs abuffer in der Shell ausgeführt. Dann habe ich "hallo Cx Ce" eingegeben , es wird "123" angezeigt . Das gleiche passiert, wenn ich dies in allen neuen Puffern ausführe.
Ich habe (setq tab-width 4) in die Datei init.el geschrieben . Wenn ich Cx Ce mit Tabulatorbreite ausführe , wird "8" angezeigt (aktueller Modus ist "Text"). Wenn ich jedoch (setq-default tab-width 4) verwende , wird "4" angezeigt . Ich kann dieses Phänomen nicht erklären.