`Warning(bytecomp)`は少しあいまいです-詳細情報を入手できますか?


10

emacsを起動すると、ポップアップウィンドウにいくつかのバイトコンパイル警告が表示されます。

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

emacsで場所を教えてもらえますか?


3
この情報は誰にとっても役に立つでしょう。Mx report-emacs-bugを使用してこの機能を要求します。
abo-abo 2015年

あなたが設定しようとした場合debug-on-messageWarning (bytecomp)、それはデバッガをトリガしないのだろうか?
wvxvw

2
IIRCでは、Emacsがファイルを知っているときにファイル名を取得します。したがって、おそらく上記は、ファイルに保存されてからバイトコンパイラに渡されるのではなく、「オンザフライで」生成されたElispコードに由来していると考えられます。99%のケースでは、Emacsを起動してもコードはまったくコンパイルされないはずなので、問題をさらに高いレベルで修正できる可能性があります。
Stefan

@wvxvw-私はdebug-on-message何もすることができませんでした。最後に、interactive-pスクリーンlines.elによって引き起こされることが判明し、with-current-buffer1はトゥアレグモードの古代のバージョンによるものでした。両方削除することにしました。私はtuareg-modeを使用していません。screen-lines.elはかなり気に入っていますが、キーボードマクロに関するあらゆる種類の問題の原因になっています。
トムセドン

回答:


4

これはdisplay-warning、初期化時間の後まで警告を遅らせるために発生します。そのときまでに、ファイル名と場所は不明です。

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

あなたはいくつかのアドバイスでこれを無効にすることができるはずです:

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

これは*Warnings*バッファのポップアップを防ぐ可能性がありますが(Bug#20792で説明されているように)、*Compile-Log*バッファで手動で確認する必要があります。

これの以前のケースは、ここでemacs-develで報告されていますここに続きます)。


1

警告はELPAパッケージのオンザフライコンパイルから発生していると思います。次のコードを実行してみてください:

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

Mx my-package-recompileの後にCompile-Logバッファーを切り替えて、これらの警告がそこにレプリケートされるかどうかを確認しますか?


私は同じ問題を抱えていますが、最初のエラーと2回だけです。このソリューションは機能しませんでした。また、それは言ったDone (Total of 4 files compiled, 1 failed, 2 skipped in 3 directories)
trss 2016

申し訳ありませんが、これは問題を解決するためのものであり、詳細情報を取得するためのものではないと考えました。ここでエラーを探しましたが、リストに表示されませんでした。
trss 2016
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.