僕の環境限定かわかりませんが、
最近M-%(query-replace)を使っていて、
いきなりエラーになることがあります。
こんな感じに
リストが入るべきところに
コンスセルが入ってくるのです。
Debugger entered--Lisp error: (wrong-type-argument listp "キー名") mapcar(#[略] (#("キーの名前" 略) . "キー名")) query-replace-read-from("Query replace" nil)
コンスセルが入ってくるその変数は
query-replace-defaults ですので
(setq query-replace-defaults nil)
を設定すれば直ることがわかっています。
毎回M-:やeshellで
設定するのは面倒ですので、
アドバイスを書いて対策しています。
最初はvisual-regexpや
visual-regexp-steroids固有の
問題かと思いましたが、
通常のquery-replaceを使っていても
エラーが起きましたので、
Emacsのバグの可能性があります。
同じ問題に悩まされている方は
以下のアドバイスを設定してみてください。
設定 50query-replace-fix.el(以下のコードと同一)
(defun query-replace-read-from--fix-error (&rest them) (condition-case _ (apply them) (error (setq query-replace-defaults nil) (apply them)))) (advice-add 'query-replace-read-from :around 'query-replace-read-from--fix-error)
実行方法
$ wget http://rubikitch.com/f/50query-replace-fix.el $ emacs -Q -f package-initialize -l 50query-replace-fix.el
本日もお読みいただき、ありがとうございました。参考になれば嬉しいです。