`Avertissement (bytecomp)` est un peu vague - puis-je obtenir plus d'informations?

11

Lorsque je démarre emacs, je reçois quelques avertissements de compilation d'octets dans une fenêtre qui s'affiche:

Warning (bytecomp): `interactive-p' is an obsolete function (as of 23.2); use `called-interactively-p' instead. [7 times]
Warning (bytecomp): Use `with-current-buffer' rather than save-excursion+set-buffer

Puis-je demander à emacs de me donner des emplacements?

Tom Seddon
la source
3
Cette information serait utile à tout le monde. Utilisez Mx report-emacs-bugpour demander cette fonctionnalité.
abo-abo
Si vous essayez de définir debug-on-messagesur Warning (bytecomp), cela ne déclenchera-t-il pas le débogueur?
wvxvw
2
IIRC vous obtenez des noms de fichiers quand Emacs connaît le fichier. On peut donc supposer que ce qui précède provient d'un code Elisp qui a été "généré à la volée" plutôt que enregistré dans un fichier puis transmis au compilateur d'octets. Dans 99% des cas, le démarrage d'Emacs ne devrait en fait pas compiler de code du tout, donc peut-être que le problème peut être résolu à un niveau encore plus élevé.
Stefan
@wvxvw - Je n'ai pas réussi à faire debug-on-messagequoi que ce soit. En fin de compte, cela interactive-ps'est avéré être causé par screen-lines.el, et celui- with-current-bufferci était dû à une ancienne version du mode touareg. J'ai décidé de supprimer les deux. Je n'utilise pas le mode tuareg, et bien que j'aime assez screen-lines.el, cela m'a longtemps causé toutes sortes de problèmes avec les macros de clavier.
Tom Seddon

Réponses:

4

Cela se produit en raison du display-warningretard des avertissements après l'heure d'initialisation. D'ici là, le nom et l'emplacement du fichier ne sont plus connus.

(defun display-warning (type message &optional level buffer-name)
  [...]
  (if (not (or after-init-time noninteractive (daemonp)))
      ;; Ensure warnings that happen early in the startup sequence
      ;; are visible when startup completes (bug#20792).
      (delay-warning type message level buffer-name)
    (unless level
    [... ]

Vous devriez pouvoir désactiver cela avec quelques conseils:

(defun dont-delay-compile-warnings (fun type &rest args)
  (if (eq type 'bytecomp)
      (let ((after-init-time t))
        (apply fun type args))
    (apply fun type args)))
(advice-add 'display-warning :around #'dont-delay-compile-warnings)

Bien que cela puisse empêcher le *Warnings*tampon d'apparaître (comme décrit dans le bogue n ° 20792), vous devrez donc le vérifier manuellement dans le *Compile-Log*tampon.

Cas précédent, rapporté sur emacs-devel ici ( continue ici ).

npostavs
la source
2

Je suppose que les avertissements proviennent de la compilation à la volée des packages ELPA. Essayez d'exécuter le code suivant:

(defun my-package-recompile()
  "Recompile all packages"
  (interactive)
  (byte-recompile-directory "~/.emacs.d/elpa" 0 t))

Après Mx my-package-recompile, basculez le tampon Compile-Log et voyez si ces avertissements y sont répliqués?

stsquad
la source
J'ai le même problème mais seulement la première erreur et 2 fois. Cette solution n'a pas fonctionné. Aussi, dit-il Done (Total of 4 files compiled, 1 failed, 2 skipped in 3 directories).
trss
Désolé, je pensais qu'il s'agissait de résoudre le problème, pas d'obtenir plus d'informations. J'ai essayé de rechercher l'erreur maintenant, mais elle n'apparaissait pas dans la liste.
trss