C'est mon ~/.emacs
fichier:
(setq-default c-basic-offset 4 c-default-style "linux")
(setq-default tab-width 4 indent-tabs-mode t)
(define-key c-mode-base-map (kbd "RET") 'newline-and-indent)
Je reçois un avertissement lorsque j'ouvre emacs:
Avertissement (initialisation): une erreur s'est produite lors du chargement de
c:/home/.emacs
:La valeur du symbole en tant que variable est nulle:
c-mode-base-map
Pour garantir un fonctionnement normal, vous devez rechercher et supprimer la cause de l'erreur dans votre fichier d'initialisation. Démarrez Emacs avec le
--debug-init
option pour afficher une trace d'erreur complète.
J'ai couru --debug-init
et c'est ce qu'il a retourné. Je ne sais pas ce que je veux dire:
Débogueur entré - Erreur LISP: (void-variable
c-mode-base-map
)(define-key c-mode-base-map (kbd "RET") (quote newline-and-indent)) eval-buffer(#<buffer *load*> nil "c:/home/.emacs" nil t) ; Reading at buffer position 311 load-with-code-conversion("c:/home/.emacs" "c:/home/.emacs" t t) load("~/.emacs" t t)
Cela signifie que, au moment où vous invoquez define-key
, c-mode-base-map
n'est encore défini par rien.
La solution habituelle consiste à savoir où cela est défini et à exiger ce module. Dans ce cas:
(require 'cc-mode)
Cependant, il existe également d'autres correctifs possibles, par exemple en définissant le raccourci clavier dans un hook de mode, ou en utilisant eval-after-load
. Lequel vous utilisez dépend de vous; J'ai tendance à faire l'approche KISS car je ne me soucie généralement pas du temps de démarrage; mais si vous le faites, vous voudrez peut-être quelque chose de plus paresseux.