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