* Function passing flag @ 2022-03-08 12:24 goncholden via Users list for the GNU Emacs text editor 2022-03-08 18:00 ` Emanuel Berg via Users list for the GNU Emacs text editor 0 siblings, 1 reply; 10+ messages in thread From: goncholden via Users list for the GNU Emacs text editor @ 2022-03-08 12:24 UTC (permalink / raw) To: goncholden via Users list for the GNU Emacs text editor I want to use a switch for two pieces of code, but want to use a flag passed through the function argument. How is this customarily achieved ? ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Function passing flag 2022-03-08 12:24 Function passing flag goncholden via Users list for the GNU Emacs text editor @ 2022-03-08 18:00 ` Emanuel Berg via Users list for the GNU Emacs text editor 2022-03-08 19:00 ` goncholden 0 siblings, 1 reply; 10+ messages in thread From: Emanuel Berg via Users list for the GNU Emacs text editor @ 2022-03-08 18:00 UTC (permalink / raw) To: help-gnu-emacs goncholden via Users list for the GNU Emacs text editor wrote: > I want to use a switch for two pieces of code, but want to > use a flag passed through the function argument. How is this > customarily achieved ? What is it that you want to do? -- underground experts united https://dataswamp.org/~incal ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Function passing flag 2022-03-08 18:00 ` Emanuel Berg via Users list for the GNU Emacs text editor @ 2022-03-08 19:00 ` goncholden 2022-03-08 19:14 ` Emanuel Berg via Users list for the GNU Emacs text editor 0 siblings, 1 reply; 10+ messages in thread From: goncholden @ 2022-03-08 19:00 UTC (permalink / raw) To: Emanuel Berg; +Cc: help-gnu-emacs ------- Original Message ------- On Wednesday, March 9th, 2022 at 6:00 AM, Emanuel Berg via Users list for the GNU Emacs text editor <help-gnu-emacs@gnu.org> wrote: > goncholden via Users list for the GNU Emacs text editor wrote: > > > I want to use a switch for two pieces of code, but want to > > > > use a flag passed through the function argument. How is this > > > > customarily achieved ? > > What is it that you want to do? Want to use an if-then conditional, but based on a parameter passed to the function as argument. > -- > > underground experts united > > https://dataswamp.org/~incal ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Function passing flag 2022-03-08 19:00 ` goncholden @ 2022-03-08 19:14 ` Emanuel Berg via Users list for the GNU Emacs text editor 2022-03-08 19:35 ` goncholden 0 siblings, 1 reply; 10+ messages in thread From: Emanuel Berg via Users list for the GNU Emacs text editor @ 2022-03-08 19:14 UTC (permalink / raw) To: help-gnu-emacs goncholden wrote: > Want to use an if-then conditional, but based on a parameter > passed to the function as argument. Sure, do it ... -- underground experts united https://dataswamp.org/~incal ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Function passing flag 2022-03-08 19:14 ` Emanuel Berg via Users list for the GNU Emacs text editor @ 2022-03-08 19:35 ` goncholden 2022-03-08 20:09 ` Corwin Brust 0 siblings, 1 reply; 10+ messages in thread From: goncholden @ 2022-03-08 19:35 UTC (permalink / raw) To: Emanuel Berg; +Cc: help-gnu-emacs ------- Original Message ------- On Wednesday, March 9th, 2022 at 7:14 AM, Emanuel Berg via Users list for the GNU Emacs text editor <help-gnu-emacs@gnu.org> wrote: > goncholden wrote: > > > Want to use an if-then conditional, but based on a parameter > > > > passed to the function as argument. > > Sure, do it ... How does one do it with an optional argument? Where can I read about this? > -- > > underground experts united > > https://dataswamp.org/~incal ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Function passing flag 2022-03-08 19:35 ` goncholden @ 2022-03-08 20:09 ` Corwin Brust 2022-03-08 20:15 ` Corwin Brust 2022-03-08 20:28 ` goncholden 0 siblings, 2 replies; 10+ messages in thread From: Corwin Brust @ 2022-03-08 20:09 UTC (permalink / raw) To: goncholden; +Cc: Help Gnu Emacs mailing list, Emanuel Berg On Tue, Mar 8, 2022 at 1:36 PM goncholden <goncholden@protonmail.com> wrote: > > How does one do it with an optional argument? Where can I read about this? > A function with an optional argument ARG might look like this: (defun my:own-fun (&optional arg) "Do something. When ARG is non-nil do it a lot." (if arg ;; when ARG is true we run this (do-stuff) ;; else we run this (do-more-or-different-stuff))) Note, if you are defining a command (a function you will bind to a key or otherwise use interactively), you will want to to use (interactive), usually placed at the start of the function definition, so just after the docstring. ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Function passing flag 2022-03-08 20:09 ` Corwin Brust @ 2022-03-08 20:15 ` Corwin Brust 2022-03-08 20:28 ` goncholden 1 sibling, 0 replies; 10+ messages in thread From: Corwin Brust @ 2022-03-08 20:15 UTC (permalink / raw) To: goncholden; +Cc: Help Gnu Emacs mailing list, Emanuel Berg Apologies, I answered only half of your question, I think. As to where you can read about this: I recommend reading the entire Functions section of the elisp manual however you can get to the specific section that introduces optional arguments via: M-: (info "(elisp)Defining Functions") RET On Tue, Mar 8, 2022 at 2:09 PM Corwin Brust <corwin@bru.st> wrote: > > On Tue, Mar 8, 2022 at 1:36 PM goncholden <goncholden@protonmail.com> wrote: > > > > How does one do it with an optional argument? Where can I read about this? > > > > A function with an optional argument ARG might look like this: > > (defun my:own-fun (&optional arg) > "Do something. When ARG is non-nil do it a lot." > (if arg > ;; when ARG is true we run this > (do-stuff) > ;; else we run this > (do-more-or-different-stuff))) > > Note, if you are defining a command (a function you will bind to a key > or otherwise use interactively), you will want to to use > (interactive), usually placed at the start of the function definition, > so just after the docstring. ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Function passing flag 2022-03-08 20:09 ` Corwin Brust 2022-03-08 20:15 ` Corwin Brust @ 2022-03-08 20:28 ` goncholden 2022-03-08 20:42 ` Corwin Brust 1 sibling, 1 reply; 10+ messages in thread From: goncholden @ 2022-03-08 20:28 UTC (permalink / raw) To: Corwin Brust; +Cc: Help Gnu Emacs mailing list, Emanuel Berg ------- Original Message ------- On Tuesday, March 8th, 2022 at 8:09 PM, Corwin Brust <corwin@bru.st> wrote: > On Tue, Mar 8, 2022 at 1:36 PM goncholden goncholden@protonmail.com wrote: > > > How does one do it with an optional argument? Where can I read about this? > > A function with an optional argument ARG might look like this: > > (defun my:own-fun (&optional arg) > "Do something. When ARG is non-nil do it a lot." > (if arg > ;; when ARG is true we run this > (do-stuff) > ;; else we run this > (do-more-or-different-stuff))) Would like to use arg as a switch so I can enable or disable some emacs modes (customarily using value of 1 to enable, and -1 to disable). If no arg is supplied, I would like to enable the modes. How would I define the parameter outside the function, and then pass it through. I might require a buffer local variable. ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Function passing flag 2022-03-08 20:28 ` goncholden @ 2022-03-08 20:42 ` Corwin Brust 2022-03-08 20:55 ` goncholden 0 siblings, 1 reply; 10+ messages in thread From: Corwin Brust @ 2022-03-08 20:42 UTC (permalink / raw) To: goncholden; +Cc: Help Gnu Emacs mailing list, Emanuel Berg On Tue, Mar 8, 2022 at 2:28 PM goncholden <goncholden@protonmail.com> wrote: > > Would like to use arg as a switch so I can enable or disable some emacs modes (customarily using > value of 1 to enable, and -1 to disable). If no arg is supplied, I would like to enable the modes. > > How would I define the parameter outside the function, and then pass it through. I might require > a buffer local variable. > One typical way of doing this would be to use the "universal argument", also known as a "prefix argument": (info "(elisp)Prefix Command Arguments") Here's an example that would create an interactive command that enables tool-bars and scroll-bars or, with a prefix argument, disables them. (defun my:enable-bars (&optional arg) "Enable `tool-bar-mode' and `scroll-bar-mode'. When ARG is non-nill, disable them." (interactive "P") (if arg (progn (tool-bar-mode -1) (scroll-bar-mode -1)) (tool-bar-mode 1) (scroll-bar-mode 1))) Once you evaluate this you can ensure both tool-bar and scroll bar modes are active with: M-x my:enable-bar RET Or, to ensure both tool-bar and scroll-bar modes are disabled: C-u M-x my:enable-bar RET ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Function passing flag 2022-03-08 20:42 ` Corwin Brust @ 2022-03-08 20:55 ` goncholden 0 siblings, 0 replies; 10+ messages in thread From: goncholden @ 2022-03-08 20:55 UTC (permalink / raw) To: Corwin Brust; +Cc: Help Gnu Emacs mailing list, Emanuel Berg ------- Original Message ------- On Tuesday, March 8th, 2022 at 8:42 PM, Corwin Brust <corwin@bru.st> wrote: > On Tue, Mar 8, 2022 at 2:28 PM goncholden goncholden@protonmail.com wrote: > > Would like to use arg as a switch so I can enable or disable some emacs modes (customarily using > > value of 1 to enable, and -1 to disable). If no arg is supplied, I would like to enable the modes. > > How would I define the parameter outside the function, and then pass it through. I might require > > a buffer local variable. > One typical way of doing this would be to use the "universal > argument", also known as a "prefix argument": > (info "(elisp)Prefix Command Arguments") > Here's an example that would create an interactive command that > enables tool-bars and scroll-bars or, with a prefix argument, disables > them. > (defun my:enable-bars (&optional arg) > "Enable `tool-bar-mode' and` scroll-bar-mode'. > When ARG is non-nill, disable them." > (interactive "P") > (if arg > (progn (tool-bar-mode -1) > (scroll-bar-mode -1)) > (tool-bar-mode 1) > (scroll-bar-mode 1))) > > Once you evaluate this you can ensure both tool-bar and scroll bar > modes are active with: > M-x my:enable-bar RET > > Or, to ensure both tool-bar and scroll-bar modes are disabled: > C-u M-x my:enable-bar RET Have done like this (defun romona (&optional action) "Enables or disables Emacs Bars" ;; If action in nil, set action to enable the bar modes (unless action (setq action 1)) (if action (progn (tool-bar-mode 1) (scroll-bar-mode 1)) (progn (tool-bar-mode -1) (scroll-bar-mode -1)) )) Could just need a defvar. ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2022-03-08 20:55 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2022-03-08 12:24 Function passing flag goncholden via Users list for the GNU Emacs text editor 2022-03-08 18:00 ` Emanuel Berg via Users list for the GNU Emacs text editor 2022-03-08 19:00 ` goncholden 2022-03-08 19:14 ` Emanuel Berg via Users list for the GNU Emacs text editor 2022-03-08 19:35 ` goncholden 2022-03-08 20:09 ` Corwin Brust 2022-03-08 20:15 ` Corwin Brust 2022-03-08 20:28 ` goncholden 2022-03-08 20:42 ` Corwin Brust 2022-03-08 20:55 ` goncholden
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).