Cara menggunakan argumen 'interaktif' saat memanggil perintah dari kode

12

Saya memiliki perintah yang disebut testyang hanya mengambil input dari pengguna dan mengembalikannya:

(defun test (input)
  (interactive "MInput: ")
  (message "%s" input))

Saya ingin menulis fungsi lain yang akan menyebutnya. Berikut ini gagal:

(defun test-forward ()
  (interactive)
  (test))

dengan kesalahan ini

test-forward: Wrong number of arguments: (lambda (input) (interactive "MInput: ") (message "%s" input)), 0

Ini masuk akal, karena testmembutuhkan satu input. Membuat test's input &optionalhanya membuat test-forwardkembali niltanpa melakukan apa-apa. Apa cara yang benar untuk melakukan ini?

Pradhan
sumber

Jawaban:

13

Secara sederhana:

(call-interactively 'test)
abo-abo
sumber