[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Passing a list of symbols to function argument
From: |
Heime |
Subject: |
Re: Passing a list of symbols to function argument |
Date: |
Fri, 29 Nov 2024 21:16:09 +0000 |
On Saturday, November 30th, 2024 at 8:41 AM, Stephen Berman
<stephen.berman@gmx.net> wrote:
> On Fri, 29 Nov 2024 20:15:04 +0000 Heime heimeborgia@protonmail.com wrote:
>
> > On Saturday, November 30th, 2024 at 7:54 AM, Stephen Berman
> > stephen.berman@gmx.net wrote:
> >
> > > On Fri, 29 Nov 2024 17:34:01 +0000 Heime via Users list for the GNU Emacs
> > > text editor help-gnu-emacs@gnu.org wrote:
> > >
> > > > Why do I get
> > > >
> > > > Wrong type argument: stringp, tabtrail
> > > >
> > > > When using the call
> > > >
> > > > (poalatuk '(72 tabtrail global))
> > > >
> > > > to the function
> > > >
> > > > (defun poalatuk (actm-seqr)
> > > >
> > > > (interactive
> > > > (let* ( (colw (read-number "Line Column: " 72))
> > > > (cseq '("extended" "disable" "tabtrail"))
> > > > (rsel (completing-read "Selector: " cseq nil t "tabtrail"))
> > > > (scope (completing-read "Scope: "
> > > > '("global" "local") nil t "local")) )
> > > >
> > > > ;; Pass a single list as argument
> > > > (list (list colw rsel scope))) )
> > > >
> > > > ;; -------------------------------------------------------------
> > > >
> > > > (message "poalatuk: %S" actm-seqr)
> > > >
> > > > (let* ( (colw (nth 0 actm-seqr)) ;; Extract column width.
> > > > (rsel (intern (nth 1 actm-seqr))) ;; Extract mode selector.
> > >
> > > ^^^^^^^^^^^^^^^^^^^^^^^^^^
> > >
> > > The error happens here. You passed '(72 tabtrail global) as the value
> > > of the argument actm-seqr, so (nth 1 actm-seqr) returns the symbol
> > > `tabtrail'. But` intern' takes a string and returns the symbol (in the
> > > obarray) whose name is given by the string.
> > >
> > > Steve Berman
> >
> > I want the function to accept both symbols and strings. intern must then
> > be applied only when a string is passed. Which undoubtedly needs a
> > conditional
> > check.
> >
> > Perhaps I should also test whether the argument is a symbol or do the if
> > and pcase handle errors (because the commands will be skipped).
> >
> > (let* ((colw (nth 0 actm-seqr))
> > (rsel (if (stringp (nth 1 actm-seqr))
> > (intern (nth 1 actm-seqr))
> > (nth 1 actm-seqr)))
> > (scope (if (stringp (nth 2 actm-seqr))
> > (intern (nth 2 actm-seqr))
> > (nth 2 actm-seqr))))
>
>
> This seems fine; `if' does not do error handling, nor does` pcase' AFAIK
> (but there are several variants and extensions of pcase, and I'm not too
> familiar with them, so maybe some of them do error handling), but
> `condition-case' is the basic error handling form in Elisp. Alternatively,
> since the error only happens in noninteractive calls (since interactive calls
> use` completing-read', which returns strings),
> you could condition on `called-interactively-p'.
>
> Steve Berman
For the interactive call I want to pass the three values so that
actm-seqr will be a list of three objects.
Thus I do
(list (list colw rsel scope))
Would the above be correct?
With only (list colw rsel scope) emacs does complain.
I wonder whether actm-seqr will give me ((72 tabtrail global))
and not (72 tabtrail global).
Have also been looking at the possibility of using
(list (list colw (intern rsel) (intern scope)))
Or would this be considered replication? Because the call
to intern would happen later anyway.
- Passing a list of symbols to function argument, Heime, 2024/11/29
- Re: Passing a list of symbols to function argument, Stephen Berman, 2024/11/29
- Re: Passing a list of symbols to function argument, Heime, 2024/11/29
- Re: Passing a list of symbols to function argument, Stephen Berman, 2024/11/29
- Re: Passing a list of symbols to function argument,
Heime <=
- Re: Passing a list of symbols to function argument, Stephen Berman, 2024/11/29
- Re: Passing a list of symbols to function argument, Heime, 2024/11/29
- Re: Passing a list of symbols to function argument, Stephen Berman, 2024/11/29
- Re: Passing a list of symbols to function argument, Heime, 2024/11/29