Verwendung von 'interaktiven' Argumenten beim Aufrufen des Befehls aus dem Code

12

Ich habe einen Befehl aufgerufen, testder einfach eine Eingabe vom Benutzer entgegennimmt und sie zurücksendet:

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

Ich möchte eine andere Funktion schreiben, die es aufrufen würde. Folgendes schlägt fehl:

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

mit diesem Fehler

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

Dies ist sinnvoll, da testeine Eingabe erfolgt. Making test's input &optionalbringt einfach etwas test-forwardzurück, nilohne etwas zu tun. Wie geht das richtig?

Pradhan
quelle

Antworten:

13

Einfach:

(call-interactively 'test)
abo-abo
quelle