How do I specify a function which has optional numeric prefix, if not, it prompts for a number? basically how goto-line behaves?
(defun my-function(&optional n)
; I have tried
(interactive "N") ; reads string, no prompt
(interactive "p") ; defaults to one
(interactive (if (not n) (read-number "N: "))) ; runtime error
so how do I make work? thanks
Take a look at how 'goto-line
is defined (M-x find-function goto-line RET
).
(defun my-function (n)
"Example function taking a prefix arg, or reading a number if no prefix arg"
(interactive
(if (and current-prefix-arg (not (consp current-prefix-arg)))
(list (prefix-numeric-value current-prefix-arg))
(list (read-number "N: ")))))
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With