能無いモノローグ

キュレェの Playground

Magit において "Symbol's function definition is void: seq-keep" が表示される場合の対処法

はじめに

キュレェです。Emacs 歴がもう 4 年くらいになってきました。

4 年目なのにもかかわらず、Emacsキラーアプリケーションであるところの Magit を今まで使ってきていなかったことをフォロワーに指摘されたので始めてみました。

Magit を使っていると、毎度何かをするたびにエコーエリアに "Symbol's function definition is void: seq-keep" がちらつくので解決法を書いておきます。

普段使っている Emacs を含めた環境は以下です (もしかして古いな?):

原因

;; For older Emacs releases we depend on an updated `seq' release from

;; GNU ELPA, for `seq-keep'. Unfortunately something else may already

;; have required seq', beforepackage' had a chance to put the more

;; recent version earlier on the `load-path'.

magit/lisp/magit-base.el at f4ff817cb2a48f0f7887050c3be469c03a059567 · magit/magit · GitHub より

magit-base.el には、magit が seq.el に依存している旨が書いてあります。seq-keep は seq.el に Emacs 29 にて追加されたっぽい ので、当然俺が使っている Emacs 28.1 においては未定義なわけです。

解決法(楽)

github.com

に書いてある seq-keep を init.el に書いてあげればよいです。

解決法(面倒)

seq.el だけを新しいものに更新すればよいです(が、だるいので俺もやっていない)

参考

emacs.stackexchange.com

おわりに

まあそもそも Emacs 29 に上げてないのが悪いよ……