I think this is a bug. In GNU Emacs 21.3.1 (i386-pc-solaris2.7, X toolkit), I did this in the *scratch* buffer: (add-hook 'pre-command-hook (lambda () (message "pre-command-hook: %s, %s" last-command this-command))) And then typed: M-x list-buffers RET C-x b Which generated this in the *Messages* buffer: pre-command-hook: eval-print-last-sexp, execute-extended-command pre-command-hook: execute-extended-command, self-insert-command pre-command-hook: self-insert-command, self-insert-command [11 times] pre-command-hook: self-insert-command, minibuffer-complete-and-exit pre-command-hook: list-buffers, switch-to-buffer Note that there is no "minibuffer-complete-and-exit, list-buffers" entry. Fexecute_extended_command sets Vthis_command (but not Vlast_command) before calling the Lisp function (list-buffers in this example) via Fcommand_execute, but neither one of them runs the pre-command-hook (or post-command-hook) Lisp functions. -- Kevin Rodgers