`경고 (bytecomp)`는 약간 모호합니다. 더 자세한 정보를 얻을 수 있습니까?


11

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

이맥스가 위치를 알려줄 수 있나요?


3
이 정보는 모든 사람에게 유용 할 것입니다. report-emacs-bug이 기능을 요청 하려면 Mx 를 사용하십시오 .
abo-abo

사용자가 설정하려는 경우 debug-on-messageWarning (bytecomp), 그것은 디버거를 트리거하지 않습니다?
wvxvw 2016 년

2
IIRC는 Emacs가 파일을 알고있을 때 파일 이름을 얻습니다. 아마도 위의 내용은 파일에 저장 한 다음 바이트 컴파일러로 전달되지 않고 "즉석에서 생성 된"일부 Elisp 코드에서 비롯된 것입니다. 99 %의 경우 Emacs를 시작하면 실제로 어떤 코드도 컴파일하지 않아야하므로 문제가 더 높은 수준에서 해결 될 수 있습니다.
Stefan

@wvxvw-나는 debug-on-message아무것도 할 수 없었습니다. 결국 interactive-pscreen-lines.el에 의한 것으로 밝혀졌으며, with-current-buffer하나는 고대 버전의 tuareg 모드 때문이었습니다. 나는 둘 다 제거하기로 결정했습니다. 나는 tuareg 모드를 사용하지 않으며 screen-lines.el을 매우 좋아하지만 오랫동안 키보드 매크로에 모든 종류의 문제를 일으켰습니다.
Tom Seddon 1

답변:


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*버퍼가 팝업 되지 않을 수 있지만 (버그 번호 20792에 설명되어 있음) *Compile-Log*버퍼 에서 수동으로 확인해야 합니다.

이 이전하는 경우는, 이맥스 (STABLE)에보고 여기 ( 여기 계속 ).


2

ELPA 패키지를 즉시 컴파일 할 때 경고가 발생한다고 생각합니다. 다음 코드를 실행 해보십시오.

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

Mx my-package-recompile 후 Compile-Log 버퍼를 전환 하고이 경고가 복제되는지 확인하십시오.


나는 같은 문제가 있지만 첫 번째 오류와 두 번만 발생합니다. 이 솔루션은 작동하지 않았습니다. 또한 말했다 Done (Total of 4 files compiled, 1 failed, 2 skipped in 3 directories).
trss

죄송합니다. 문제를 해결하는 것이 아니라 추가 정보를 얻는 것이 아니라고 생각했습니다. 지금 오류를 찾으려고했지만 목록에 나타나지 않았습니다.
trss
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.