Étape 1: courir emacs -Q
La première chose que vous devez faire est d'exécuter emacs sans aucune de vos personnalisations. Si vous pouvez reproduire le problème dans Emacs vanilla, il s'agit peut-être d'un bogue dans Emacs lui-même. C'est rare, mais nous l'excluons dans un premier temps.
Si vous démarrez Emacs à partir de la ligne de commande avec l' -Q
indicateur, c'est-à-dire, emacs -Q
vous obtiendrez un emacs nu ou 'vanille', sans aucune de vos personnalisations locales chargées. Votre problème persiste-t-il? Si c'est le cas, passez à "Fournir une recette de bogue".
Étape 1b: que faire si le problème concerne un package?
Si votre problème est spécifique à un package particulier, vous ne pouvez évidemment pas le reproduire sans charger ce package. Mais vous ne souhaitez charger que le package concerné, pas la totalité de votre configuration. Pour ce faire, exécutez à emacs -Q
nouveau et préparez un court script tel que le suivant:
(require 'package)
(setq package-load-list
'((package1 t)))
(package-initialize)
Remplacez package1
par le nom du package que vous souhaitez charger. Si vous devez charger plusieurs packages, modifiez le script en conséquence:
(require 'package)
(setq package-load-list
'((package1 t)
(package2 t)
(package3 t)))
(package-initialize)
Pour charger ce code, vous pouvez le coller dans le *scratch*
tampon et appeler M-x eval-buffer
. (ou n'importe quel tampon, tant qu'il ne contient pas d'autre code!).
À ce stade, vous avez chargé le ou les packages et uniquement le ou les packages que vous testez. Si vous pouvez reproduire le problème maintenant, passez à "Fournir une recette de bogue".
Étape 2: trouver un bug dans votre .emacs
Vous avez maintenant confirmé que le problème vient de quelque chose dans votre configuration ("l'appel vient de l'intérieur de la maison!"). Votre configuration peut comprendre plusieurs milliers de lignes et charger de nombreux fichiers différents. Pour trouver le problème, vous effectuerez une recherche binaire, commentant la moitié du code à la fois pour affiner les choses. 1
- Ouvrez vos emacs réguliers
emacs
, sans -Q
option.
- Ouvrez votre fichier de configuration (généralement
~/.emacs
ou .emacs.d/init.el
, si vous ne le trouvez pas, essayez C-h v user-init-file
)
- Sélectionnez la première moitié du fichier:
C-space
pour définir la marque, faites défiler à mi-chemin pour étendre la région
- Commentez la région sélectionnée:
M-;
et enregistrez le fichier
- Ouvrez un nouveau
emacs
(votre emacs de test ), en laissant les premiers emacs en cours d'exécution. test emacs lira la version réduite de votre configuration.
- Essayez de reproduire le problème dans emacs de test
- Si vous ne pouvez pas le reproduire, fermez emacs de test et dans votre emacs d'origine
undo
le commentaire avec C-/
, et commentez la moitié du code restant. Ouvrez un nouveau test emacs et réessayez.
- Si vous pouvez reproduire le problème, commentez la moitié du code restant et voyez si le problème persiste.
- Répétez ce processus jusqu'à ce que vous trouviez le plus petit bit de votre configuration nécessaire pour reproduire le problème.
Si votre problème concerne un package spécifique, vous devrez bien sûr laisser le code qui charge ce package sans commentaire.
Si votre fichier de configuration charge d'autres fichiers, vous pouvez également étendre votre recherche à ces fichiers.
À ce stade, vous avez peut-être constaté que le problème est dû à une ou deux lignes de code. Vous pourrez peut-être même le réparer vous-même. Si oui, félicitations, vous avez appris quelque chose! Sinon, passez à l'étape trois.
Étape 3: Fournir une recette de bogue
À ce stade, vous devriez être en mesure de fournir une recette de bogue détaillée à publier ici. Il devrait comprendre:
- Votre version d'Emacs (vous pouvez l'obtenir auprès d'Emacs avec
M-x emacs-version
- Votre système d'exploitation (distribution Windows #, Mac, Linux)
- La version du package avec laquelle vous rencontrez des difficultés, le cas échéant
- Les étapes spécifiques nécessaires pour démontrer le problème, y compris ce que vous attendez et ce qui se passe réellement .
Par exemple, je pourrais poster une question comme celle-ci:
J'ai un problème avec le super-mode. Lorsque j'utilise M-x sm-compile-code
, il effectue un retrait de mon compte PayPal.
Étapes à reproduire:
Charger le super-mode:
(require 'package)
(setq package-load-list
'((super-mode t)))
(package-initialize)
- ouvrir un nouveau fichier avec
C-x C-f my-code
- entrez une ligne de code:
10 goto 10
- appel
M-x sm-compile-code
Je m'attends à ce que cela appelle le super-compilateur et compile mon programme. Au lieu de cela, je vois un message dans le mini-tampon "100 $ transférés de paypal à l'auteur en super-mode"
GNU Emacs 25.1.50.3
Debian Linux
Super-mode version 3.1415
1 Le paquet Bug Hunter peut vous aider avec ceci, (semi) bissectant automatiquement votre fichier init.
emacs -Q
dans un premier temps. J'ai écrit ceci comme quelque chose pour lier ces questions à une aide générique pour les nouveaux utilisateurs.