`Uyarı (bytecomp)` biraz belirsiz - daha fazla bilgi alabilir miyim?


11

Emacs'ı başlattığımda, açılan bir pencerede birkaç bayt derleme uyarısı alıyorum:

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

Bana yer vermek için emac alabilir miyim?


3
Bu bilgi herkes için yararlı olacaktır. report-emacs-bugBu özelliği istemek için Mx kullanın .
abo-abo

Ayarlamak çalışırsanız debug-on-messageiçin Warning (bytecomp), bu hata ayıklayıcı tetiklemez?
wvxvw

2
Emacs dosyayı tanıdığında IIRC dosya isimleri alırsınız. Muhtemelen yukarıdaki, bir dosyaya kaydedilip bayt derleyicisine iletilmek yerine "anında oluşturulmuş" bazı Elisp kodundan gelir. Vakaların% 99'unda, Emac'ları başlatmak aslında herhangi bir kod derlememelidir, bu yüzden sorun daha da yüksek bir seviyede düzeltilebilir.
Stefan

@wvxvw - Hiçbir debug-on-messageşey yapmayı başaramadım . Sonunda, interactive-pekran hatlarından kaynaklandığı ortaya çıktı. El ve with-current-bufferbiri tuareg modunun eski bir versiyonundan kaynaklanıyordu. Her ikisini de kaldırmaya karar verdim. Tuareg modunu kullanmıyorum ve ekran satırlarını çok sevdim. Uzun süredir bana klavye makrolarıyla ilgili her türlü soruna neden oldu.
Tom Seddon

Yanıtlar:


4

Bu, display-warninguyarıları başlatma süresine kadar erteleme nedeniyle olur . O zamana kadar, dosya adı ve konumu artık bilinmemektedir.

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

Bunu bazı tavsiyelerle devre dışı bırakabilmelisiniz:

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

Bu, *Warnings*arabellek açılmasını engelleyebilse de (Hata # 20792'de açıklandığı gibi), bu nedenle *Compile-Log*arabellekte manuel olarak kontrol etmeniz gerekir .

Bunun önceki bir örneği, burada emacs-devel hakkında rapor ( burada devam ediyor ).


2

Uyarıların ELPA paketlerinin anında derlenmesinden geldiğini tahmin edeceğim. Aşağıdaki kodu çalıştırmayı deneyin:

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

Mx my-package-recompile sonra Compile-Log arabelleğe geçin ve bu uyarıların orada çoğaltılıp çoğaltılmadığına bakın.


Aynı sorun var ama sadece ilk hata ve 2 kez. Bu çözüm işe yaramadı. Ayrıca, dedi Done (Total of 4 files compiled, 1 failed, 2 skipped in 3 directories).
trss

Maalesef, bunun daha fazla bilgi edinmek değil, sorunu çözmekle ilgili olduğunu düşündüm. Şimdi hatayı aramayı denedim ama listede görünmedi.
trss
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.