如何隐藏Emacs的“过时变量”警告?

时间:2011-03-29 06:57:25

标签: emacs

我已升级到Emacs 23.3,现在*Compile-Log*缓冲区一直打开 ,错误如下:

Warning: `font-lock-beginning-of-syntax-function' is an obsolete variable (as
    of Emacs 23.3); use `syntax-begin-function' instead.

我假设上游作者将来会处理这些警告。在那之前,我如何防止这些错误出现并打开一个新窗口?

4 个答案:

答案 0 :(得分:22)

由于另一个问题,我目前回到23.2,但是当我尝试23.3时,我在这个问题上遇到了解决方法。它只是阻止变量被认为是过时的,但是直到Mumamo自行解决,这似乎更合适!

;; Mumamo is making emacs 23.3 freak out:
(when (and (equal emacs-major-version 23)
           (equal emacs-minor-version 3))
  (eval-after-load "bytecomp"
    '(add-to-list 'byte-compile-not-obsolete-vars
                  'font-lock-beginning-of-syntax-function))
  ;; tramp-compat.el clobbers this variable!
  (eval-after-load "tramp-compat"
    '(add-to-list 'byte-compile-not-obsolete-vars
                  'font-lock-beginning-of-syntax-function)))

答案 1 :(得分:7)

警告有四个级别的选项:

  • 警告最小级别
  • 警告最小日志级别
  • 警告-抑制类型
  • 警告-抑制日志类型

有关Emacs Manual的更多信息。

答案 2 :(得分:4)

我通过在elisp上运行它来修复它:

sed -i.bak 's/font-lock-beginning-of-syntax-function/syntax-begin-function/g' `find . -name '*.el' -exec grep -l 'font-lock-beginning-of-syntax-function' {} \;` 

答案 3 :(得分:0)

Phils的解决方案由于某种原因对我不起作用。这是一种更低级的方法。

(remprop 'flet 'byte-obsolete-info)
(remprop 'labels 'byte-obsolete-info)