interactive で文字列をクエリする際に、既定の候補から選択するには？


interactive な関数を定義する際に、その引数を、複数ある候補から指定したいと思っています。

[code]

    ; 次のような候補リストがあるとする
    (setq candidates '("foo" "bar" "piyo"))
    
    ; the-candidate を candidates の中からひとつ選びたい
    (defun some-func (the-candidate)
      (interactive (list ???))
    )
    
[/code]

これは一般的にどのように実現されますか？




@metropolis さんに紹介された、 <https://stackoverflow.com/a/2382677/3090068> がドンピシャでした。

今回のケースに当てはめると、次のように実現できました。

[code]

    (setq candidates '("foo" "bar" "piyo"))
    
    (defun some-func (the-candidate)
      (interactive
       (list
        (completing-read "Choose one: " candidates)))
      (prin1 the-candidate))
    
[/code]




@metropolis さんに紹介された、 <https://stackoverflow.com/a/2382677/3090068> がドンピシャでした。

今回のケースに当てはめると、次のように実現できました。

[code]

    (setq candidates '("foo" "bar" "piyo"))
    
    (defun some-func (the-candidate)
      (interactive
       (list
        (completing-read "Choose one: " candidates)))
      (prin1 the-candidate))
    
[/code]

