* Generality of defvar
@ 2022-07-26 20:35 carlmarcos--- via Users list for the GNU Emacs text editor
2022-07-26 23:01 ` Philip Kaludercic
` (2 more replies)
0 siblings, 3 replies; 27+ messages in thread
From: carlmarcos--- via Users list for the GNU Emacs text editor @ 2022-07-26 20:35 UTC (permalink / raw)
To: Help Gnu Emacs
Have been looking into defvar and noticed the generality of its use
(defvar aname t)
(defvar bname nil)
(defvar cname 1)
(defvar dname "text")
Then I can do
(when aname (setq debug-on-error t))
(when bname (setq debug-on-error nil))
Is this correct?
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: Generality of defvar
2022-07-26 20:35 Generality of defvar carlmarcos--- via Users list for the GNU Emacs text editor
@ 2022-07-26 23:01 ` Philip Kaludercic
[not found] ` <87r127h40s.fsf@posteo.net-N7wjq17--3-2>
2022-07-26 23:16 ` Emanuel Berg
2 siblings, 0 replies; 27+ messages in thread
From: Philip Kaludercic @ 2022-07-26 23:01 UTC (permalink / raw)
To: carlmarcos--- via Users list for the GNU Emacs text editor; +Cc: carlmarcos
carlmarcos--- via Users list for the GNU Emacs text editor
<help-gnu-emacs@gnu.org> writes:
> Have been looking into defvar and noticed the generality of its use
>
> (defvar aname t)
> (defvar bname nil)
> (defvar cname 1)
> (defvar dname "text")
>
> Then I can do
>
> (when aname (setq debug-on-error t))
> (when bname (setq debug-on-error nil))
>
> Is this correct?
You can /do/ it, but what do you /want/ to archive?
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: Generality of defvar
[not found] ` <87r127h40s.fsf@posteo.net-N7wjq17--3-2>
@ 2022-07-26 23:10 ` carlmarcos--- via Users list for the GNU Emacs text editor
2022-07-27 7:29 ` Thibaut Verron
[not found] ` <CAFsi02SEVCEjGNoQ6vPZvMw7d5F39JZAAPCR5VOUnzQDUERkQA@mail.gmail.com-N7yZ2U2----2>
0 siblings, 2 replies; 27+ messages in thread
From: carlmarcos--- via Users list for the GNU Emacs text editor @ 2022-07-26 23:10 UTC (permalink / raw)
To: Philip Kaludercic
Cc: carlmarcos--- via Users list for the GNU Emacs text editor
Jul 26, 2022, 23:01 by philipk@posteo.net:
> carlmarcos--- via Users list for the GNU Emacs text editor
> <help-gnu-emacs@gnu.org> writes:
>
>> Have been looking into defvar and noticed the generality of its use
>>
>> (defvar aname t)
>> (defvar bname nil)
>> (defvar cname 1)
>> (defvar dname "text")
>>
>> Then I can do
>>
>> (when aname (setq debug-on-error t))
>> (when bname (setq debug-on-error nil))
>>
>> Is this correct?
>>
>
> You can /do/ it, but what do you /want/ to archive?
>
Want to use a defvar to enable or disable some functionality using `when', such as enabling error diagnostics with the command
(when myopt (setq debug-on-error t))
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: Generality of defvar
2022-07-26 20:35 Generality of defvar carlmarcos--- via Users list for the GNU Emacs text editor
2022-07-26 23:01 ` Philip Kaludercic
[not found] ` <87r127h40s.fsf@posteo.net-N7wjq17--3-2>
@ 2022-07-26 23:16 ` Emanuel Berg
2022-07-26 23:23 ` Emanuel Berg
` (2 more replies)
2 siblings, 3 replies; 27+ messages in thread
From: Emanuel Berg @ 2022-07-26 23:16 UTC (permalink / raw)
To: help-gnu-emacs
carlmarcos--- via Users list for the GNU Emacs text editor wrote:
> Have been looking into defvar and noticed the generality of
> its use
>
> (defvar aname t)
> (defvar bname nil)
> (defvar cname 1)
> (defvar dname "text")
For practical reasons it can be better to do
(defvar var-name)
(setq var-name 'var-value)
instead because if you do something with that and want to
reset it, it's enough to evaluate the second line, whereas if
you just have the first line you tend to evaluate that one and
if/because the variable is already set at that point then
nothing will happen ...
--
underground experts united
https://dataswamp.org/~incal
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: Generality of defvar
2022-07-26 23:16 ` Emanuel Berg
@ 2022-07-26 23:23 ` Emanuel Berg
2022-07-26 23:36 ` carlmarcos--- via Users list for the GNU Emacs text editor
2022-07-27 4:57 ` Yuri Khan
2 siblings, 0 replies; 27+ messages in thread
From: Emanuel Berg @ 2022-07-26 23:23 UTC (permalink / raw)
To: help-gnu-emacs
>> (defvar aname t) [...]
>
> For practical reasons it can be better to do
>
> (defvar var-name)
> (setq var-name 'var-value)
Here `defvar' only tells the byte-compiler that you intend to
use a variable with that name. It doesn't create such
a variable.
--
underground experts united
https://dataswamp.org/~incal
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: Generality of defvar
2022-07-26 23:16 ` Emanuel Berg
2022-07-26 23:23 ` Emanuel Berg
@ 2022-07-26 23:36 ` carlmarcos--- via Users list for the GNU Emacs text editor
2022-07-27 4:57 ` Yuri Khan
2 siblings, 0 replies; 27+ messages in thread
From: carlmarcos--- via Users list for the GNU Emacs text editor @ 2022-07-26 23:36 UTC (permalink / raw)
To: Emanuel Berg; +Cc: help-gnu-emacs
Jul 26, 2022, 23:16 by incal@dataswamp.org:
> carlmarcos--- via Users list for the GNU Emacs text editor wrote:
>
>> Have been looking into defvar and noticed the generality of
>> its use
>>
>> (defvar aname t)
>> (defvar bname nil)
>> (defvar cname 1)
>> (defvar dname "text")
>>
>
> For practical reasons it can be better to do
>
> (defvar var-name)
> (setq var-name 'var-value)
>
> instead because if you do something with that and want to
> reset it, it's enough to evaluate the second line, whereas if
> you just have the first line you tend to evaluate that one and
> if/because the variable is already set at that point then
> nothing will happen ...
>
I cannot follow what you are trying to say.
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: Generality of defvar
2022-07-26 23:16 ` Emanuel Berg
2022-07-26 23:23 ` Emanuel Berg
2022-07-26 23:36 ` carlmarcos--- via Users list for the GNU Emacs text editor
@ 2022-07-27 4:57 ` Yuri Khan
2022-07-27 6:59 ` carlmarcos--- via Users list for the GNU Emacs text editor
2022-07-29 15:56 ` Emanuel Berg
2 siblings, 2 replies; 27+ messages in thread
From: Yuri Khan @ 2022-07-27 4:57 UTC (permalink / raw)
To: help-gnu-emacs
On Wed, 27 Jul 2022 at 06:17, Emanuel Berg <incal@dataswamp.org> wrote:
> For practical reasons it can be better to do
>
> (defvar var-name)
> (setq var-name 'var-value)
>
> instead because if you do something with that and want to
> reset it, it's enough to evaluate the second line, whereas if
> you just have the first line you tend to evaluate that one and
> if/because the variable is already set at that point then
> nothing will happen ...
Yes, but you can press C-M-x on a (defvar var-name 'var-value) and it
will get re-set to the new value even if the variable is already
defined.
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: Generality of defvar
2022-07-27 4:57 ` Yuri Khan
@ 2022-07-27 6:59 ` carlmarcos--- via Users list for the GNU Emacs text editor
2022-07-29 15:56 ` Emanuel Berg
1 sibling, 0 replies; 27+ messages in thread
From: carlmarcos--- via Users list for the GNU Emacs text editor @ 2022-07-27 6:59 UTC (permalink / raw)
To: Yuri Khan; +Cc: help-gnu-emacs
Jul 27, 2022, 04:57 by yuri.v.khan@gmail.com:
> On Wed, 27 Jul 2022 at 06:17, Emanuel Berg <incal@dataswamp.org> wrote:
>
>> For practical reasons it can be better to do
>>
>> (defvar var-name)
>> (setq var-name 'var-value)
>>
>> instead because if you do something with that and want to
>> reset it, it's enough to evaluate the second line, whereas if
>> you just have the first line you tend to evaluate that one and
>> if/because the variable is already set at that point then
>> nothing will happen ...
>>
>
> Yes, but you can press C-M-x on a (defvar var-name 'var-value) and it
> will get re-set to the new value even if the variable is already
> defined.
>
So I can keep it (defvar var-name t) or (defvar var-name nil)
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: Generality of defvar
2022-07-26 23:10 ` carlmarcos--- via Users list for the GNU Emacs text editor
@ 2022-07-27 7:29 ` Thibaut Verron
[not found] ` <CAFsi02SEVCEjGNoQ6vPZvMw7d5F39JZAAPCR5VOUnzQDUERkQA@mail.gmail.com-N7yZ2U2----2>
1 sibling, 0 replies; 27+ messages in thread
From: Thibaut Verron @ 2022-07-27 7:29 UTC (permalink / raw)
To: carlmarcos
Cc: Philip Kaludercic,
carlmarcos--- via Users list for the GNU Emacs text editor
Le mer. 27 juil. 2022 à 01:11, carlmarcos--- via Users list for the GNU
Emacs text editor <help-gnu-emacs@gnu.org> a écrit :
> Jul 26, 2022, 23:01 by philipk@posteo.net:
>
> > carlmarcos--- via Users list for the GNU Emacs text editor
> > <help-gnu-emacs@gnu.org> writes:
> >
> >> Have been looking into defvar and noticed the generality of its use
> >>
> >> (defvar aname t)
> >> (defvar bname nil)
> >> (defvar cname 1)
> >> (defvar dname "text")
> >>
> >> Then I can do
> >>
> >> (when aname (setq debug-on-error t))
> >> (when bname (setq debug-on-error nil))
> >>
> >> Is this correct?
> >>
> >
> > You can /do/ it, but what do you /want/ to archive?
> >
> Want to use a defvar to enable or disable some functionality using `when',
> such as enabling error diagnostics with the command
>
> (when myopt (setq debug-on-error t))
>
In principle yes, but for this example there already is a variable for that
purpose, debug-on-error.
So you might as well just use it as your control variable, and use
conditionals like (when debug-on-error ...) or (unless debug-on-error ...)
if you want to do more things.
Also, those lines:
(when aname (setq debug-on-error t))
(when bname (setq debug-on-error nil))
are equivalent to
(setq debug-on-error (and aname (not bname)))
I don't really see the point of having two variables hold opposite values.
Wouldn't
(if aname
(setq debug-on-error t)
(setq debug-on-error nil))
or equivalently
(setq debug-on-error aname)
be more what you want?
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: Generality of defvar
[not found] ` <CAFsi02SEVCEjGNoQ6vPZvMw7d5F39JZAAPCR5VOUnzQDUERkQA@mail.gmail.com-N7yZ2U2----2>
@ 2022-07-27 12:18 ` carlmarcos--- via Users list for the GNU Emacs text editor
2022-07-27 12:34 ` Emanuel Berg
0 siblings, 1 reply; 27+ messages in thread
From: carlmarcos--- via Users list for the GNU Emacs text editor @ 2022-07-27 12:18 UTC (permalink / raw)
To: Thibaut Verron
Cc: Philip Kaludercic,
carlmarcos--- via Users list for the GNU Emacs text editor
Jul 27, 2022, 07:29 by thibaut.verron@gmail.com:
> Le mer. 27 juil. 2022 à 01:11, carlmarcos--- via Users list for the GNU
> Emacs text editor <help-gnu-emacs@gnu.org> a écrit :
>
>> Jul 26, 2022, 23:01 by philipk@posteo.net:
>>
>> > carlmarcos--- via Users list for the GNU Emacs text editor
>> > <help-gnu-emacs@gnu.org> writes:
>> >
>> >> Have been looking into defvar and noticed the generality of its use
>> >>
>> >> (defvar aname t)
>> >> (defvar bname nil)
>> >> (defvar cname 1)
>> >> (defvar dname "text")
>> >>
>> >> Then I can do
>> >>
>> >> (when aname (setq debug-on-error t))
>> >> (when bname (setq debug-on-error nil))
>> >>
>> >> Is this correct?
>> >>
>> >
>> > You can /do/ it, but what do you /want/ to archive?
>> >
>> Want to use a defvar to enable or disable some functionality using `when',
>> such as enabling error diagnostics with the command
>>
>> (when myopt (setq debug-on-error t))
>>
>
> In principle yes, but for this example there already is a variable for that
> purpose, debug-on-error.
> So you might as well just use it as your control variable, and use
> conditionals like (when debug-on-error ...) or (unless debug-on-error ...)
> if you want to do more things.
>
> Also, those lines:
>
> (when aname (setq debug-on-error t))
> (when bname (setq debug-on-error nil))
>
> are equivalent to
>
> (setq debug-on-error (and aname (not bname)))
>
> I don't really see the point of having two variables hold opposite values.
> Wouldn't
>
> (if aname
> (setq debug-on-error t)
> (setq debug-on-error nil))
>
> or equivalently
>
> (setq debug-on-error aname)
>
> be more what you want?
>
Thank you very much for your elaboration.
This is what I got right now
(defvar error-diagnostics t
"Enable error diagnostics if non-nil.")
(defun enable-error-diagnostics ()
"Enable error diagnostics with backtrace buffer.
One can exit the debugger with the q command."
(setq debug-on-error t)
(setq debug-ignored-errors t))
(when error-diagnostics (enable-error-diagnostics))
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: Generality of defvar
2022-07-27 12:18 ` carlmarcos--- via Users list for the GNU Emacs text editor
@ 2022-07-27 12:34 ` Emanuel Berg
2022-07-27 12:52 ` carlmarcos--- via Users list for the GNU Emacs text editor
0 siblings, 1 reply; 27+ messages in thread
From: Emanuel Berg @ 2022-07-27 12:34 UTC (permalink / raw)
To: help-gnu-emacs
carlmarcos--- via Users list for the GNU Emacs text editor wrote:
> (defun enable-error-diagnostics ()
> "Enable error diagnostics with backtrace buffer.
> One can exit the debugger with the q command."
You can refer to keys in docstrings like this:
\\[forward-word]
That way, it isn't hardcoded so if later changed/configured
it'll still show the right key.
--
underground experts united
https://dataswamp.org/~incal
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: Generality of defvar
2022-07-27 12:34 ` Emanuel Berg
@ 2022-07-27 12:52 ` carlmarcos--- via Users list for the GNU Emacs text editor
2022-07-27 13:21 ` Thibaut Verron
0 siblings, 1 reply; 27+ messages in thread
From: carlmarcos--- via Users list for the GNU Emacs text editor @ 2022-07-27 12:52 UTC (permalink / raw)
To: Emanuel Berg; +Cc: help-gnu-emacs
--
Sent with Tutanota, enjoy secure & ad-free emails.
Jul 27, 2022, 12:34 by incal@dataswamp.org:
> carlmarcos--- via Users list for the GNU Emacs text editor wrote:
>
>> (defun enable-error-diagnostics ()
>> "Enable error diagnostics with backtrace buffer.
>> One can exit the debugger with the q command."
>>
>
> You can refer to keys in docstrings like this:
>
> \\[forward-word]
>
> That way, it isn't hardcoded so if later changed/configured
> it'll still show the right key.
>
How can I figure out what key to use in the docstring for exiting the backtrace buffer?
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: Generality of defvar
2022-07-27 12:52 ` carlmarcos--- via Users list for the GNU Emacs text editor
@ 2022-07-27 13:21 ` Thibaut Verron
2022-07-27 13:24 ` carlmarcos--- via Users list for the GNU Emacs text editor
0 siblings, 1 reply; 27+ messages in thread
From: Thibaut Verron @ 2022-07-27 13:21 UTC (permalink / raw)
To: carlmarcos; +Cc: Emanuel Berg, help-gnu-emacs
Le mer. 27 juil. 2022 à 14:52, carlmarcos--- via Users list for the GNU
Emacs text editor <help-gnu-emacs@gnu.org> a écrit :
>
>
> --
> Sent with Tutanota, enjoy secure & ad-free emails.
>
>
>
> Jul 27, 2022, 12:34 by incal@dataswamp.org:
>
> > carlmarcos--- via Users list for the GNU Emacs text editor wrote:
> >
> >> (defun enable-error-diagnostics ()
> >> "Enable error diagnostics with backtrace buffer.
> >> One can exit the debugger with the q command."
> >>
> >
> > You can refer to keys in docstrings like this:
> >
> > \\[forward-word]
> >
> > That way, it isn't hardcoded so if later changed/configured
> > it'll still show the right key.
> >
> How can I figure out what key to use in the docstring for exiting the
> backtrace buffer?
>
The function bound to 'q' is quit-window. But since this function doesn't
have a global binding, you need to tell the docstring to use the
appropriate keymap to look the binding up.
Something like
"Enable error diagnostics with backtrace buffer.
\\<backtrace-mode-map> (note: this is the part telling emacs where to look
for the key)
One can exit the debugger with the `quit-window' command (bound to
\\[quit-window])."
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: Generality of defvar
2022-07-27 13:21 ` Thibaut Verron
@ 2022-07-27 13:24 ` carlmarcos--- via Users list for the GNU Emacs text editor
2022-07-27 13:47 ` Thibaut Verron
0 siblings, 1 reply; 27+ messages in thread
From: carlmarcos--- via Users list for the GNU Emacs text editor @ 2022-07-27 13:24 UTC (permalink / raw)
To: Thibaut Verron; +Cc: Emanuel Berg, help-gnu-emacs
Jul 27, 2022, 13:21 by thibaut.verron@gmail.com:
> Le mer. 27 juil. 2022 à 14:52, carlmarcos--- via Users list for the GNU Emacs text editor <> help-gnu-emacs@gnu.org> > a écrit :
>
>>
>>
>> Jul 27, 2022, 12:34 by >> incal@dataswamp.org>> :
>>
>> > carlmarcos--- via Users list for the GNU Emacs text editor wrote:
>> >
>> >> (defun enable-error-diagnostics ()
>> >> "Enable error diagnostics with backtrace buffer.
>> >> One can exit the debugger with the q command."
>> >>
>> >
>> > You can refer to keys in docstrings like this:
>> >
>> > \\[forward-word]
>> >
>> > That way, it isn't hardcoded so if later changed/configured
>> > it'll still show the right key.
>> >
>> How can I figure out what key to use in the docstring for exiting the backtrace buffer?
>>
>
> The function bound to 'q' is quit-window. But since this function doesn't have a global binding, you need to tell the docstring to use the appropriate keymap to look the binding up.
>
> Something like
>
> "Enable error diagnostics with backtrace buffer.
>
> \\<backtrace-mode-map> (note: this is the part telling emacs where to look for the key)
> One can exit the debugger with the `quit-window' command (bound to \\[quit-window])."
>
>
Although quit-window is bound to q, the command \\[quit-window] just inserts
M-x quit-window, rather than q.
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: Generality of defvar
2022-07-27 13:24 ` carlmarcos--- via Users list for the GNU Emacs text editor
@ 2022-07-27 13:47 ` Thibaut Verron
2022-07-27 16:29 ` Christopher Dimech
0 siblings, 1 reply; 27+ messages in thread
From: Thibaut Verron @ 2022-07-27 13:47 UTC (permalink / raw)
To: carlmarcos; +Cc: Emanuel Berg, help-gnu-emacs
Le mer. 27 juil. 2022 à 15:24, <carlmarcos@tutanota.com> a écrit :
>
> Jul 27, 2022, 13:21 by thibaut.verron@gmail.com:
>
> > Le mer. 27 juil. 2022 à 14:52, carlmarcos--- via Users list for the GNU
> Emacs text editor <> help-gnu-emacs@gnu.org> > a écrit :
> >
> >>
> >>
> >> Jul 27, 2022, 12:34 by >> incal@dataswamp.org>> :
> >>
> >> > carlmarcos--- via Users list for the GNU Emacs text editor wrote:
> >> >
> >> >> (defun enable-error-diagnostics ()
> >> >> "Enable error diagnostics with backtrace buffer.
> >> >> One can exit the debugger with the q command."
> >> >>
> >> >
> >> > You can refer to keys in docstrings like this:
> >> >
> >> > \\[forward-word]
> >> >
> >> > That way, it isn't hardcoded so if later changed/configured
> >> > it'll still show the right key.
> >> >
> >> How can I figure out what key to use in the docstring for exiting the
> backtrace buffer?
> >>
> >
> > The function bound to 'q' is quit-window. But since this function
> doesn't have a global binding, you need to tell the docstring to use the
> appropriate keymap to look the binding up.
> >
> > Something like
> >
> > "Enable error diagnostics with backtrace buffer.
> >
> > \\<backtrace-mode-map> (note: this is the part telling emacs where to
> look for the key)
> > One can exit the debugger with the `quit-window' command (bound to
> \\[quit-window])."
> >
> >
> Although quit-window is bound to q, the command \\[quit-window] just
> inserts
> M-x quit-window, rather than q.
>
Yes, that's precisely because quit-window doesn't have a global binding.
You need to add \\<backtrace-mode-map> somewhere in the docstring to tell
emacs to show bindings for the backtrace buffers, rather than global
bindings.
Best wishes,
Thibaut
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: Generality of defvar
2022-07-27 13:47 ` Thibaut Verron
@ 2022-07-27 16:29 ` Christopher Dimech
2022-07-27 16:39 ` Thibaut Verron
0 siblings, 1 reply; 27+ messages in thread
From: Christopher Dimech @ 2022-07-27 16:29 UTC (permalink / raw)
To: thibaut.verron; +Cc: carlmarcos, Emanuel Berg, help-gnu-emacs
> Sent: Thursday, July 28, 2022 at 1:47 AM
> From: "Thibaut Verron" <thibaut.verron@gmail.com>
> To: carlmarcos@tutanota.com
> Cc: "Emanuel Berg" <incal@dataswamp.org>, "help-gnu-emacs" <help-gnu-emacs@gnu.org>
> Subject: Re: Generality of defvar
>
> Le mer. 27 juil. 2022 à 15:24, <carlmarcos@tutanota.com> a écrit :
>
> >
> > Jul 27, 2022, 13:21 by thibaut.verron@gmail.com:
> >
> > > Le mer. 27 juil. 2022 à 14:52, carlmarcos--- via Users list for the GNU
> > Emacs text editor <> help-gnu-emacs@gnu.org> > a écrit :
> > >
> > >>
> > >>
> > >> Jul 27, 2022, 12:34 by >> incal@dataswamp.org>> :
> > >>
> > >> > carlmarcos--- via Users list for the GNU Emacs text editor wrote:
> > >> >
> > >> >> (defun enable-error-diagnostics ()
> > >> >> "Enable error diagnostics with backtrace buffer.
> > >> >> One can exit the debugger with the q command."
> > >> >>
> > >> >
> > >> > You can refer to keys in docstrings like this:
> > >> >
> > >> > \\[forward-word]
> > >> >
> > >> > That way, it isn't hardcoded so if later changed/configured
> > >> > it'll still show the right key.
> > >> >
> > >> How can I figure out what key to use in the docstring for exiting the
> > backtrace buffer?
> > >>
> > >
> > > The function bound to 'q' is quit-window. But since this function
> > doesn't have a global binding, you need to tell the docstring to use the
> > appropriate keymap to look the binding up.
> > >
> > > Something like
> > >
> > > "Enable error diagnostics with backtrace buffer.
> > >
> > > \\<backtrace-mode-map> (note: this is the part telling emacs where to
> > look for the key)
> > > One can exit the debugger with the `quit-window' command (bound to
> > \\[quit-window])."
> > >
> > >
> > Although quit-window is bound to q, the command \\[quit-window] just
> > inserts
> > M-x quit-window, rather than q.
> >
>
> Yes, that's precisely because quit-window doesn't have a global binding.
> You need to add \\<backtrace-mode-map> somewhere in the docstring to tell
> emacs to show bindings for the backtrace buffers, rather than global
> bindings.
>
> Best wishes,
> Thibaut
Sounds good advice, but the result could be
Uses keymap ‘backtrace-mode-map’, which is not currently defined.
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: Generality of defvar
2022-07-27 16:29 ` Christopher Dimech
@ 2022-07-27 16:39 ` Thibaut Verron
2022-07-28 6:42 ` Christopher Dimech
0 siblings, 1 reply; 27+ messages in thread
From: Thibaut Verron @ 2022-07-27 16:39 UTC (permalink / raw)
To: Christopher Dimech; +Cc: carlmarcos, Emanuel Berg, help-gnu-emacs
Le mer. 27 juil. 2022 à 18:29, Christopher Dimech <dimech@gmx.com> a écrit :
>
>
> > Sent: Thursday, July 28, 2022 at 1:47 AM
> > From: "Thibaut Verron" <thibaut.verron@gmail.com>
> > To: carlmarcos@tutanota.com
> > Cc: "Emanuel Berg" <incal@dataswamp.org>, "help-gnu-emacs" <
> help-gnu-emacs@gnu.org>
> > Subject: Re: Generality of defvar
> >
> > Le mer. 27 juil. 2022 à 15:24, <carlmarcos@tutanota.com> a écrit :
> >
> > >
> > > Jul 27, 2022, 13:21 by thibaut.verron@gmail.com:
> > >
> > > > Le mer. 27 juil. 2022 à 14:52, carlmarcos--- via Users list for the
> GNU
> > > Emacs text editor <> help-gnu-emacs@gnu.org> > a écrit :
> > > >
> > > >>
> > > >>
> > > >> Jul 27, 2022, 12:34 by >> incal@dataswamp.org>> :
> > > >>
> > > >> > carlmarcos--- via Users list for the GNU Emacs text editor wrote:
> > > >> >
> > > >> >> (defun enable-error-diagnostics ()
> > > >> >> "Enable error diagnostics with backtrace buffer.
> > > >> >> One can exit the debugger with the q command."
> > > >> >>
> > > >> >
> > > >> > You can refer to keys in docstrings like this:
> > > >> >
> > > >> > \\[forward-word]
> > > >> >
> > > >> > That way, it isn't hardcoded so if later changed/configured
> > > >> > it'll still show the right key.
> > > >> >
> > > >> How can I figure out what key to use in the docstring for exiting
> the
> > > backtrace buffer?
> > > >>
> > > >
> > > > The function bound to 'q' is quit-window. But since this function
> > > doesn't have a global binding, you need to tell the docstring to use
> the
> > > appropriate keymap to look the binding up.
> > > >
> > > > Something like
> > > >
> > > > "Enable error diagnostics with backtrace buffer.
> > > >
> > > > \\<backtrace-mode-map> (note: this is the part telling emacs where to
> > > look for the key)
> > > > One can exit the debugger with the `quit-window' command (bound to
> > > \\[quit-window])."
> > > >
> > > >
> > > Although quit-window is bound to q, the command \\[quit-window] just
> > > inserts
> > > M-x quit-window, rather than q.
> > >
> >
> > Yes, that's precisely because quit-window doesn't have a global binding.
> > You need to add \\<backtrace-mode-map> somewhere in the docstring to tell
> > emacs to show bindings for the backtrace buffers, rather than global
> > bindings.
> >
> > Best wishes,
> > Thibaut
>
> Sounds good advice, but the result could be
>
> Uses keymap ‘backtrace-mode-map’, which is not currently defined.
>
My bad, it should have been debugger-mode-map.
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: Generality of defvar
2022-07-27 16:39 ` Thibaut Verron
@ 2022-07-28 6:42 ` Christopher Dimech
2022-07-28 7:06 ` Thibaut Verron
0 siblings, 1 reply; 27+ messages in thread
From: Christopher Dimech @ 2022-07-28 6:42 UTC (permalink / raw)
To: thibaut.verron; +Cc: carlmarcos, Emanuel Berg, help-gnu-emacs
Sent: Thursday, July 28, 2022 at 4:39 AM
From: "Thibaut Verron" <thibaut.verron@gmail.com>
To: "Christopher Dimech" <dimech@gmx.com>
Cc: carlmarcos@tutanota.com, "Emanuel Berg" <incal@dataswamp.org>,
"help-gnu-emacs" <help-gnu-emacs@gnu.org>
Subject: Re: Generality of defvar
Le mer. 27 juil. 2022 à 18:29, Christopher Dimech <[1]dimech@gmx.com> a
écrit :
> Sent: Thursday, July 28, 2022 at 1:47 AM
> From: "Thibaut Verron" <[2]thibaut.verron@gmail.com>
> To: [3]carlmarcos@tutanota.com
> Cc: "Emanuel Berg" <[4]incal@dataswamp.org>, "help-gnu-emacs"
<[5]help-gnu-emacs@gnu.org>
> Subject: Re: Generality of defvar
>
> Le mer. 27 juil. 2022 à 15:24, <[6]carlmarcos@tutanota.com> a
écrit :
>
> >
> > Jul 27, 2022, 13:21 by [7]thibaut.verron@gmail.com:
> >
> > > Le mer. 27 juil. 2022 à 14:52, carlmarcos--- via Users list
for the GNU
> > Emacs text editor <> [8]help-gnu-emacs@gnu.org> > a écrit :
> > >
> > >>
> > >>
> > >> Jul 27, 2022, 12:34 by >> [9]incal@dataswamp.org>> :
> > >>
> > >> > carlmarcos--- via Users list for the GNU Emacs text editor
wrote:
> > >> >
> > >> >> (defun enable-error-diagnostics ()
> > >> >> "Enable error diagnostics with backtrace buffer.
> > >> >> One can exit the debugger with the q command."
> > >> >>
> > >> >
> > >> > You can refer to keys in docstrings like this:
> > >> >
> > >> > \\[forward-word]
> > >> >
> > >> > That way, it isn't hardcoded so if later
changed/configured
> > >> > it'll still show the right key.
> > >> >
> > >> How can I figure out what key to use in the docstring for
exiting the
> > backtrace buffer?
> > >>
> > >
> > > The function bound to 'q' is quit-window. But since this
function
> > doesn't have a global binding, you need to tell the docstring to
use the
> > appropriate keymap to look the binding up.
> > >
> > > Something like
> > >
> > > "Enable error diagnostics with backtrace buffer.
> > >
> > > \\<backtrace-mode-map> (note: this is the part telling emacs
where to
> > look for the key)
> > > One can exit the debugger with the `quit-window' command
(bound to
> > \\[quit-window])."
> > >
> > >
> > Although quit-window is bound to q, the command \\[quit-window]
just
> > inserts
> > M-x quit-window, rather than q.
> >
>
> Yes, that's precisely because quit-window doesn't have a global
binding.
> You need to add \\<backtrace-mode-map> somewhere in the docstring
to tell
> emacs to show bindings for the backtrace buffers, rather than
global
> bindings.
>
> Best wishes,
> Thibaut
Sounds good advice, but the result could be
Uses keymap ‘backtrace-mode-map’, which is not currently defined.
My bad, it should have been debugger-mode-map.
Not quite right yet.
References
1. mailto:dimech@gmx.com
2. mailto:thibaut.verron@gmail.com
3. mailto:carlmarcos@tutanota.com
4. mailto:incal@dataswamp.org
5. mailto:help-gnu-emacs@gnu.org
6. mailto:carlmarcos@tutanota.com
7. mailto:thibaut.verron@gmail.com
8. mailto:help-gnu-emacs@gnu.org
9. mailto:incal@dataswamp.org
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: Generality of defvar
2022-07-28 6:42 ` Christopher Dimech
@ 2022-07-28 7:06 ` Thibaut Verron
2022-07-28 7:34 ` Christopher Dimech
0 siblings, 1 reply; 27+ messages in thread
From: Thibaut Verron @ 2022-07-28 7:06 UTC (permalink / raw)
To: Christopher Dimech; +Cc: carlmarcos, Emanuel Berg, help-gnu-emacs
Le jeu. 28 juil. 2022 à 08:42, Christopher Dimech <dimech@gmx.com> a écrit :
>
> *Sent:* Thursday, July 28, 2022 at 4:39 AM
> *From:* "Thibaut Verron" <thibaut.verron@gmail.com>
> *To:* "Christopher Dimech" <dimech@gmx.com>
> *Cc:* carlmarcos@tutanota.com, "Emanuel Berg" <incal@dataswamp.org>,
> "help-gnu-emacs" <help-gnu-emacs@gnu.org>
> *Subject:* Re: Generality of defvar
> Le mer. 27 juil. 2022 à 18:29, Christopher Dimech <dimech@gmx.com> a
> écrit :
>
>>
>>
>> > Sent: Thursday, July 28, 2022 at 1:47 AM
>> > From: "Thibaut Verron" <thibaut.verron@gmail.com>
>> > To: carlmarcos@tutanota.com
>> > Cc: "Emanuel Berg" <incal@dataswamp.org>, "help-gnu-emacs" <
>> help-gnu-emacs@gnu.org>
>> > Subject: Re: Generality of defvar
>> >
>> > Le mer. 27 juil. 2022 à 15:24, <carlmarcos@tutanota.com> a écrit :
>> >
>> > >
>> > > Jul 27, 2022, 13:21 by thibaut.verron@gmail.com:
>> > >
>> > > > Le mer. 27 juil. 2022 à 14:52, carlmarcos--- via Users list for the
>> GNU
>> > > Emacs text editor <> help-gnu-emacs@gnu.org> > a écrit :
>> > > >
>> > > >>
>> > > >>
>> > > >> Jul 27, 2022, 12:34 by >> incal@dataswamp.org>> :
>> > > >>
>> > > >> > carlmarcos--- via Users list for the GNU Emacs text editor
>> wrote:
>> > > >> >
>> > > >> >> (defun enable-error-diagnostics ()
>> > > >> >> "Enable error diagnostics with backtrace buffer.
>> > > >> >> One can exit the debugger with the q command."
>> > > >> >>
>> > > >> >
>> > > >> > You can refer to keys in docstrings like this:
>> > > >> >
>> > > >> > \\[forward-word]
>> > > >> >
>> > > >> > That way, it isn't hardcoded so if later changed/configured
>> > > >> > it'll still show the right key.
>> > > >> >
>> > > >> How can I figure out what key to use in the docstring for exiting
>> the
>> > > backtrace buffer?
>> > > >>
>> > > >
>> > > > The function bound to 'q' is quit-window. But since this function
>> > > doesn't have a global binding, you need to tell the docstring to use
>> the
>> > > appropriate keymap to look the binding up.
>> > > >
>> > > > Something like
>> > > >
>> > > > "Enable error diagnostics with backtrace buffer.
>> > > >
>> > > > \\<backtrace-mode-map> (note: this is the part telling emacs where
>> to
>> > > look for the key)
>> > > > One can exit the debugger with the `quit-window' command (bound to
>> > > \\[quit-window])."
>> > > >
>> > > >
>> > > Although quit-window is bound to q, the command \\[quit-window] just
>> > > inserts
>> > > M-x quit-window, rather than q.
>> > >
>> >
>> > Yes, that's precisely because quit-window doesn't have a global binding.
>> > You need to add \\<backtrace-mode-map> somewhere in the docstring to
>> tell
>> > emacs to show bindings for the backtrace buffers, rather than global
>> > bindings.
>> >
>> > Best wishes,
>> > Thibaut
>>
>> Sounds good advice, but the result could be
>>
>> Uses keymap ‘backtrace-mode-map’, which is not currently defined.
>
>
> My bad, it should have been debugger-mode-map.
>
>
> Not quite right yet.
>
I guess one should also put (require 'debug) at some point along with the
function definition?
Best wishes,
Thibaut
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: Generality of defvar
2022-07-28 7:06 ` Thibaut Verron
@ 2022-07-28 7:34 ` Christopher Dimech
2022-07-28 9:37 ` thibaut.verron
0 siblings, 1 reply; 27+ messages in thread
From: Christopher Dimech @ 2022-07-28 7:34 UTC (permalink / raw)
To: thibaut.verron; +Cc: carlmarcos, Emanuel Berg, help-gnu-emacs
Sent: Thursday, July 28, 2022 at 7:06 PM
From: "Thibaut Verron" <thibaut.verron@gmail.com>
To: "Christopher Dimech" <dimech@gmx.com>
Cc: carlmarcos@tutanota.com, "Emanuel Berg" <incal@dataswamp.org>,
"help-gnu-emacs" <help-gnu-emacs@gnu.org>
Subject: Re: Generality of defvar
Le jeu. 28 juil. 2022 à 08:42, Christopher Dimech <[1]dimech@gmx.com> a
écrit :
Sent: Thursday, July 28, 2022 at 4:39 AM
From: "Thibaut Verron" <[2]thibaut.verron@gmail.com>
To: "Christopher Dimech" <[3]dimech@gmx.com>
Cc: [4]carlmarcos@tutanota.com, "Emanuel Berg"
<[5]incal@dataswamp.org>, "help-gnu-emacs" <[6]help-gnu-emacs@gnu.org>
Subject: Re: Generality of defvar
Le mer. 27 juil. 2022 à 18:29, Christopher Dimech <[7]dimech@gmx.com> a
écrit :
> Sent: Thursday, July 28, 2022 at 1:47 AM
> From: "Thibaut Verron" <[8]thibaut.verron@gmail.com>
> To: [9]carlmarcos@tutanota.com
> Cc: "Emanuel Berg" <[10]incal@dataswamp.org>, "help-gnu-emacs"
<[11]help-gnu-emacs@gnu.org>
> Subject: Re: Generality of defvar
>
> Le mer. 27 juil. 2022 à 15:24, <[12]carlmarcos@tutanota.com> a
écrit :
>
> >
> > Jul 27, 2022, 13:21 by [13]thibaut.verron@gmail.com:
> >
> > > Le mer. 27 juil. 2022 à 14:52, carlmarcos--- via Users list
for the GNU
> > Emacs text editor <> [14]help-gnu-emacs@gnu.org> > a écrit :
> > >
> > >>
> > >>
> > >> Jul 27, 2022, 12:34 by >> [15]incal@dataswamp.org>> :
> > >>
> > >> > carlmarcos--- via Users list for the GNU Emacs text editor
wrote:
> > >> >
> > >> >> (defun enable-error-diagnostics ()
> > >> >> "Enable error diagnostics with backtrace buffer.
> > >> >> One can exit the debugger with the q command."
> > >> >>
> > >> >
> > >> > You can refer to keys in docstrings like this:
> > >> >
> > >> > \\[forward-word]
> > >> >
> > >> > That way, it isn't hardcoded so if later
changed/configured
> > >> > it'll still show the right key.
> > >> >
> > >> How can I figure out what key to use in the docstring for
exiting the
> > backtrace buffer?
> > >>
> > >
> > > The function bound to 'q' is quit-window. But since this
function
> > doesn't have a global binding, you need to tell the docstring to
use the
> > appropriate keymap to look the binding up.
> > >
> > > Something like
> > >
> > > "Enable error diagnostics with backtrace buffer.
> > >
> > > \\<backtrace-mode-map> (note: this is the part telling emacs
where to
> > look for the key)
> > > One can exit the debugger with the `quit-window' command
(bound to
> > \\[quit-window])."
> > >
> > >
> > Although quit-window is bound to q, the command \\[quit-window]
just
> > inserts
> > M-x quit-window, rather than q.
> >
>
> Yes, that's precisely because quit-window doesn't have a global
binding.
> You need to add \\<backtrace-mode-map> somewhere in the docstring
to tell
> emacs to show bindings for the backtrace buffers, rather than
global
> bindings.
>
> Best wishes,
> Thibaut
Sounds good advice, but the result could be
Uses keymap ‘backtrace-mode-map’, which is not currently defined.
My bad, it should have been debugger-mode-map.
Not quite right yet.
I guess one should also put (require 'debug) at some point along with
the function definition?
Seems more bother than it solves. Cannot see how users would be able
to figure all this complication
out.
References
1. mailto:dimech@gmx.com
2. mailto:thibaut.verron@gmail.com
3. mailto:dimech@gmx.com
4. mailto:carlmarcos@tutanota.com
5. mailto:incal@dataswamp.org
6. mailto:help-gnu-emacs@gnu.org
7. mailto:dimech@gmx.com
8. mailto:thibaut.verron@gmail.com
9. mailto:carlmarcos@tutanota.com
10. mailto:incal@dataswamp.org
11. mailto:help-gnu-emacs@gnu.org
12. mailto:carlmarcos@tutanota.com
13. mailto:thibaut.verron@gmail.com
14. mailto:help-gnu-emacs@gnu.org
15. mailto:incal@dataswamp.org
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: Generality of defvar
2022-07-28 7:34 ` Christopher Dimech
@ 2022-07-28 9:37 ` thibaut.verron
2022-07-28 13:57 ` Christopher Dimech
0 siblings, 1 reply; 27+ messages in thread
From: thibaut.verron @ 2022-07-28 9:37 UTC (permalink / raw)
To: Christopher Dimech, carlmarcos, Emanuel Berg, help-gnu-emacs
On 28/07/2022 09:34, Christopher Dimech <dimech@gmx.com> wrote:
> *Sent:* Thursday, July 28, 2022 at 7:06 PM
> *From:* "Thibaut Verron" <thibaut.verron@gmail.com>
> *To:* "Christopher Dimech" <dimech@gmx.com>
> *Cc:* carlmarcos@tutanota.com, "Emanuel Berg" <incal@dataswamp.org>,
> "help-gnu-emacs" <help-gnu-emacs@gnu.org>
> *Subject:* Re: Generality of defvar
> Le jeu. 28 juil. 2022 à 08:42, Christopher Dimech <dimech@gmx.com
> <mailto:dimech@gmx.com>> a écrit :
>
> *Sent:* Thursday, July 28, 2022 at 4:39 AM
> *From:* "Thibaut Verron" <thibaut.verron@gmail.com
> <mailto:thibaut.verron@gmail.com>>
> *To:* "Christopher Dimech" <dimech@gmx.com <mailto:dimech@gmx.com>>
> *Cc:* carlmarcos@tutanota.com <mailto:carlmarcos@tutanota.com>,
> "Emanuel Berg" <incal@dataswamp.org <mailto:incal@dataswamp.org>>,
> "help-gnu-emacs" <help-gnu-emacs@gnu.org
> <mailto:help-gnu-emacs@gnu.org>>
> *Subject:* Re: Generality of defvar
> Le mer. 27 juil. 2022 à 18:29, Christopher Dimech <dimech@gmx.com
> <mailto:dimech@gmx.com>> a écrit :
>
>
>
> > Sent: Thursday, July 28, 2022 at 1:47 AM
> > From: "Thibaut Verron" <thibaut.verron@gmail.com
> <mailto:thibaut.verron@gmail.com>>
> > To: carlmarcos@tutanota.com <mailto:carlmarcos@tutanota.com>
> > Cc: "Emanuel Berg" <incal@dataswamp.org
> <mailto:incal@dataswamp.org>>, "help-gnu-emacs"
> <help-gnu-emacs@gnu.org <mailto:help-gnu-emacs@gnu.org>>
> > Subject: Re: Generality of defvar
> >
> > Le mer. 27 juil. 2022 à 15:24, <carlmarcos@tutanota.com
> <mailto:carlmarcos@tutanota.com>> a écrit :
> >
> > >
> > > Jul 27, 2022, 13:21 by thibaut.verron@gmail.com
> <mailto:thibaut.verron@gmail.com>:
> > >
> > > > Le mer. 27 juil. 2022 à 14:52, carlmarcos--- via Users
> list for the GNU
> > > Emacs text editor <> help-gnu-emacs@gnu.org
> <mailto:help-gnu-emacs@gnu.org>> > a écrit :
> > > >
> > > >>
> > > >>
> > > >> Jul 27, 2022, 12:34 by >> incal@dataswamp.org
> <mailto:incal@dataswamp.org>>> :
> > > >>
> > > >> > carlmarcos--- via Users list for the GNU Emacs text
> editor wrote:
> > > >> >
> > > >> >> (defun enable-error-diagnostics ()
> > > >> >> "Enable error diagnostics with backtrace buffer.
> > > >> >> One can exit the debugger with the q command."
> > > >> >>
> > > >> >
> > > >> > You can refer to keys in docstrings like this:
> > > >> >
> > > >> > \\[forward-word]
> > > >> >
> > > >> > That way, it isn't hardcoded so if later
> changed/configured
> > > >> > it'll still show the right key.
> > > >> >
> > > >> How can I figure out what key to use in the docstring
> for exiting the
> > > backtrace buffer?
> > > >>
> > > >
> > > > The function bound to 'q' is quit-window. But since this
> function
> > > doesn't have a global binding, you need to tell the
> docstring to use the
> > > appropriate keymap to look the binding up.
> > > >
> > > > Something like
> > > >
> > > > "Enable error diagnostics with backtrace buffer.
> > > >
> > > > \\<backtrace-mode-map> (note: this is the part telling
> emacs where to
> > > look for the key)
> > > > One can exit the debugger with the `quit-window' command
> (bound to
> > > \\[quit-window])."
> > > >
> > > >
> > > Although quit-window is bound to q, the command
> \\[quit-window] just
> > > inserts
> > > M-x quit-window, rather than q.
> > >
> >
> > Yes, that's precisely because quit-window doesn't have a
> global binding.
> > You need to add \\<backtrace-mode-map> somewhere in the
> docstring to tell
> > emacs to show bindings for the backtrace buffers, rather than
> global
> > bindings.
> >
> > Best wishes,
> > Thibaut
>
> Sounds good advice, but the result could be
>
> Uses keymap ‘backtrace-mode-map’, which is not currently defined.
>
> My bad, it should have been debugger-mode-map.
> Not quite right yet.
>
> I guess one should also put (require 'debug) at some point along with
> the function definition?
> Seems more bother than it solves. Cannot see how users would be able to
> figure all this complication
> out.
For sure. But it's really a rare situation, and not one that is likely to hit first time users: one has to be writing a function with a docstring, and this docstring has to involve a key bound in a keymap defined in another file, and not loaded by default.
Even for users developing their own packages, usually the keymap will be defined in a file loaded at the same time as the function, completely hiding this subtlety.
Still, I would almost be tempted to consider this case a bug, and to expect that emacs should autoload debug.el to display the relevant information.
Thibaut
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: Generality of defvar
2022-07-28 9:37 ` thibaut.verron
@ 2022-07-28 13:57 ` Christopher Dimech
0 siblings, 0 replies; 27+ messages in thread
From: Christopher Dimech @ 2022-07-28 13:57 UTC (permalink / raw)
To: thibaut.verron; +Cc: carlmarcos, Emanuel Berg, help-gnu-emacs
> Sent: Thursday, July 28, 2022 at 9:37 PM
> From: thibaut.verron@gmail.com
> To: "Christopher Dimech" <dimech@gmx.com>, carlmarcos@tutanota.com, "Emanuel Berg" <incal@dataswamp.org>, "help-gnu-emacs" <help-gnu-emacs@gnu.org>
> Subject: Re: Generality of defvar
>
> On 28/07/2022 09:34, Christopher Dimech <dimech@gmx.com> wrote:
> > *Sent:* Thursday, July 28, 2022 at 7:06 PM
> > *From:* "Thibaut Verron" <thibaut.verron@gmail.com>
> > *To:* "Christopher Dimech" <dimech@gmx.com>
> > *Cc:* carlmarcos@tutanota.com, "Emanuel Berg" <incal@dataswamp.org>,
> > "help-gnu-emacs" <help-gnu-emacs@gnu.org>
> > *Subject:* Re: Generality of defvar
> > Le jeu. 28 juil. 2022 à 08:42, Christopher Dimech <dimech@gmx.com
> > <mailto:dimech@gmx.com>> a écrit :
> >
> > *Sent:* Thursday, July 28, 2022 at 4:39 AM
> > *From:* "Thibaut Verron" <thibaut.verron@gmail.com
> > <mailto:thibaut.verron@gmail.com>>
> > *To:* "Christopher Dimech" <dimech@gmx.com <mailto:dimech@gmx.com>>
> > *Cc:* carlmarcos@tutanota.com <mailto:carlmarcos@tutanota.com>,
> > "Emanuel Berg" <incal@dataswamp.org <mailto:incal@dataswamp.org>>,
> > "help-gnu-emacs" <help-gnu-emacs@gnu.org
> > <mailto:help-gnu-emacs@gnu.org>>
> > *Subject:* Re: Generality of defvar
> > Le mer. 27 juil. 2022 à 18:29, Christopher Dimech <dimech@gmx.com
> > <mailto:dimech@gmx.com>> a écrit :
> >
> >
> >
> > > Sent: Thursday, July 28, 2022 at 1:47 AM
> > > From: "Thibaut Verron" <thibaut.verron@gmail.com
> > <mailto:thibaut.verron@gmail.com>>
> > > To: carlmarcos@tutanota.com <mailto:carlmarcos@tutanota.com>
> > > Cc: "Emanuel Berg" <incal@dataswamp.org
> > <mailto:incal@dataswamp.org>>, "help-gnu-emacs"
> > <help-gnu-emacs@gnu.org <mailto:help-gnu-emacs@gnu.org>>
> > > Subject: Re: Generality of defvar
> > >
> > > Le mer. 27 juil. 2022 à 15:24, <carlmarcos@tutanota.com
> > <mailto:carlmarcos@tutanota.com>> a écrit :
> > >
> > > >
> > > > Jul 27, 2022, 13:21 by thibaut.verron@gmail.com
> > <mailto:thibaut.verron@gmail.com>:
> > > >
> > > > > Le mer. 27 juil. 2022 à 14:52, carlmarcos--- via Users
> > list for the GNU
> > > > Emacs text editor <> help-gnu-emacs@gnu.org
> > <mailto:help-gnu-emacs@gnu.org>> > a écrit :
> > > > >
> > > > >>
> > > > >>
> > > > >> Jul 27, 2022, 12:34 by >> incal@dataswamp.org
> > <mailto:incal@dataswamp.org>>> :
> > > > >>
> > > > >> > carlmarcos--- via Users list for the GNU Emacs text
> > editor wrote:
> > > > >> >
> > > > >> >> (defun enable-error-diagnostics ()
> > > > >> >> "Enable error diagnostics with backtrace buffer.
> > > > >> >> One can exit the debugger with the q command."
> > > > >> >>
> > > > >> >
> > > > >> > You can refer to keys in docstrings like this:
> > > > >> >
> > > > >> > \\[forward-word]
> > > > >> >
> > > > >> > That way, it isn't hardcoded so if later
> > changed/configured
> > > > >> > it'll still show the right key.
> > > > >> >
> > > > >> How can I figure out what key to use in the docstring
> > for exiting the
> > > > backtrace buffer?
> > > > >>
> > > > >
> > > > > The function bound to 'q' is quit-window. But since this
> > function
> > > > doesn't have a global binding, you need to tell the
> > docstring to use the
> > > > appropriate keymap to look the binding up.
> > > > >
> > > > > Something like
> > > > >
> > > > > "Enable error diagnostics with backtrace buffer.
> > > > >
> > > > > \\<backtrace-mode-map> (note: this is the part telling
> > emacs where to
> > > > look for the key)
> > > > > One can exit the debugger with the `quit-window' command
> > (bound to
> > > > \\[quit-window])."
> > > > >
> > > > >
> > > > Although quit-window is bound to q, the command
> > \\[quit-window] just
> > > > inserts
> > > > M-x quit-window, rather than q.
> > > >
> > >
> > > Yes, that's precisely because quit-window doesn't have a
> > global binding.
> > > You need to add \\<backtrace-mode-map> somewhere in the
> > docstring to tell
> > > emacs to show bindings for the backtrace buffers, rather than
> > global
> > > bindings.
> > >
> > > Best wishes,
> > > Thibaut
> >
> > Sounds good advice, but the result could be
> >
> > Uses keymap ‘backtrace-mode-map’, which is not currently defined.
> >
> > My bad, it should have been debugger-mode-map.
> > Not quite right yet.
> >
> > I guess one should also put (require 'debug) at some point along with
> > the function definition?
> > Seems more bother than it solves. Cannot see how users would be able to
> > figure all this complication
> > out.
>
> For sure. But it's really a rare situation, and not one that is likely to hit first time users: one has to be writing a function with a docstring, and this docstring has to involve a key bound in a keymap defined in another file, and not loaded by default.
>
> Even for users developing their own packages, usually the keymap will be defined in a file loaded at the same time as the function, completely hiding this subtlety.
>
> Still, I would almost be tempted to consider this case a bug, and to expect that emacs should autoload debug.el to display the relevant information.
>
> Thibaut
I concur Thibaut. Do send a report as you suggest.
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: Generality of defvar
2022-07-27 4:57 ` Yuri Khan
2022-07-27 6:59 ` carlmarcos--- via Users list for the GNU Emacs text editor
@ 2022-07-29 15:56 ` Emanuel Berg
2022-07-29 16:25 ` [External] : " Drew Adams
1 sibling, 1 reply; 27+ messages in thread
From: Emanuel Berg @ 2022-07-29 15:56 UTC (permalink / raw)
To: help-gnu-emacs
Yuri Khan wrote:
>> (defvar var-name)
>> (setq var-name 'var-value)
>>
>> instead because if you do something with that and want to
>> reset it, it's enough to evaluate the second line, whereas
>> if you just have the first line you tend to evaluate that
>> one and if/because the variable is already set at that
>> point then nothing will happen ...
>
> Yes, but you can press C-M-x on a (defvar var-name
> 'var-value) and it will get re-set to the new value even if
> the variable is already defined.
So you can! I just tested and you are right. Did they change
that recently? Okay then, I guess there is no point in doing
(defvar var-name)
(setq var-name 'var-value)
anymore.
--
underground experts united
https://dataswamp.org/~incal
^ permalink raw reply [flat|nested] 27+ messages in thread
* RE: [External] : Re: Generality of defvar
2022-07-29 15:56 ` Emanuel Berg
@ 2022-07-29 16:25 ` Drew Adams
2022-07-30 3:56 ` Emanuel Berg
0 siblings, 1 reply; 27+ messages in thread
From: Drew Adams @ 2022-07-29 16:25 UTC (permalink / raw)
To: Emanuel Berg, help-gnu-emacs@gnu.org
> > Yes, but you can press C-M-x on a (defvar var-name
> > 'var-value) and it will get re-set to the new value even if
> > the variable is already defined.
>
> So you can! I just tested and you are right. Did they change
> that recently?
80s? 70s?
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [External] : Re: Generality of defvar
2022-07-29 16:25 ` [External] : " Drew Adams
@ 2022-07-30 3:56 ` Emanuel Berg
2022-07-30 19:36 ` Drew Adams
0 siblings, 1 reply; 27+ messages in thread
From: Emanuel Berg @ 2022-07-30 3:56 UTC (permalink / raw)
To: help-gnu-emacs
Drew Adams wrote:
>>> Yes, but you can press C-M-x on a (defvar var-name
>>> 'var-value) and it will get re-set to the new value even
>>> if the variable is already defined.
>>
>> So you can! I just tested and you are right. Did they
>> change that recently?
>
> 80s? 70s?
Haha :)
Nevermind then.
--
underground experts united
https://dataswamp.org/~incal
^ permalink raw reply [flat|nested] 27+ messages in thread
* RE: [External] : Re: Generality of defvar
2022-07-30 3:56 ` Emanuel Berg
@ 2022-07-30 19:36 ` Drew Adams
2022-08-01 3:24 ` Emanuel Berg
0 siblings, 1 reply; 27+ messages in thread
From: Drew Adams @ 2022-07-30 19:36 UTC (permalink / raw)
To: Emanuel Berg, help-gnu-emacs@gnu.org
> >>> Yes, but you can press C-M-x on a (defvar var-name
> >>> 'var-value) and it will get re-set to the new value even
> >>> if the variable is already defined.
> >>
> >> So you can! I just tested and you are right. Did they
> >> change that recently?
> >
> > 80s? 70s?
>
> Haha :)
>
> Nevermind then.
Sorry, I guess that might have sounded a bit snarky.
Dunno when this behavior was defined for Elisp
`defvar' (and some others), but it's been there as
long as I can remember, which probably goes back to
Emacs 18, in the early 80s.
^ permalink raw reply [flat|nested] 27+ messages in thread
* Re: [External] : Re: Generality of defvar
2022-07-30 19:36 ` Drew Adams
@ 2022-08-01 3:24 ` Emanuel Berg
0 siblings, 0 replies; 27+ messages in thread
From: Emanuel Berg @ 2022-08-01 3:24 UTC (permalink / raw)
To: help-gnu-emacs
Drew Adams wrote:
>>>>> Yes, but you can press C-M-x on a (defvar var-name
>>>>> 'var-value) and it will get re-set to the new value even
>>>>> if the variable is already defined.
>>>>
>>>> So you can! I just tested and you are right. Did they
>>>> change that recently?
>>>
>>> 80s? 70s?
>>
>> Haha :)
>>
>> Nevermind then.
>
> Sorry, I guess that might have sounded a bit snarky.
No, I like the old-school parts of me. The parts of me that
I consider old-school ...
> Dunno when this behavior was defined for Elisp `defvar' (and
> some others), but it's been there as long as I can remember,
> which probably goes back to Emacs 18, in the early 80s.
Yeah, must have picked that up from some old manual.
--
underground experts united
https://dataswamp.org/~incal
^ permalink raw reply [flat|nested] 27+ messages in thread
end of thread, other threads:[~2022-08-01 3:24 UTC | newest]
Thread overview: 27+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-07-26 20:35 Generality of defvar carlmarcos--- via Users list for the GNU Emacs text editor
2022-07-26 23:01 ` Philip Kaludercic
[not found] ` <87r127h40s.fsf@posteo.net-N7wjq17--3-2>
2022-07-26 23:10 ` carlmarcos--- via Users list for the GNU Emacs text editor
2022-07-27 7:29 ` Thibaut Verron
[not found] ` <CAFsi02SEVCEjGNoQ6vPZvMw7d5F39JZAAPCR5VOUnzQDUERkQA@mail.gmail.com-N7yZ2U2----2>
2022-07-27 12:18 ` carlmarcos--- via Users list for the GNU Emacs text editor
2022-07-27 12:34 ` Emanuel Berg
2022-07-27 12:52 ` carlmarcos--- via Users list for the GNU Emacs text editor
2022-07-27 13:21 ` Thibaut Verron
2022-07-27 13:24 ` carlmarcos--- via Users list for the GNU Emacs text editor
2022-07-27 13:47 ` Thibaut Verron
2022-07-27 16:29 ` Christopher Dimech
2022-07-27 16:39 ` Thibaut Verron
2022-07-28 6:42 ` Christopher Dimech
2022-07-28 7:06 ` Thibaut Verron
2022-07-28 7:34 ` Christopher Dimech
2022-07-28 9:37 ` thibaut.verron
2022-07-28 13:57 ` Christopher Dimech
2022-07-26 23:16 ` Emanuel Berg
2022-07-26 23:23 ` Emanuel Berg
2022-07-26 23:36 ` carlmarcos--- via Users list for the GNU Emacs text editor
2022-07-27 4:57 ` Yuri Khan
2022-07-27 6:59 ` carlmarcos--- via Users list for the GNU Emacs text editor
2022-07-29 15:56 ` Emanuel Berg
2022-07-29 16:25 ` [External] : " Drew Adams
2022-07-30 3:56 ` Emanuel Berg
2022-07-30 19:36 ` Drew Adams
2022-08-01 3:24 ` Emanuel Berg
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).