27213


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

[code]

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

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


CC BY-SA 3.0
2016-06-30T03:28:29.103
27208
2016-06-30T08:25:56.363
754
question
elisp
interactive で文字列をクエリする際に、既定の候補から選択するには？


@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]


CC BY-SA 3.0
2016-06-30T08:25:56.363
27213
2016-06-30T08:25:56.363
2017-05-23T12:38:55.307
-1
754
27208
answer