`Warning (bytecomp)` è un po 'vago - posso avere ulteriori informazioni?


11

Quando avvio emacs, ricevo un paio di avvisi di compilazione di byte in una finestra che si apre:

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

Posso ottenere emacs per fornirmi posizioni?


3
Questa informazione sarebbe utile a tutti. Usa Mx report-emacs-bugper richiedere questa funzione.
abo-ABO

Se si tenta di impostare debug-on-messagesu Warning (bytecomp), non attiverà il debugger?
wvxvw,

2
IIRC ottieni nomi di file quando Emacs conosce il file. Quindi presumibilmente quanto sopra deriva da un codice Elisp che è stato "generato al volo" piuttosto che salvato in un file e poi passato al compilatore di byte. Nel 99% dei casi, l'avvio di Emacs non dovrebbe in realtà compilare alcun codice, quindi forse il problema può essere risolto a un livello ancora più elevato.
Stefan,

@wvxvw - Non sono riuscito a debug-on-messagefare nulla. Alla fine, il interactive-prisultato è stato causato da screen-lines.el e with-current-bufferquello era dovuto a un'antica versione di tuareg-mode. Ho deciso di rimuovere entrambi. Non uso la modalità tuareg, e anche se mi piacciono abbastanza le screen-line.el, a lungo mi ha causato molti tipi di problemi con le macro della tastiera.
Tom Seddon,

Risposte:


4

Ciò accade a causa di display-warningritardi negli avvisi fino a dopo il tempo di inizializzazione. A quel punto, il nome e il percorso del file non sono più noti.

(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
    [... ]

Dovresti essere in grado di disabilitarlo con alcuni consigli:

(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)

Anche se questo potrebbe impedire la *Warnings*comparsa del buffer (come descritto nel Bug # 20792), quindi dovrai controllarlo manualmente nel *Compile-Log*buffer.

Caso precedente di questo, riportato su emacs-devel qui ( continua qui ).


2

Immagino che gli avvertimenti provengano dalla compilazione al volo di pacchetti ELPA. Prova a eseguire il codice seguente:

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

Dopo che Mx my-package-recompile cambia il buffer Compile-Log e vedi se questi avvisi sono replicati lì?


Ho lo stesso problema ma solo il primo errore e 2 volte. Questa soluzione non ha funzionato. Inoltre, ha detto Done (Total of 4 files compiled, 1 failed, 2 skipped in 3 directories).
trss,

Spiacenti, pensavo che si trattasse di risolvere il problema, non ottenere ulteriori informazioni. Ho provato a cercare l'errore ora ma non è stato visualizzato nell'elenco.
trss,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.