Flycheck の leaf: Unrecognized keyword エラーを修正
私の emacsは、設定ファイルを分割して init-loader
で読み込んでいます。
ところが Emacsの設定を use-package
から leaf
へ移行したら 各分割ファイルで flycheckが leaf: Unrecognized keyword :el-get (emacs-lisp)
というようなエラーを吐くようになった。leaf
で使える便利なキーワード(:hydra :chord :el-getなど)のいくつかがエラーに引っかかるみたい。
init.el
で (leaf-keywords-init)
が宣言されているので、 分割ファイルでも問題なく leaf
固有のキーワードを使うことができるのだが flycheck
は分割ファイルごとに compileチェックをするのでエラーになるというのが原因のようだ。
そこで、各分割ファイルの冒頭に (eval-when-compile (leaf-keywords-init))
というのを書いてみたら警告が消えた。
でも、このイディオムを各ファイルに入れるのは面倒な気がして leaf.el
の作者の
@conao3 さんに相談したところ下記の Lispを教えて頂いた。
(leaf flycheck
:ensure t
:hook (prog-mode-hook . flycheck-mode)
:custom ((flycheck-emacs-lisp-initialize-packages . t))
:config
;; Fixing leaf-keywords "Unrecognized keyword" error in flycheck
(eval-and-compile (require 'flycheck))
(setq flycheck-emacs-lisp-package-initialize-form
(flycheck-sexp-to-string
'(progn
(with-demoted-errors "Error during package initialization: %S"
(package-initialize))
(leaf-keywords-init)))))