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

19

我已经升级到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个回答

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

7

警告有四个级别选项:

  • warning-minimum-level(最低警告级别)
  • warning-minimum-log-level(最低日志警告级别)
  • warning-suppress-types(忽略警告类型)
  • warning-suppress-log-types(忽略日志警告类型)

更多信息请参阅Emacs手册


8
为此,您可以将以下内容添加到您的 .emacs 文件中的 custom-set-variables 中:'(warning-minimum-level :error),以此来补充上文所述。 - William Roe

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' {} \;` 

0

Phils的解决方案由于某种原因对我无效。这里有一种更低级别的方法来完成它。

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

这对我起作用,但现在我得到了cl包中调用的remprop函数。 - manylegged

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接