Que signifie emacs me dit “Fichier en mode d'erreur de spécification”?
C'est le plus inutile du message d'erreur que j'ai jamais vu.
Je pense qu'il se traduit par .. "erreur".
Le message d'erreur complet de la *Messages* tampon est:
File mode specification error: (wrong-type-argument characterp "string value here")
Je pense que la dernière partie de ce message signifie que emacs m'attendais à un personnage et a obtenu une chaîne de caractères.
Mais comment dois-je aller sur le diagnostic de ce que cela signifie quand emacs me dit "Fichier en mode d'erreur de spécification" ? et comment puis-je affiner où cette erreur est originaire?
Comment sont ces deux erreurs (fichier en mode d'erreur, s'attendant caractère et a obtenu chaîne) sont-ils liés?
- Un peu plus de contexte sur les conditions dans lesquelles l'erreur est déclenchée aiderait
- Alors, êtes-vous de l'ouverture d'un fichier par le biais de recherche de fichier et à la fin de l'ouverture du fichier Emacs signale cette erreur? Ou faites-vous appel en mode normal vous-même? Quel est le type de fichier que vous essayez d'ouvrir?
- Je ne suis pas en train d'ouvrir un fichier. pas explicitement de toute façon. Je suis de l'exécution de certains elisp code, mais ... même que ne s'ouvre pas un fichier, pas même implicitement. @Richard, je comprends ce que vous demandez, mais je ne suis pas la recherche de l'aide dans le diagnostic de cette erreur. Je suis à la recherche d'une explication pour ce ver commune emacs message d'erreur. Il semble apparaître dans de nombreuses circonstances, souvent pas (apparemment) liée à l'ouverture d'un fichier. Je me demande, Pourquoi donc?
- J'ai vu vos autres questions. Êtes-vous d'obtenir cette erreur après la mise à Emacs 23? La mise à niveau de la modification d'une fonction/variable de comportement que votre elisp attend. Peut-être il y a une mise à jour pour que elisp si c'est un package que vous avez téléchargé sur le net. Ou, montrer le la délinquance des lignes ou la stacktrace vous obtenez lors de l'ajout de
(setq debug-on-error t)
au début de votre .emacs.normal-mode
est à l'origine de l'erreur lorsque vous tentez de charger un grand-mode. Cela se produit lorsque l'ouverture d'un fichier. Voir pour vous-même\Ch-f normal-mode
. - oui, je reçois le message d'erreur après la mise à niveau de emacs23 . Publiera la mise à jour quand j'ai une occasion de plonger dans. Merci.
Vous devez vous connecter pour publier un commentaire.
Utiliser M-x
toggle-debug-on-error
RET pour le déposer dans le débogueur lors de cette (ou toutes les) erreur se produit, en supposant que c'est un véritable erreur, et pas seulement un message. Qui vous donne la trace de la pile, de sorte que vous pouvez comprendre ce qui a causé, et procéder à partir de là (peut-être avec edebug, une fois que vous avez déterminé quelle fonction(s) à l'instrument, mais vous pouvez faire beaucoup avec la régulière débogueur).Standard commandes du débogueur:
M-:
(info "(elisp) Debugger Commands")
RETPrincipale entrée de manuel pour le débogage lisp (y compris edebug):
M-:
(info "(elisp) Debugging")
RETPour info, rgrep me dit que la seule occurrence de la chaîne "mode Fichier de spécification de l'erreur" dans le *.el fichiers pour NTEmacs 23.2.1 apparaît dans la
normal-mode
définition de la fonction:M-x
find-function
RETnormal-mode
RETnormal-mode
et voir si je peux faire tout le sens de l'il.toggle-debug-on-error
que j'ai toujours l'erreur sans débogueur jamais démarrage (cela arrive parfois, lorsque j'essaie d'ouvrir le fichier avecido-find-file
, et il crée le tampon, mais il ne veut pas passer en elle, si je switch manuellement tout fonctionne bien). Des idées?debug-on-error
estnil
, donc en supposant que vous êtes certainement le basculement de la variable, et non pas, alors quelque chose d'autre doit être la désactivation dedebug-on-error
avant que l'erreur se produit.(foo-mode +1)
au lieu de(foo-mode 1)
. Merci pourtoggle-debug-on-error
.Vous voudrez peut-être dire que la version d'Emacs que vous utilisez.
Si c'est GNU Emacs 23, puis le code correspondant est dans la fonction
normal-mode
dansfiles.el
et ressemble à ceci:Donc la fonction
set-auto-mode
(ou une fonction appelée) signale l'wrong-type-argument
erreur etnormal-mode
est d'ajouter le texteFile mode specification error
dans une tentative pour vous aider à le retrouver, mais ce n'est hélas pas aider ici, parce que la fonction deset-auto-mode
est de déterminer le mode majeur d'un tampon doit avoir, et puis tourner sur ce mode. Je m'attends c'est le mode lui-même que la signalisation de l'erreur.Donc phils conseils pour allumer
debug-on-error
et de regarder la trace est bonne: cela devrait vous donner un indice quant à ce qu'il se passe.Pour moi, c'est arrivé parce que j'avais une paire supplémentaire de
()
parenthèses autour du corps d'une fonction que j'ai écrit. Je suppose que le fait de lisp tentative d'exécution de la valeur de retour de la fonction du corps. Donc attention à votre parenthèse comte!