2010-03-04 44 views
12

有什麼方法可以將我自己的完成添加到(interactive) elisp函數?理想情況下,我想傳遞一個它將從中完成的字符串列表。我知道使用(interactive "D")(interactive "F")(interactive "b")可以分別完成目錄,文件和緩衝區名稱,但是更常用的輸入是什麼?將完成添加到(交互式)

回答

24

interactive的參數不一定是字符串;如果不是,則評估它以獲取傳遞給函數的參數列表。因此,你可以做這樣的事情:

(defun insert-foo-bar-or-baz (arg) 
    (interactive 
    (list 
    (completing-read "Choose one: " '("foo" "bar" "baz")))) 
    (insert arg)) 
+0

/facepalm現在我已經看到了一個例子,'M-x apropos'條目中的'interactive'的註釋非常有意義。 – Inaimathi 2010-03-04 21:29:16

相關問題