help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Rationale behind conversion of a nil prefix arg to numeric 1


From: Andreas Röhler
Subject: Re: Rationale behind conversion of a nil prefix arg to numeric 1
Date: Tue, 6 Sep 2016 18:44:16 +0200
User-agent: Mozilla/5.0 (X11; Linux i686; rv:45.0) Gecko/20100101 Icedove/45.2.0



On 06.09.2016 16:20, Kaushal Modi wrote:
On Tue, Sep 6, 2016, 7:22 AM Andreas Röhler <andreas.roehler@easy-emacs.de <mailto:andreas.roehler@easy-emacs.de>> wrote:

    But let's go back to the simplest case of lower p in interactive spec:

    What is easier to read/grasp

    (setq counter (or arg 1)

    or

    (setq  counter (prefix-numeric-value arg))

    IOW: in favor of avoiding these complex, tricky things. Let's have the
    code as explicit as possible.


Those 2 forms are not 100℅ equivalent. The equivalence goes only as far as setting the default value of counter.

If the user used (interactive "p"), counter need to be set to 4 regardless of whether the user used "C-4" as prefix or "C-u". In the former case, arg would be "4", but in the latter case, it would be "(4)", I.e. a list, not a number.

Not sure IIUC

(defun whatarg-p (arg)
  (interactive "p")
  (message "%s" arg))

Called with simply C-u without numeric argument gives me "4"

(4) would be the result with uppercase P

Your simpler representation would not take care of the C-u case. If the counter variable is used where a numeric arg is strictly required, you will get an error. Here, prefix-numeric-value returns "4" when arg is "(4)".

--

Kaushal Modi




reply via email to

[Prev in Thread] Current Thread [Next in Thread]