我喜欢将powershell
用于Emacs。除其他外,我的配置文件中包含以下内容:
$Input
Flycheck警告说,功能stdin input: 42
Press any key to continue . . .
在运行时可能不可用。但是,use-package
的文档指出,在装入软件包后的 之后,评估(use-package proced
:ensure t
:config
(proced-toggle-auto-update 1)
(general-define-key
:keymaps 'proced-mode-map
"j" 'next-line
"k" 'previous-line))
之后的所有表单。那么,这种flycheck警告是误报吗?
答案 0 :(得分:0)
如果您知道该功能将在运行时可用,例如。该软件包将被加载(因为该函数不会自动加载),那么您可以通过声明该函数来告知编译器,例如。
(declare-function proced-toggle-auto-update "proced")
我不使用use-package
,但假定您引用的文档已经加载了该程序包,所以是的,这肯定是错误的。
在其他情况下,您也可以显式地自动加载函数并让编译器知道,
(autoload 'proced-toggle-auto-update "proced")
这些操作假定库“ proced”在您的加载路径上,例如。 (featurep 'proced)
不为空。
答案 1 :(得分:0)
flycheck emacs-lisp-checker
正在使用字节编译器来找出代码中可能出现的问题,并且需要一点帮助来找出use-package
中的问题。对于使用use-package
的初始化文件,我要做两件事:
首先,我为初始化文件(在.dir-locals.el
中)定义目录本地变量:
((emacs-lisp-mode ((flycheck-emacs-lisp-load-path . inherit))))
设置inherit
后,load-path
使用的flycheck
取自当前的load-path
,因此它可以找到各种Lisp包中的所有文件。
第二,我在初始化文件的每个单独文件中都有(require 'use-package)
。这似乎是多余的,但是它可以使flycheck单独检查文件,因为它可以扩展use-package
宏以进行更好的分析。
此设置似乎可以避免大多数use-package
发出的警告,除非是真正重要的警告。但是,尚未在您的特定配置上对其进行测试。