つうさにメモブログ

つうさにがメモをブログとして書いていくところ

またしてもemacs `Wrong type argument: arrayp, nil`

Emacs起動時にエラー吐かれて、直した話。

起動時にエラー

久々にEmacsを再起動したら、起動時にエラーWrong type argument: arrayp, nilが起こってしまいました。これではinit.elを最後まで読んでくれないので、どうにかして直します。

原因は

とりあえずどこでエラーが起こっているのか見つけるために--debug-initオプションをつけてemacsを起動します。

$ /Applications/Emacs.app/Contents/MacOS/Emacs --debug-init&

すると、init.elに書いておいたquelpaパッケージの関数quelpa-self-upgradeが原因みたいです。どうやらquelpaに更新があったみたいで、それをインストールしようとしてるんですが、singleファイルのパッケージなのにquelpa-なんとか.tarファイルが出てきて、でもそんなファイルはないと怒られて...?

quelpaのパッケージインストールの仕組み(package-build)は結構複雑でよくわからないので、とりあえずquelpaを再インストールしてみます。

qulepaの再インストール

再インストールは簡単で、~/.emacs.d/elpaにあるquelpa-なんとかディレクトリを消して、Emacsを再起動します。自分はqulepaパッケージがインストールされてない場合自動でインストールしてくれるようにしているためこれでおkなのです。

quelpaがインストールされていないときにインストール、インストールされていたら (quelpa-self-upgrade) のelisp

quelpaのREADMEに載ってることですが、書いておきます。

(if (require 'quelpa nil t)
    (quelpa-self-upgrade)
  (with-temp-buffer
    (url-insert-file-contents "https://framagit.org/steckerhalter/quelpa/raw/master/bootstrap.el")
    (eval-buffer)))

解決

なんとこれだけで直って、Emacs起動時にエラーが吐かれなくなりました。なんだか根本的な理由が分からずじまいでしたがこれで解決したとします。

なんだか重要なところが文字ばかりでわかりづらい記事になってしまいました。