コマンドによりヒストリを変更するには?

Title
コマンドによりヒストリを変更するには?
Type
Tips
Section
その他
コマンド別にミニバッファのヒストリを管理する方法です。

  ;;; ヒストリのリスト
  (setq foo-history '("qux" "quux" "quuux"))
  
  ;;; 管理したいコマンド
  (defun foo ()
    (interactive)
    (list
     (let ((*minibuffer-default-history* foo-history)) ; ヒストリを設定する
       (prog1
         (completing-read
          "foo: "               ; プロンプト文字列
          '("foo" "bar" "baz")  ; 補完候補
          :must-match nil       ; 必ず補完候補にマッチしなきゃ駄目?
          :case-fold t)         ; 大文字小文字を区別する?
         ; 変更されたかもしれないから戻しておく
         (setq foo-history *minibuffer-default-history*)))))