J'ai une question sur Emacs Lisp. Quelle est la différence entre setq et setq-default ?
Les didacticiels indiquent que setq prend effet dans le tampon local tandis que setq-default affecte tous les tampons.
Par exemple, si j'ai écrit (setq a-var a-vars-value) dans init.el , j'ai trouvé après le démarrage d'Emacs et l'ouverture d'un nouveau tampon, le a-var est également là et sa valeur est a-vars-value . Je pensais que ce n'était pas censé être là. Il semble qu'il n'y ait aucune différence entre setq et setq-default .
Y a-t-il quelque chose qui ne va pas avec ma compréhension?
Par exemple:
J'ai écrit (setq hello 123) dans le fichier init.el , et j'exécute emacs abuffer dans le shell, puis j'entre "hello Cx Ce" , il montre "123". La même chose se produit lorsque je l'exécute dans tous les nouveaux tampons.
J'ai écrit (setq tab-width 4) dans le fichier init.el. Lorsque j'exécute Cx Ce de largeur de tabulation , il affiche "8" (le mode actuel est "Texte"). Cependant, lorsque j'utilise (setq-default tab-width 4) , il affiche "4". Je ne peux pas expliquer ce phénomène.
(setq tab-width 4)
prend effet dans le tampon où vous avez évalué l'expression; si vous l'évaluez dans le*scratch*
tampon, examinez sa valeur dans ce tampon.tab-width
est une variable locale du tampon. Ainsi, lorsque vous(setq tab-width 4)
, il est uniquement défini sur 4 dans le tampon actuel. Tous les autres tampons conservent untab-width
de la valeur par défaut globale, 8. Lorsque vous(setq-default tab-width 4)
modifiez la valeur par défaut globale detab-width
à 4, chaque tampon qui ne s'est pas définitab-width
lui-même a donc cette nouvelle valeur par défaut.