[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: HOW TO GIVE A DEFAULT TO A TRULY INTERACTIVE FUNCTION
From: |
Edi Weitz |
Subject: |
Re: HOW TO GIVE A DEFAULT TO A TRULY INTERACTIVE FUNCTION |
Date: |
14 Oct 2002 22:07:03 +0200 |
User-agent: |
Gnus/5.09 (Gnus v5.9.0) Emacs/21.2 |
gnuist006@hotmail.com (gnuist006) writes:
> (defun demo (&optional number)
> "Demo of an optional argument of the function."
> (interactive "nEnter a number:")
> (setq defaultval 5)
> (if (null number) (setq number defaultval))
> (insert (format "%s" number))
> ) (demo)
> ; works due to optional argument
>
> I want the default to work on the command line also.
> They say emacs is customizable. OK it is if you only want to do what
> it
> can do, and never try to do what you want to do.
>
> I want to invoke it on command line ie M-x demo
> It comes and says
> Enter a number:_
>
> I prefer it display the default 5 in the message and there is
> SINGLE instance of 5 in the function. ie using defaultval.
>
> If this cannot do this and you were all lying to yourself that
> emacs is customizable, infinitely extensible, then I atleast want
> quick fix for this.
>
> When I hit RTN after it begs for number once, it go away and use
> defaultval and stop buggin me.
>
> At present it does not stap and keeps bugging till I enter 5.
> Why do I have to remember the default when I am giving it that much
> money?
This guy is obviously a troll who doesn't deserve an answer but for
the sake of others who might read this:
(require 'cl)
(defun* bar (&optional (default 5))
(let* ((default-string (format "%s" default))
(string (read-string "Number: "
default-string
nil
default-string)))
;; needs check for wrong input
(list (string-to-number string))))
(defun foo (n)
(interactive
(bar 42))
(insert (format "%s" (* 3 n))))
I'm sure the real Emacs experts know better ways to do this, I just
wanted to show that it's doable.
Edi.