8

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

1
  • 1
    FWIW, if you want a prompt for "N", just add the prompt text after the N; (interactive "NType a number: "). Commented Feb 7, 2010 at 1:09

1 Answer 1

9

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: ")))))
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.