* Passing a list of symbols to function argument @ 2024-11-29 17:34 Heime via Users list for the GNU Emacs text editor 2024-11-29 19:54 ` Stephen Berman 0 siblings, 1 reply; 9+ messages in thread From: Heime via Users list for the GNU Emacs text editor @ 2024-11-29 17:34 UTC (permalink / raw) To: Heime via Users list for the GNU Emacs text editor 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. (scope (intern (nth 2 actm-seqr))) ) ;; Extract scope. (require 'whitespace) (if (eq scope 'global) (global-whitespace-mode 0) (whitespace-mode 0)) (pcase rsel ('tabtrail (setq whitespace-line-column (or colw 72)) (setq whitespace-style '(face tabs tab-mark trailing lines-char)) (if (eq scope 'global) (global-whitespace-mode 1) (whitespace-mode 1))) ('extended (setq whitespace-line-column (or colw 72)) (setq whitespace-style '(face tabs tab-mark indentation trailing lines-char space-before-tab space-after-tab)) (if (eq scope 'global) (global-whitespace-mode 1) (whitespace-mode 1)) ) ('disable (if (eq scope 'global) (global-whitespace-mode 0) (whitespace-mode 0)) )) )) I want to pass alist as an argument to the function such as (poalatuk '(72 tabtrail global)) And expecting that actm-seqr would be alist. ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Passing a list of symbols to function argument 2024-11-29 17:34 Passing a list of symbols to function argument Heime via Users list for the GNU Emacs text editor @ 2024-11-29 19:54 ` Stephen Berman 2024-11-29 20:15 ` Heime via Users list for the GNU Emacs text editor 0 siblings, 1 reply; 9+ messages in thread From: Stephen Berman @ 2024-11-29 19:54 UTC (permalink / raw) To: Heime via Users list for the GNU Emacs text editor; +Cc: Heime 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 ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Passing a list of symbols to function argument 2024-11-29 19:54 ` Stephen Berman @ 2024-11-29 20:15 ` Heime via Users list for the GNU Emacs text editor 2024-11-29 20:41 ` Stephen Berman 0 siblings, 1 reply; 9+ messages in thread From: Heime via Users list for the GNU Emacs text editor @ 2024-11-29 20:15 UTC (permalink / raw) To: Stephen Berman; +Cc: Heime via Users list for the GNU Emacs text editor Sent with Proton Mail secure email. 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)))) ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Passing a list of symbols to function argument 2024-11-29 20:15 ` Heime via Users list for the GNU Emacs text editor @ 2024-11-29 20:41 ` Stephen Berman 2024-11-29 21:16 ` Heime via Users list for the GNU Emacs text editor 0 siblings, 1 reply; 9+ messages in thread From: Stephen Berman @ 2024-11-29 20:41 UTC (permalink / raw) To: Heime; +Cc: Heime via Users list for the GNU Emacs text editor On Fri, 29 Nov 2024 20:15:04 +0000 Heime <heimeborgia@protonmail.com> wrote: > Sent with Proton Mail secure email. > > 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 ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Passing a list of symbols to function argument 2024-11-29 20:41 ` Stephen Berman @ 2024-11-29 21:16 ` Heime via Users list for the GNU Emacs text editor 2024-11-29 21:29 ` Stephen Berman 0 siblings, 1 reply; 9+ messages in thread From: Heime via Users list for the GNU Emacs text editor @ 2024-11-29 21:16 UTC (permalink / raw) To: Stephen Berman; +Cc: Heime via Users list for the GNU Emacs text editor 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. ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Passing a list of symbols to function argument 2024-11-29 21:16 ` Heime via Users list for the GNU Emacs text editor @ 2024-11-29 21:29 ` Stephen Berman 2024-11-29 21:41 ` Heime via Users list for the GNU Emacs text editor 0 siblings, 1 reply; 9+ messages in thread From: Stephen Berman @ 2024-11-29 21:29 UTC (permalink / raw) To: Heime; +Cc: Heime via Users list for the GNU Emacs text editor On Fri, 29 Nov 2024 21:16:09 +0000 Heime <heimeborgia@protonmail.com> wrote: > 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? Yes. > With only (list colw rsel scope) emacs does complain. Because that means the interactive call passes three arguments, but your definition of `poalatuk' only specifies one argument parameter. > I wonder whether actm-seqr will give me ((72 tabtrail global)) > and not (72 tabtrail global). I don't know what you mean; actm-seqr is the function parameter, a variable whose value is whatever is passed on calling the function either interactively or noninteractively. > 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. Then it would cause the error you reported in your OP. Steve Berman ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Passing a list of symbols to function argument 2024-11-29 21:29 ` Stephen Berman @ 2024-11-29 21:41 ` Heime via Users list for the GNU Emacs text editor 2024-11-29 21:52 ` Stephen Berman 0 siblings, 1 reply; 9+ messages in thread From: Heime via Users list for the GNU Emacs text editor @ 2024-11-29 21:41 UTC (permalink / raw) To: Stephen Berman; +Cc: Heime via Users list for the GNU Emacs text editor On Saturday, November 30th, 2024 at 9:29 AM, Stephen Berman <stephen.berman@gmx.net> wrote: > > > > 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? > > > Yes. > > > With only (list colw rsel scope) emacs does complain. > > > Because that means the interactive call passes three arguments, but your > definition of `poalatuk' only specifies one argument parameter. > > > I wonder whether actm-seqr will give me ((72 tabtrail global)) > > and not (72 tabtrail global). > > I don't know what you mean; actm-seqr is the function parameter, a > variable whose value is whatever is passed on calling the function > either interactively or noninteractively. For the interactive part, would returning (list (list colw (intern rsel) (intern scope))) pass ((72 tabtrail global)) ; list with single element being a list or (72 tabtrail global) ; list of three entries to actm-seqr? > > 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. > > Then it would cause the error you reported in your OP. (list (list colw (intern rsel) (intern scope))) The above will be for the interactive part, so that the string values would be changed immediately to symbols. And since I now fixed the problem by checking with stringp so intern gets called when calling the function programatically with strings. ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Passing a list of symbols to function argument 2024-11-29 21:41 ` Heime via Users list for the GNU Emacs text editor @ 2024-11-29 21:52 ` Stephen Berman 2024-11-29 22:45 ` Heime via Users list for the GNU Emacs text editor 0 siblings, 1 reply; 9+ messages in thread From: Stephen Berman @ 2024-11-29 21:52 UTC (permalink / raw) To: Heime; +Cc: Heime via Users list for the GNU Emacs text editor On Fri, 29 Nov 2024 21:41:27 +0000 Heime <heimeborgia@protonmail.com> wrote: > On Saturday, November 30th, 2024 at 9:29 AM, Stephen Berman > <stephen.berman@gmx.net> wrote: > >> > > > 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? >> >> >> Yes. >> >> > With only (list colw rsel scope) emacs does complain. >> >> >> Because that means the interactive call passes three arguments, but your >> definition of `poalatuk' only specifies one argument parameter. >> >> > I wonder whether actm-seqr will give me ((72 tabtrail global)) >> > and not (72 tabtrail global). >> >> I don't know what you mean; actm-seqr is the function parameter, a >> variable whose value is whatever is passed on calling the function >> either interactively or noninteractively. > > For the interactive part, would returning > > (list (list colw (intern rsel) (intern scope))) > > pass > > ((72 tabtrail global)) ; list with single element being a list > > or > > (72 tabtrail global) ; list of three entries > > to actm-seqr? The answer is in message displayed when you do `M-x poalatuk' and act appropriately on the prompts, isn't it? >> > 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. >> >> Then it would cause the error you reported in your OP. > > (list (list colw (intern rsel) (intern scope))) > > The above will be for the interactive part, so that the string values > would be changed immediately to symbols. > > And since I now fixed the problem by checking with stringp so intern gets > called when calling the function programatically with strings. Ok. Steve Berman ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Passing a list of symbols to function argument 2024-11-29 21:52 ` Stephen Berman @ 2024-11-29 22:45 ` Heime via Users list for the GNU Emacs text editor 0 siblings, 0 replies; 9+ messages in thread From: Heime via Users list for the GNU Emacs text editor @ 2024-11-29 22:45 UTC (permalink / raw) To: Stephen Berman; +Cc: Heime via Users list for the GNU Emacs text editor > > > > 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? > > > > > > Yes. > > > > > > > With only (list colw rsel scope) emacs does complain. > > > > > > Because that means the interactive call passes three arguments, but your > > > definition of `poalatuk' only specifies one argument parameter. > > > > > > > I wonder whether actm-seqr will give me ((72 tabtrail global)) > > > > and not (72 tabtrail global). > > > > > > I don't know what you mean; actm-seqr is the function parameter, a > > > variable whose value is whatever is passed on calling the function > > > either interactively or noninteractively. > > > > For the interactive part, would returning > > > > (list (list colw (intern rsel) (intern scope))) > > > > pass > > > > ((72 tabtrail global)) ; list with single element being a list > > > > or > > > > (72 tabtrail global) ; list of three entries > > > > to actm-seqr? > > > The answer is in message displayed when you do `M-x poalatuk' and act > appropriately on the prompts, isn't it? With only (list colw rsel scope) rather than (list (list colw rsel scope)) I get Debugger entered--Lisp error: (wrong-number-of-arguments ((t) (actm-seqr) "Visualisation of spaces including tabs and trailin..." poalatuk(72 "tabtrail" "local") > > > > 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. > > > > > > Then it would cause the error you reported in your OP. > > > > (list (list colw (intern rsel) (intern scope))) > > > > The above will be for the interactive part, so that the string values > > would be changed immediately to symbols. > > > > And since I now fixed the problem by checking with stringp so intern gets > > called when calling the function programatically with strings. > > > Ok. > > Steve Berman ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2024-11-29 22:45 UTC | newest] Thread overview: 9+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2024-11-29 17:34 Passing a list of symbols to function argument Heime via Users list for the GNU Emacs text editor 2024-11-29 19:54 ` Stephen Berman 2024-11-29 20:15 ` Heime via Users list for the GNU Emacs text editor 2024-11-29 20:41 ` Stephen Berman 2024-11-29 21:16 ` Heime via Users list for the GNU Emacs text editor 2024-11-29 21:29 ` Stephen Berman 2024-11-29 21:41 ` Heime via Users list for the GNU Emacs text editor 2024-11-29 21:52 ` Stephen Berman 2024-11-29 22:45 ` Heime via Users list for the GNU Emacs text editor
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).