Dans une situation où Emacs ne se comporte pas comme je le souhaite, que puis-je faire pour résoudre le problème? Quelles mesures puis-je prendre pour trouver et résoudre le problème moi-même?
Ou, à défaut, comment puis-je recueillir des informations utiles pour que les gens ici (ou sur la liste de diffusion ou d'autres forums) puissent m'aider avec mon problème?
Mon Emacs comprend de nombreux packages, une collection d'extraits copiés et collés (ou tués et extraits) de partout sur Internet, et mon propre elisp personnalisé, dont certains dont je ne me souviens pas avoir écrit ou que je ne comprends plus. Existe-t-il un moyen de donner un sens à toutes ces complications?
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.Réponses:
É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:Remplacez
package1
par le nom du package que vous souhaitez charger. Si vous devez charger plusieurs packages, modifiez le script en conséquence:Pour charger ce code, vous pouvez le coller dans le
*scratch*
tampon et appelerM-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
emacs
, sans-Q
option.~/.emacs
ou.emacs.d/init.el
, si vous ne le trouvez pas, essayezC-h v user-init-file
)C-space
pour définir la marque, faites défiler à mi-chemin pour étendre la régionM-;
et enregistrez le fichieremacs
(votre emacs de test ), en laissant les premiers emacs en cours d'exécution. test emacs lira la version réduite de votre configuration.undo
le commentaire avecC-/
, et commentez la moitié du code restant. Ouvrez un nouveau test emacs et réessayez.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:
M-x emacs-version
Par exemple, je pourrais poster une question comme celle-ci:
1 Le paquet Bug Hunter peut vous aider avec ceci, (semi) bissectant automatiquement votre fichier init.
la source