unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
* HOW TO GIVE A DEFAULT TO A TRULY INTERACTIVE FUNCTION
@ 2002-10-14 16:02 gnuist006
  2002-10-14 17:22 ` Joe Casadonte
                   ` (2 more replies)
  0 siblings, 3 replies; 16+ messages in thread
From: gnuist006 @ 2002-10-14 16:02 UTC (permalink / raw)


(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?

^ permalink raw reply	[flat|nested] 16+ messages in thread
* RE: HOW TO GIVE A DEFAULT TO A TRULY INTERACTIVE FUNCTION
@ 2002-10-14 18:27 Bingham, Jay
  0 siblings, 0 replies; 16+ messages in thread
From: Bingham, Jay @ 2002-10-14 18:27 UTC (permalink / raw)


The reason that this function does not do what you want it to is that the interactive code, "n", in the string type arg-descriptor specifies that the interactive value must be a number, emacs will not let you enter a non-numeric value which is what just typing return at the prompt amounts to.  So emacs tells you to enter a number and redisplays the prompt.
Using a string type arg-descriptor the only way that you can set up a function to allow you to enter a number or nothing is to use the "s" interactive code character (which does not provide any number validation)  If you are using emacs 21 the easiest way to do number validation is to use the string-match function with the [:alpha:] character class as the regexp.
Also when the argument is a string the "if (null number)" construct cannot be used, use "if (string= "" number)" instead.

Here is your function using a string arg-descriptor, that does some very crude numeric validation and inserts a 5 when nothing is entered at the prompt.

(defun demo (&optional number)
  "Demo of an     optional argument of the function."
  (interactive "sEnter a numeric value:")
  (setq defaultval "5")
  (if (string= "" number) (setq number defaultval))
  (if (not (string-match "[:alpha:]" number))
      (insert (format "%s" number))
    (message "non-numeric value entered, please re-enter"))
  )

If you want a function that prompts for a number until one is entered you will have to use an elisp expression type arg-descriptor and do your own number validation.  I used to have a function that did its own number validation but I lost it when I left my last employer, so I can't send you an example without going to a lot of work.  As I recall the lisp expression prompted for the number, did the validation and re-issued the prompt if the string entered was not numeric.  There may be some examples in the emacs lisp reference manual (see: http://www.gnu.org/manual/elisp-manual-21-2.8).

-_
J_)
C_)ingham
.    HP - NonStop Austin Software & Services - Software Product Assurance
.    Austin, TX
. Language is the apparel in which your thoughts parade in public.
. Never clothe them in vulgar and shoddy attire.          -Dr. George W. Crane-

 -----Original Message-----
From: 	gnuist006 [mailto:gnuist006@hotmail.com] 
Sent:	Monday, October 14, 2002 11:02 AM
To:	help-gnu-emacs@gnu.org
Subject:	HOW TO GIVE A DEFAULT TO A TRULY INTERACTIVE FUNCTION

(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?
_______________________________________________
Help-gnu-emacs mailing list
Help-gnu-emacs@gnu.org
http://mail.gnu.org/mailman/listinfo/help-gnu-emacs

^ permalink raw reply	[flat|nested] 16+ messages in thread
[parent not found: <mailman.1034620095.15632.help-gnu-emacs@gnu.org>]

end of thread, other threads:[~2002-10-18 17:05 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2002-10-14 16:02 HOW TO GIVE A DEFAULT TO A TRULY INTERACTIVE FUNCTION gnuist006
2002-10-14 17:22 ` Joe Casadonte
2002-10-14 20:07 ` Edi Weitz
2002-10-17 14:27   ` gnuist006
2002-10-17 17:35     ` Barry Margolin
2002-10-18 10:36     ` Oliver Scholz
2002-10-17 14:35   ` gnuist006
2002-10-17 15:03     ` Edi Weitz
2002-10-18  5:51       ` huntingdon
2002-10-18  7:13     ` Friedrich Dominicus
2002-10-18  7:07 ` Friedrich Dominicus
2002-10-18  8:05   ` Friedrich Dominicus
2002-10-18 17:05   ` Kevin Rodgers
  -- strict thread matches above, loose matches on Subject: below --
2002-10-14 18:27 Bingham, Jay
     [not found] <mailman.1034620095.15632.help-gnu-emacs@gnu.org>
2002-10-17 14:22 ` gnuist006
2002-10-18  7:14   ` Friedrich Dominicus

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).