求助:启动emacs出现“⛔ Warning (files): : ‘lexical-binding’ at end of file unreliable”警告

更新了一下所有插件后启动emacs,会有下面的警告:

⛔ Warning (files): : ‘lexical-binding’ at end of file unreliable

通过二分排查,在配置中定位到是如下配置引起的问题

(use-package sis
  :demand t
  :init
  (setq
   sis-inline-with-english t
   sis-external-ism "im-select"
   sis-respect-restore-triggers
   '(isearch-exit isearch-abort)
   sis-respect-go-english-triggers
   '(iserach-forward isearch-backward)
   sis-respect-minibuffer-triggers
   `(,(cons 'denote (lambda () 'other))
     ,(cons 'denote-template (lambda () 'other))
     ,(cons 'denote-open-or-create (lambda () 'other)))
   )
  :config
  (add-to-list 'sis-prefix-override-keys "M-s")
  (add-to-list 'sis-prefix-override-keys "M-g")

  (when IS-WIN
    (sis-ism-lazyman-config "1033" "2052" 'im-select))

  (sis-global-inline-mode 1)
  (sis-global-respect-mode 1)
  ;; (sis-global-context-mode 1)
  (add-hook 'org-capture-mode-hook 'sis-set-other))

这段配置之前没问题,也不太清楚这个warning是啥意思,有网友清楚这个问题或者遇到这个问题的吗?

在 sis.el 的代码末尾处:emacs-smart-input-source/sis.el

你可以看到作者把 lexical-binding 的设置写在这里,但是标准做法是写在文件的开头,因此 Emacs 提示你这种做法可能不怎么可靠。

不过既然包能正常使用那就没什么问题,忽略这个 warning 即可,或者向作者建议把作用域设定移动到文件开头

1 个赞

:smile: sis 作者最近刚刚把 ‘lexical-binding’ 的设置改到文件末尾,然后最近 master 就提高这个警告的级别,以前只是在文档检查时有提示。

我已经给 sis 提 issue了。可能他太忙了,还没回复。

是 Emacs 30 中的这个 commit 的改动引起的: https://git.savannah.gnu.org/cgit/emacs.git/commit/?id=a3db503351e

1 个赞

fix了~~

2 个赞