コマンドループは、実行済みの複合コマンドの履歴を保持しており、これらのコマンドを容易に再実行できるようになっています。複合コマンドとは、対話的な引数読み込みにミニバッファを使用するコマンドのことです。これには、あらゆるM-xコマンド、あらゆるM-:コマンド、およびinteractive指定でミニバッファから引数を読み込むあらゆるコマンドが含まれます。コマンドの実行中に明示的にミニバッファを使用したとしても、そのコマンドが複合コマンドとみなされることはありません。
この変数の値は、直近の複雑なコマンドのリストであり、各コマンドは評価対象のフォームとして表現されています。編集セッションの間、すべての複雑なコマンドが蓄積され続けますが、最大サイズに達すると(ミニバッファ履歴を参照)、新しいコマンドが追加されるにつれて最も古い要素が削除されます。
command-history
⇒ ((switch-to-buffer "chistory.texi")
(describe-key "^X^[")
(visit-tags-table "~/emacs/src/")
(find-tag "repeat-complex-command"))
この履歴リストは、実際にはミニバッファ履歴(ミニバッファ履歴を参照)の特殊なケースであり、一点だけ特別な点があります。それは、要素が文字列ではなく式であるということです。
直前のコマンドの編集や呼び出しに特化したコマンドが数多く用意されています。コマンド repeat-complex-command および list-command-history については、ユーザーマニュアルに記載されています(The GNU Emacs Manual の Repetition
を参照してください)。ミニバッファ内では、通常のミニバッファ履歴コマンドが利用可能です。