だいぶ前から、Emacsの起動時に
`flet' is an obsolete macro (as of 24.3); use either `cl-flet' or `cl-letf'.
というメッセージが出てきていました。自分の設定ファイルが悪いとは思っていなかったのですが、間違いでした。
以前に設定した
(defadvice save-buffers-kill-emacs (around no-query-kill-emacs activate)
"Prevent annoying \"Active processes exist\" query when you quit Emacs."
(flet ((process-list ())) ad-do-it))
が原因でした(汗)。これはEmacsを終了しようとする度に”Active processes exist”と言われるのを抑制するためのものです。
最近はfletはobsoleteなので、以下のように書き換えるようです(Stackoverflowから)。
(require 'cl-lib)
(defadvice save-buffers-kill-emacs (around no-query-kill-emacs activate)
"Prevent annoying \"Active processes exist\" query when you quit Emacs."
(cl-letf (((symbol-function #'process-list) (lambda ())))
ad-do-it))
ちなみに、Artur Malabarbaさんによれば fletの置き換えは cl-letfが良いらしいです。メッセージではcl-flet or cl-letfの両方がでていますが…。
(symbol-function SYMBOL)
の置き換えも必要です。
Understanding letf and how it replaces flet · Endless Parentheses
Once you’ve come to terms with power of setf, it is time to meet its older sister, cl-letf. As the name implies, letf is to setf like let is to setq, but, once again, that is only the tip of the iceberg.