* bug#65267: 30.0.50; modifying debug-ignored-errors during startup with --debug-init is broken @ 2023-08-13 7:54 Štěpán Němec 2023-08-13 9:49 ` Eli Zaretskii 2023-08-13 16:19 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors 0 siblings, 2 replies; 32+ messages in thread From: Štěpán Němec @ 2023-08-13 7:54 UTC (permalink / raw) To: 65267; +Cc: Stefan Monnier sh(1) reproduction recipe: --8<-- initdir=$(mktemp -d) echo "(add-to-list 'debug-ignored-errors 'my-error)" >"$initdir"/init.el emacs --debug-init --init-dir="$initdir" \ --eval '(message "%S" debug-ignored-errors)' rm -rf "$initdir" --8<-- In the emacs thus started, the value of `debug-ignored-errors' is "(my-error startup--witness)" instead of `my-error' added to the default ignored error symbol list. (It works as expected *without* --debug-init.) In GNU Emacs 30.0.50 (build 3, x86_64-pc-linux-gnu, cairo version 1.17.8) of 2023-08-13 built on tipi Repository revision: 6d58007bb05b92d5bafb91631df8fef8d99e6722 ^ [that's just 08bf8533bb1d with some unrelated stuff on top, sorry about that] Repository branch: use Windowing system distributor 'The X.Org Foundation', version 11.0.12101008 System Description: Arch Linux Configured using: 'configure --config-cache --without-x-toolkit' Configured features: ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG JSON LCMS2 LIBOTF LIBSYSTEMD LIBXML2 M17N_FLT MODULES NOTIFY INOTIFY OLDXMENU PDUMPER PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF TREE_SITTER WEBP X11 XDBE XIM XINPUT2 XPM ZLIB Important settings: value of $LC_MESSAGES: value of $LANG: en_US.UTF-8 value of $XMODIFIERS: @im=fcitx locale-coding-system: utf-8-unix Major mode: Help Minor modes in effect: tooltip-mode: t global-eldoc-mode: t show-paren-mode: t electric-indent-mode: t mouse-wheel-mode: t tool-bar-mode: t file-name-shadow-mode: t isearch-fold-quotes-mode: t global-font-lock-mode: t font-lock-mode: t blink-cursor-mode: t buffer-read-only: t line-number-mode: t indent-tabs-mode: t transient-mark-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t Load-path shadows: None found. Features: (shadow sort mail-extr emacsbug message mailcap yank-media puny dired dired-loaddefs rfc822 mml mml-sec password-cache epa derived epg rfc6068 epg-config gnus-util text-property-search time-date subr-x mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils cl-extra pp cl-print byte-opt gv bytecomp byte-compile debug backtrace find-func thingatpt help-fns radix-tree help-mode cl-loaddefs cl-lib rmc iso-transl tooltip cconv eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel term/x-win x-win term/common-win x-dnd touch-screen tool-bar dnd fontset image regexp-opt fringe tabulated-list replace newcomment text-mode lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow isearch easymenu timer select scroll-bar mouse jit-lock font-lock syntax font-core term/tty-colors frame minibuffer nadvice seq simple cl-generic indonesian philippine cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese composite emoji-zwj charscript charprop case-table epa-hook jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs theme-loaddefs faces cus-face macroexp files window text-properties overlay sha1 md5 base64 format env code-pages mule custom widget keymap hashtable-print-readable backquote threads dbusbind inotify lcms2 dynamic-setting system-font-setting font-render-setting cairo xinput2 x multi-tty move-toolbar make-network-process emacs) Memory information: ((conses 16 55621 13813) (symbols 48 6384 0) (strings 32 18969 1832) (string-bytes 1 511550) (vectors 16 12190) (vector-slots 8 168978 11702) (floats 8 45 36) (intervals 56 405 0) (buffers 992 12)) -- Štěpán ^ permalink raw reply [flat|nested] 32+ messages in thread
* bug#65267: 30.0.50; modifying debug-ignored-errors during startup with --debug-init is broken 2023-08-13 7:54 bug#65267: 30.0.50; modifying debug-ignored-errors during startup with --debug-init is broken Štěpán Němec @ 2023-08-13 9:49 ` Eli Zaretskii 2023-08-13 10:03 ` Štěpán Němec 2023-08-13 16:19 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors 1 sibling, 1 reply; 32+ messages in thread From: Eli Zaretskii @ 2023-08-13 9:49 UTC (permalink / raw) To: Štěpán Němec; +Cc: 65267, monnier > Cc: Stefan Monnier <monnier@iro.umontreal.ca> > From: Štěpán Němec > <stepnem@smrk.net> > Date: Sun, 13 Aug 2023 09:54:29 +0200 > > > sh(1) reproduction recipe: > > --8<-- > initdir=$(mktemp -d) > > echo "(add-to-list 'debug-ignored-errors 'my-error)" >"$initdir"/init.el > emacs --debug-init --init-dir="$initdir" \ > --eval '(message "%S" debug-ignored-errors)' > > rm -rf "$initdir" > --8<-- > > In the emacs thus started, the value of `debug-ignored-errors' is > "(my-error startup--witness)" instead of `my-error' added to > the default ignored error symbol list. I believe this is a feature: when the user says --debug-init, they need to be shown all the errors raised during startup; hiding some of the errors was a misfeature in previous versions of Emacs, now fixed. ^ permalink raw reply [flat|nested] 32+ messages in thread
* bug#65267: 30.0.50; modifying debug-ignored-errors during startup with --debug-init is broken 2023-08-13 9:49 ` Eli Zaretskii @ 2023-08-13 10:03 ` Štěpán Němec 2023-08-13 10:12 ` Eli Zaretskii 0 siblings, 1 reply; 32+ messages in thread From: Štěpán Němec @ 2023-08-13 10:03 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 65267, monnier On Sun, 13 Aug 2023 12:49:42 +0300 Eli Zaretskii wrote: >> Cc: Stefan Monnier <monnier@iro.umontreal.ca> >> From: Štěpán Němec >> <stepnem@smrk.net> >> Date: Sun, 13 Aug 2023 09:54:29 +0200 >> >> >> sh(1) reproduction recipe: >> >> --8<-- >> initdir=$(mktemp -d) >> >> echo "(add-to-list 'debug-ignored-errors 'my-error)" >"$initdir"/init.el >> emacs --debug-init --init-dir="$initdir" \ >> --eval '(message "%S" debug-ignored-errors)' >> >> rm -rf "$initdir" >> --8<-- >> >> In the emacs thus started, the value of `debug-ignored-errors' is >> "(my-error startup--witness)" instead of `my-error' added to >> the default ignored error symbol list. > > I believe this is a feature: Here's hoping it isn't. > when the user says --debug-init, they need to be shown all the errors > raised during startup; hiding some of the errors was a misfeature in > previous versions of Emacs, now fixed. That would seem OK to me. The problem is that, as it is now, this breaks normal Emacs usage of anyone who starts with --debug-init and happens to modify `debug-ignored-errors' as part of their initialization. Note that it might not even be user-intentional/explicit modification, e.g., I noticed the problem because I load yasnippet from my init file, and yasnippet adds a custom regexp to debug-ignored-errors; so now I end up with bogus debug-ignored-errors value, which is further aggravated by the fact that I normally run with debug-on-errors set, so, for example, I now end up in the debugger whenever I press C-n at the end of buffer (until I manually restore debug-ignored-errors to a sane value). -- Štěpán ^ permalink raw reply [flat|nested] 32+ messages in thread
* bug#65267: 30.0.50; modifying debug-ignored-errors during startup with --debug-init is broken 2023-08-13 10:03 ` Štěpán Němec @ 2023-08-13 10:12 ` Eli Zaretskii 2023-08-13 10:24 ` Štěpán Němec 0 siblings, 1 reply; 32+ messages in thread From: Eli Zaretskii @ 2023-08-13 10:12 UTC (permalink / raw) To: Štěpán Němec; +Cc: 65267, monnier > From: Štěpán Němec <stepnem@smrk.net> > Cc: 65267@debbugs.gnu.org, monnier@iro.umontreal.ca > Date: Sun, 13 Aug 2023 12:03:41 +0200 > > On Sun, 13 Aug 2023 12:49:42 +0300 > Eli Zaretskii wrote: > > > when the user says --debug-init, they need to be shown all the errors > > raised during startup; hiding some of the errors was a misfeature in > > previous versions of Emacs, now fixed. > > That would seem OK to me. The problem is that, as it is now, this > breaks normal Emacs usage of anyone who starts with --debug-init and > happens to modify `debug-ignored-errors' as part of their > initialization. You are not supposed to suppress errors during startup when you use the --debug-init switch. You are supposed to resolve the errors one by one, until no errors are left. (Resolving errors could include catching them and ignoring them, e.g., with the likes of ignore-errors.) That's what --debug-init is for, so leaving some errors suppressed in that case makes no sense. Moreover, most users don't even know that debug-ignored-errors exists and has a non-nil value by default, so the effect is to hide some errors during startup from those users -- and that is the anti-thesis of --debug-init. > Note that it might not even be user-intentional/explicit modification, > e.g., I noticed the problem because I load yasnippet from my init file, > and yasnippet adds a custom regexp to debug-ignored-errors; so now I end > up with bogus debug-ignored-errors value, which is further aggravated by > the fact that I normally run with debug-on-errors set, so, for example, > I now end up in the debugger whenever I press C-n at the end of buffer > (until I manually restore debug-ignored-errors to a sane value). The above works perfectly okay as long as --debug-init is not used, right? (If it doesn't, then this is not a problem with a recent change that is supposed to affect only --debug-init.) ^ permalink raw reply [flat|nested] 32+ messages in thread
* bug#65267: 30.0.50; modifying debug-ignored-errors during startup with --debug-init is broken 2023-08-13 10:12 ` Eli Zaretskii @ 2023-08-13 10:24 ` Štěpán Němec 2023-08-13 12:38 ` Eli Zaretskii 0 siblings, 1 reply; 32+ messages in thread From: Štěpán Němec @ 2023-08-13 10:24 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 65267, monnier On Sun, 13 Aug 2023 13:12:56 +0300 Eli Zaretskii wrote: >> From: Štěpán Němec <stepnem@smrk.net> >> Cc: 65267@debbugs.gnu.org, monnier@iro.umontreal.ca >> Date: Sun, 13 Aug 2023 12:03:41 +0200 >> >> On Sun, 13 Aug 2023 12:49:42 +0300 >> Eli Zaretskii wrote: >> >> > when the user says --debug-init, they need to be shown all the errors >> > raised during startup; hiding some of the errors was a misfeature in >> > previous versions of Emacs, now fixed. >> >> That would seem OK to me. The problem is that, as it is now, this >> breaks normal Emacs usage of anyone who starts with --debug-init and >> happens to modify `debug-ignored-errors' as part of their >> initialization. > > You are not supposed to suppress errors during startup when you use > the --debug-init switch. You are supposed to resolve the errors one > by one, until no errors are left. (Resolving errors could include > catching them and ignoring them, e.g., with the likes of > ignore-errors.) That's what --debug-init is for, so leaving some > errors suppressed in that case makes no sense. Moreover, most users > don't even know that debug-ignored-errors exists and has a non-nil > value by default, so the effect is to hide some errors during startup > from those users -- and that is the anti-thesis of --debug-init. I fail to see how any of that pertains to the issue at hand. Just to be a bit more certain we understand each other: no errors occur during startup; I'm not talking about any kind of debugging scenario, or suppressing errors during startup. The bug I describe causes a perfectly cleanly started Emacs to end up with bogus debug-ignored-errors, possibly (even likely) without the user intentionally modifying any defaults, other than passing --debug-init to Emacs and loading (as part of initialization) a package that might add to debug-ignored-errors, both of which seem perfectly fine things to do to me (and had been working for years until the recent changes). >> Note that it might not even be user-intentional/explicit modification, >> e.g., I noticed the problem because I load yasnippet from my init file, >> and yasnippet adds a custom regexp to debug-ignored-errors; so now I end >> up with bogus debug-ignored-errors value, which is further aggravated by >> the fact that I normally run with debug-on-errors set, so, for example, >> I now end up in the debugger whenever I press C-n at the end of buffer >> (until I manually restore debug-ignored-errors to a sane value). > > The above works perfectly okay as long as --debug-init is not used, > right? (If it doesn't, then this is not a problem with a recent > change that is supposed to affect only --debug-init.) Yes, I stated so in my report. -- Štěpán ^ permalink raw reply [flat|nested] 32+ messages in thread
* bug#65267: 30.0.50; modifying debug-ignored-errors during startup with --debug-init is broken 2023-08-13 10:24 ` Štěpán Němec @ 2023-08-13 12:38 ` Eli Zaretskii 0 siblings, 0 replies; 32+ messages in thread From: Eli Zaretskii @ 2023-08-13 12:38 UTC (permalink / raw) To: Štěpán Němec; +Cc: 65267, monnier > From: Štěpán Němec <stepnem@smrk.net> > Cc: 65267@debbugs.gnu.org, monnier@iro.umontreal.ca > Date: Sun, 13 Aug 2023 12:24:45 +0200 > > I fail to see how any of that pertains to the issue at hand. Just to be > a bit more certain we understand each other: no errors occur during > startup; I'm not talking about any kind of debugging scenario, or > suppressing errors during startup. The bug I describe causes a > perfectly cleanly started Emacs to end up with bogus > debug-ignored-errors, possibly (even likely) without the user > intentionally modifying any defaults, other than passing --debug-init to > Emacs and loading (as part of initialization) a package that might add > to debug-ignored-errors, both of which seem perfectly fine things to do > to me (and had been working for years until the recent changes). If debug-ignored-errors isn't returned to its original value after Emacs starts, that's a bug that wasn't supposed to happen. However, if I start Emacs as $ emacs --debug-init and then evaluate debug-ignored-errors after it starts, I see the original value. So this part seems to work. It is only if I add some symbol to debug-ignored-errors in the init file that the problem happens. So I guess the convoluted logic in startup--load-user-init-file is missing something, Stefan? ^ permalink raw reply [flat|nested] 32+ messages in thread
* bug#65267: 30.0.50; modifying debug-ignored-errors during startup with --debug-init is broken 2023-08-13 7:54 bug#65267: 30.0.50; modifying debug-ignored-errors during startup with --debug-init is broken Štěpán Němec 2023-08-13 9:49 ` Eli Zaretskii @ 2023-08-13 16:19 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors 2023-08-13 16:32 ` Eli Zaretskii 2023-08-13 17:08 ` Štěpán Němec 1 sibling, 2 replies; 32+ messages in thread From: Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-08-13 16:19 UTC (permalink / raw) To: Štěpán Němec; +Cc: 65267 > --8<-- > initdir=$(mktemp -d) > > echo "(add-to-list 'debug-ignored-errors 'my-error)" >"$initdir"/init.el > emacs --debug-init --init-dir="$initdir" \ > --eval '(message "%S" debug-ignored-errors)' > > rm -rf "$initdir" > --8<-- > > In the emacs thus started, the value of `debug-ignored-errors' is > "(my-error startup--witness)" instead of `my-error' added to > the default ignored error symbol list. Yeah, it's wrong, but I'm not sure how to fix it: `--debug-init` needs to change the value of `debug-ignored-errors` while `init.el` is executed, but it's not clear how to "revert" to "the value it would have if we had not changed it" once we're finished processing `init.el`. Maybe we should introduce a new `inhibit-debug-ignored-errors` which we could let-bind while loading `init.el` without having to modify `debug-ignored-errors` itself? Stefan ^ permalink raw reply [flat|nested] 32+ messages in thread
* bug#65267: 30.0.50; modifying debug-ignored-errors during startup with --debug-init is broken 2023-08-13 16:19 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-08-13 16:32 ` Eli Zaretskii 2023-08-13 17:08 ` Štěpán Němec 1 sibling, 0 replies; 32+ messages in thread From: Eli Zaretskii @ 2023-08-13 16:32 UTC (permalink / raw) To: Stefan Monnier; +Cc: 65267, stepnem > Cc: 65267@debbugs.gnu.org > Date: Sun, 13 Aug 2023 12:19:31 -0400 > From: Stefan Monnier via "Bug reports for GNU Emacs, > the Swiss army knife of text editors" <bug-gnu-emacs@gnu.org> > > Yeah, it's wrong, but I'm not sure how to fix it: > `--debug-init` needs to change the value of `debug-ignored-errors` while > `init.el` is executed, but it's not clear how to "revert" to "the value > it would have if we had not changed it" once we're finished processing > `init.el`. > > Maybe we should introduce a new `inhibit-debug-ignored-errors` which we > could let-bind while loading `init.el` without having to modify > `debug-ignored-errors` itself? We could document that modifying debug-ignored-errors only works reliably if done from after-init-hook. WDYT? ^ permalink raw reply [flat|nested] 32+ messages in thread
* bug#65267: 30.0.50; modifying debug-ignored-errors during startup with --debug-init is broken 2023-08-13 16:19 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors 2023-08-13 16:32 ` Eli Zaretskii @ 2023-08-13 17:08 ` Štěpán Němec 2023-08-13 17:52 ` Eli Zaretskii 2023-08-13 19:47 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors 1 sibling, 2 replies; 32+ messages in thread From: Štěpán Němec @ 2023-08-13 17:08 UTC (permalink / raw) To: Stefan Monnier, Eli Zaretskii, 65267 On Sun, 13 Aug 2023 12:19:31 -0400 Stefan Monnier via wrote: > Yeah, it's wrong, but I'm not sure how to fix it: > `--debug-init` needs to change the value of `debug-ignored-errors` while > `init.el` is executed, FWIW, I'm sure I'm missing something, but the above is far from obvious to me. Why does --debug-init need to muck with debug-ignored-errors at all? debug-ignored-errors usually/mostly contains errors unlikely to occur during startup, and even if they do occur during startup, why should Emacs not respect debug-ignored-errors and ignore them? (I also couldn't find this exception (i.e., --debug-init causing debug-ignored-errors to be ignored) documented anywhere, BTW.) > but it's not clear how to "revert" to "the value > it would have if we had not changed it" once we're finished processing > `init.el`. > > Maybe we should introduce a new `inhibit-debug-ignored-errors` which we > could let-bind while loading `init.el` without having to modify > `debug-ignored-errors` itself? If ignoring debug-ignored-errors during startup is really necessary, that sounds like a possibly cleaner way, indeed (albeit introducing yet another form to ignore another form ignoring errors...). On Sun, 13 Aug 2023 19:32:46 +0300 Eli Zaretskii wrote: > We could document that modifying debug-ignored-errors only works > reliably if done from after-init-hook. WDYT? Pushing the breakage downstream... would mean packages like yasnippet would have to adapt, among other things. Not the end of the world, I guess, but I still don't understand why the breakage (or "change in behavior", if you prefer) is necessary or desired. -- Štěpán ^ permalink raw reply [flat|nested] 32+ messages in thread
* bug#65267: 30.0.50; modifying debug-ignored-errors during startup with --debug-init is broken 2023-08-13 17:08 ` Štěpán Němec @ 2023-08-13 17:52 ` Eli Zaretskii [not found] ` <20230813203525+0200.956511-stepnem@smrk.net> 2023-08-13 19:47 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors 1 sibling, 1 reply; 32+ messages in thread From: Eli Zaretskii @ 2023-08-13 17:52 UTC (permalink / raw) To: Štěpán Němec; +Cc: 65267, monnier > From: Štěpán Němec <stepnem@smrk.net> > Date: Sun, 13 Aug 2023 19:08:26 +0200 > > On Sun, 13 Aug 2023 12:19:31 -0400 > Stefan Monnier via wrote: > > > Yeah, it's wrong, but I'm not sure how to fix it: > > `--debug-init` needs to change the value of `debug-ignored-errors` while > > `init.el` is executed, > > FWIW, I'm sure I'm missing something, but the above is far from obvious > to me. Why does --debug-init need to muck with debug-ignored-errors at > all? debug-ignored-errors usually/mostly contains errors unlikely to > occur during startup, and even if they do occur during startup, why > should Emacs not respect debug-ignored-errors and ignore them? If debug-ignored-errors were by default nil, then this would have made sense. But that's not the case: we set debug-ignored-errors to a non-nil value by default, and that gets in the way of --debug-init. See bug#64163. How's that for user surprise? > (I also couldn't find this exception (i.e., --debug-init causing > debug-ignored-errors to be ignored) documented anywhere, BTW.) The value set by the init file was not supposed to be ignored, only our own self-imposed default was. So there was nothing to document: those are Emacs internals, and we tweak them to make --debug-init work as expected, which is to catch every error. > > We could document that modifying debug-ignored-errors only works > > reliably if done from after-init-hook. WDYT? > > Pushing the breakage downstream... would mean packages like yasnippet > would have to adapt, among other things. Why on earth does yasnippet modify the value of a user variable? > Not the end of the world, I guess, but I still don't understand why > the breakage (or "change in behavior", if you prefer) is necessary > or desired. See above: it was the result of fixing a bug. Another possibility, I guess, would be to set debug-ignored-errors to its current default only after loading the user init file, and do that in a way that _adds_ the ignored-by-default errors to the list it has after loading init files. Before loading the init files, the value could would be nil. ^ permalink raw reply [flat|nested] 32+ messages in thread
[parent not found: <20230813203525+0200.956511-stepnem@smrk.net>]
* bug#65267: 30.0.50; modifying debug-ignored-errors during startup with --debug-init is broken [not found] ` <20230813203525+0200.956511-stepnem@smrk.net> @ 2023-08-13 19:05 ` Eli Zaretskii 0 siblings, 0 replies; 32+ messages in thread From: Eli Zaretskii @ 2023-08-13 19:05 UTC (permalink / raw) To: Štěpán Němec; +Cc: 65267, monnier > From: Štěpán Němec <stepnem@smrk.net> > Cc: monnier@iro.umontreal.ca, 65267@debbugs.gnu.org > Date: Sun, 13 Aug 2023 20:35:25 +0200 > > > See bug#64163. How's that for user surprise? > > Well, I did read that report, but, rather than making me believe > --debug-init should ignore debug-ignored-errors, it made me wonder if > having `end-of-file' on debug-ignored-errors was a good idea to begin > with. It doesn't seem to fit the general user-error-like pattern of > the other members. Imagine that your init file has one of these errors and you want to debug them with --debug-init. Why wouldn't that be possible? IOW, the --debug-init option is meant to allow the users to find out _where_ in their init files the error which fails them happens, so it makes very little sense to mask some of those errors when the debugging mode is requested by the user. > > Why on earth does yasnippet modify the value of a user variable? > > I can't speak for yasnippet maintainers, but let's have a look at what > GNU Emacs says, in the comment above debug-ignored-errors in > bindings.el, line 879: > > ;; Packages should add to this list appropriately when they are > ;; loaded, rather than listing everything here. > > Sounds somewhat suggestive. It is easy to remove that comment. User options shouldn't be touched by packages. > Granted, one might interpret "packages" > above as internal-only, OTOH you call debug-ignored-errors a "user > variable" (and indeed it is accessible from the Custom machinery). > Maybe storing part of "Emacs internals" in a user variable isn't > optimal, either? By "Emacs internals" part I alluded to the fact that we temporarily tweak the value for the benefit of making --debug-init as useful as users expect. It's similar to the fact that some user options are evaluated more than once during startup, for some good reasons. > In any case, even if we leave packages out of the > equation, the recent change breaks anybody who peruses the user variable > during init, so blessing the new behavior would cause some pain for some > users (in addition to package maintainers). There's no argument that the value of debug-ignored-errors should be left after startup as users expect -- that it isn't so now is a bug that needs to be fixed one way or another. But the fact that using the --debug-init option temporarily resets debug-ignored-errors to nil while Emacs loads the init files is _not_ a bug, it's a feature intended to meet user expectations from this option. ^ permalink raw reply [flat|nested] 32+ messages in thread
* bug#65267: 30.0.50; modifying debug-ignored-errors during startup with --debug-init is broken 2023-08-13 17:08 ` Štěpán Němec 2023-08-13 17:52 ` Eli Zaretskii @ 2023-08-13 19:47 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors [not found] ` <20230813223458+0200.843367-stepnem@smrk.net> 2023-08-17 9:31 ` Eli Zaretskii 1 sibling, 2 replies; 32+ messages in thread From: Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-08-13 19:47 UTC (permalink / raw) To: Štěpán Němec; +Cc: 65267, Eli Zaretskii, Noam Postavsky [ Added Noam, since we're mentioning a problem linked to yasnippet.el. ] >> Yeah, it's wrong, but I'm not sure how to fix it: >> `--debug-init` needs to change the value of `debug-ignored-errors` while >> `init.el` is executed, > > FWIW, I'm sure I'm missing something, but the above is far from obvious > to me. Why does --debug-init need to muck with debug-ignored-errors at > all? debug-ignored-errors usually/mostly contains errors unlikely to > occur during startup, "unlikely" doesn't mean they should be ignored: `debug-ignored-errors` is for errors which should not bring up a debugger if they occur in interactive use, but they're still errors, and if they occur during `init.el` they are definitely not ignored: they stop the processing of `init.el`. So when debugging init errors, we *should* bring up the debugger for them. >> Maybe we should introduce a new `inhibit-debug-ignored-errors` which we >> could let-bind while loading `init.el` without having to modify >> `debug-ignored-errors` itself? > > If ignoring debug-ignored-errors during startup is really necessary, > that sounds like a possibly cleaner way, indeed .. > (albeit introducing yet another form to ignore another form ignoring > errors...). Yes, that's what's making me hesitate. >> We could document that modifying debug-ignored-errors only works >> reliably if done from after-init-hook. WDYT? > > Pushing the breakage downstream... would mean packages like yasnippet > would have to adapt, among other things. Not the end of the world, I > guess, but I still don't understand why the breakage (or "change in > behavior", if you prefer) is necessary or desired. Hmm... thanks for pointing out that left-over thingy in `yasnippet.el` which should have been removed as part of: commit 175e0a3a102c22c0c99d8d00ecf8bc8539a4e593 Author: João Távora <joaotavora@gmail.com> Date: Mon Nov 17 11:27:30 2014 +0000 Clean up previous change * yasnippet.el: Update comment. (yas--protection-violation): Removed. (yas--on-protection-overlay-modification): Simplified. (yas--post-command-handler): No longer reference `yas--protection-violation' I pushed a commit to clean this up to the `scratch/yasnippet` branch of elpa.git. Stefan ^ permalink raw reply [flat|nested] 32+ messages in thread
[parent not found: <20230813223458+0200.843367-stepnem@smrk.net>]
* bug#65267: 30.0.50; modifying debug-ignored-errors during startup with --debug-init is broken [not found] ` <20230813223458+0200.843367-stepnem@smrk.net> @ 2023-08-14 2:26 ` Eli Zaretskii 2023-08-14 6:48 ` Štěpán Němec 0 siblings, 1 reply; 32+ messages in thread From: Eli Zaretskii @ 2023-08-14 2:26 UTC (permalink / raw) To: Štěpán Němec; +Cc: 65267, monnier, npostavs > From: Štěpán Němec <stepnem@smrk.net> > Cc: Eli Zaretskii <eliz@gnu.org>, 65267@debbugs.gnu.org, Noam Postavsky > <npostavs@users.sourceforge.net> > Date: Sun, 13 Aug 2023 22:34:58 +0200 > > So, yes, I agree that end-of-file (which indeed isn't unlikely to occur > during loading) now ending up in the debugger is an improvement. > > Checking git history, I also see that end-of-file has been in > debug-ignored-errors since forever, but I still can't rid myself of > doubts regarding its usefulness there. Would you have an explanation > for that, too? Other than it not fitting with the others (IMHO), its > absence there would likely save us all this (bug#64163 and the ensuing > mess). I find any of the other members of debug-ignored-errors being > triggered during startup much less likely. (And, OTOH, why would I want > to ignore end-of-file during interactive use with d-o-e set?) It is not ignored, it just doesn't enter the debugger. ^ permalink raw reply [flat|nested] 32+ messages in thread
* bug#65267: 30.0.50; modifying debug-ignored-errors during startup with --debug-init is broken 2023-08-14 2:26 ` Eli Zaretskii @ 2023-08-14 6:48 ` Štěpán Němec 0 siblings, 0 replies; 32+ messages in thread From: Štěpán Němec @ 2023-08-14 6:48 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 65267, monnier, npostavs On Mon, 14 Aug 2023 05:26:15 +0300 Eli Zaretskii wrote: >> From: Štěpán Němec <stepnem@smrk.net> >> Cc: Eli Zaretskii <eliz@gnu.org>, 65267@debbugs.gnu.org, Noam Postavsky >> <npostavs@users.sourceforge.net> >> Date: Sun, 13 Aug 2023 22:34:58 +0200 >> >> So, yes, I agree that end-of-file (which indeed isn't unlikely to occur >> during loading) now ending up in the debugger is an improvement. >> >> Checking git history, I also see that end-of-file has been in >> debug-ignored-errors since forever, but I still can't rid myself of >> doubts regarding its usefulness there. Would you have an explanation >> for that, too? Other than it not fitting with the others (IMHO), its >> absence there would likely save us all this (bug#64163 and the ensuing >> mess). I find any of the other members of debug-ignored-errors being >> triggered during startup much less likely. (And, OTOH, why would I want >> to ignore end-of-file during interactive use with d-o-e set?) > > It is not ignored, it just doesn't enter the debugger. That's what I meant, sorry for not being clearer. Unlike the other members of debug-ignored-errors, end-of-file doesn't strike me as an error likely to cause annoyance rather than provide useful backtrace data when running with debug-on-error set, so I don't understand why it's there by default. I'll remove it here and see how that goes. -- Štěpán ^ permalink raw reply [flat|nested] 32+ messages in thread
* bug#65267: 30.0.50; modifying debug-ignored-errors during startup with --debug-init is broken 2023-08-13 19:47 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors [not found] ` <20230813223458+0200.843367-stepnem@smrk.net> @ 2023-08-17 9:31 ` Eli Zaretskii 2023-08-17 12:55 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors 1 sibling, 1 reply; 32+ messages in thread From: Eli Zaretskii @ 2023-08-17 9:31 UTC (permalink / raw) To: Stefan Monnier; +Cc: 65267, stepnem, npostavs > From: Stefan Monnier <monnier@iro.umontreal.ca> > Cc: Eli Zaretskii <eliz@gnu.org>, 65267@debbugs.gnu.org, > Noam Postavsky <npostavs@users.sourceforge.net> > Date: Sun, 13 Aug 2023 15:47:33 -0400 > > [ Added Noam, since we're mentioning a problem linked to yasnippet.el. ] > > >> Yeah, it's wrong, but I'm not sure how to fix it: > >> `--debug-init` needs to change the value of `debug-ignored-errors` while > >> `init.el` is executed, > > > > FWIW, I'm sure I'm missing something, but the above is far from obvious > > to me. Why does --debug-init need to muck with debug-ignored-errors at > > all? debug-ignored-errors usually/mostly contains errors unlikely to > > occur during startup, > > "unlikely" doesn't mean they should be ignored: `debug-ignored-errors` > is for errors which should not bring up a debugger if they occur in > interactive use, but they're still errors, and if they occur during > `init.el` they are definitely not ignored: they stop the processing of > `init.el`. So when debugging init errors, we *should* bring up the > debugger for them. > > >> Maybe we should introduce a new `inhibit-debug-ignored-errors` which we > >> could let-bind while loading `init.el` without having to modify > >> `debug-ignored-errors` itself? > > > > If ignoring debug-ignored-errors during startup is really necessary, > > that sounds like a possibly cleaner way, indeed > > .. > > > (albeit introducing yet another form to ignore another form ignoring > > errors...). > > Yes, that's what's making me hesitate. What about the minor changes below? They do seem to yield the expected results in the original recipe. The idea is to detect the situation where the init file _added_ to the value of debug-ignored-errors, and re-add the additions after loading the init file. diff --git a/lisp/startup.el b/lisp/startup.el index 43d6bf7..4d0e59b 100644 --- a/lisp/startup.el +++ b/lisp/startup.el @@ -1023,6 +1023,7 @@ startup--load-user-init-file ;; Use (startup--witness) instead of nil, so we can detect when the ;; init files set `debug-ignored-errors' to nil. (if init-file-debug '(startup--witness) debug-ignored-errors)) + (d-i-e-standard debug-ignored-errors) ;; The init file might contain byte-code with embedded NULs, ;; which can cause problems when read back, so disable nul ;; byte detection. (Bug#52554) @@ -1111,8 +1112,16 @@ startup--load-user-init-file ;; If we can tell that the init file altered debug-on-error, ;; arrange to preserve the value that it set up. - (or (eq debug-ignored-errors d-i-e-initial) - (setq d-i-e-from-init-file (list debug-ignored-errors))) + (unless (eq debug-ignored-errors d-i-e-initial) + (if (memq 'startup--witness debug-ignored-errors) + ;; The init file wants to add errors to the standard + ;; value, so we need to emulate that. + (setq d-i-e-from-init-file + (list (append d-i-e-standard + (remq 'startup--witness + debug-ignored-errors)))) + ;; The init file _replaces_ the standard value. + (setq d-i-e-from-init-file (list debug-ignored-errors)))) (or (eq debug-on-error debug-on-error-initial) (setq debug-on-error-should-be-set t debug-on-error-from-init-file debug-on-error))) ^ permalink raw reply related [flat|nested] 32+ messages in thread
* bug#65267: 30.0.50; modifying debug-ignored-errors during startup with --debug-init is broken 2023-08-17 9:31 ` Eli Zaretskii @ 2023-08-17 12:55 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors 2023-08-17 13:28 ` Eli Zaretskii 0 siblings, 1 reply; 32+ messages in thread From: Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-08-17 12:55 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 65267, stepnem, npostavs > What about the minor changes below? They do seem to yield the > expected results in the original recipe. The idea is to detect the > situation where the init file _added_ to the value of > debug-ignored-errors, and re-add the additions after loading the init > file. No objection from me (it's not great, but I don't think there's a great solution). Stefan ^ permalink raw reply [flat|nested] 32+ messages in thread
* bug#65267: 30.0.50; modifying debug-ignored-errors during startup with --debug-init is broken 2023-08-17 12:55 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-08-17 13:28 ` Eli Zaretskii 2023-08-17 14:16 ` Štěpán Němec 0 siblings, 1 reply; 32+ messages in thread From: Eli Zaretskii @ 2023-08-17 13:28 UTC (permalink / raw) To: stepnem, Stefan Monnier; +Cc: 65267, npostavs > From: Stefan Monnier <monnier@iro.umontreal.ca> > Cc: stepnem@smrk.net, 65267@debbugs.gnu.org, npostavs@users.sourceforge.net > Date: Thu, 17 Aug 2023 08:55:38 -0400 > > > What about the minor changes below? They do seem to yield the > > expected results in the original recipe. The idea is to detect the > > situation where the init file _added_ to the value of > > debug-ignored-errors, and re-add the additions after loading the init > > file. > > No objection from me (it's not great, but I don't think there's a great > solution). Thanks. Štěpán, would you mind testing the patch? If it works for you, I will install it. ^ permalink raw reply [flat|nested] 32+ messages in thread
* bug#65267: 30.0.50; modifying debug-ignored-errors during startup with --debug-init is broken 2023-08-17 13:28 ` Eli Zaretskii @ 2023-08-17 14:16 ` Štěpán Němec 2023-08-17 14:31 ` Eli Zaretskii 0 siblings, 1 reply; 32+ messages in thread From: Štěpán Němec @ 2023-08-17 14:16 UTC (permalink / raw) To: Eli Zaretskii, Stefan Monnier; +Cc: 65267, npostavs On Thu, 17 Aug 2023 16:28:31 +0300 Eli Zaretskii wrote: >> From: Stefan Monnier <monnier@iro.umontreal.ca> >> Cc: stepnem@smrk.net, 65267@debbugs.gnu.org, npostavs@users.sourceforge.net >> Date: Thu, 17 Aug 2023 08:55:38 -0400 >> >> > What about the minor changes below? They do seem to yield the >> > expected results in the original recipe. The idea is to detect the >> > situation where the init file _added_ to the value of >> > debug-ignored-errors, and re-add the additions after loading the init >> > file. >> >> No objection from me (it's not great, but I don't think there's a great >> solution). > > Thanks. > > Štěpán, would you mind testing the patch? If it works for you, I will > install it. Your patch preserves additions (although it moves them to the end of the list, but that shouldn't matter for debug-ignored-errors), but doesn't preserve removals, e.g., if we change the reproducer from my original report to --8<-- initdir=$(mktemp -d) #echo "(add-to-list 'debug-ignored-errors 'my-error)" >"$initdir"/init.el echo "(setq debug-ignored-errors (delq 'end-of-file debug-ignored-errors))" >"$initdir"/init.el emacs --debug-init --init-dir="$initdir" \ --eval '(message "%S" debug-ignored-errors)' rm -rf "$initdir" --8<-- we end up with debug-ignored-errors containing `end-of-file' (together with the rest). Have you considered my humble suggestion of reverting to pre-bug#64163 state and simply removing end-of-file from the default value of debug-ignored-errors? -- Štěpán ^ permalink raw reply [flat|nested] 32+ messages in thread
* bug#65267: 30.0.50; modifying debug-ignored-errors during startup with --debug-init is broken 2023-08-17 14:16 ` Štěpán Němec @ 2023-08-17 14:31 ` Eli Zaretskii 2023-08-17 14:36 ` Eli Zaretskii 2023-08-17 15:52 ` bug#65267: 30.0.50; modifying debug-ignored-errors during startup with --debug-init is broken, " Štěpán Němec 0 siblings, 2 replies; 32+ messages in thread From: Eli Zaretskii @ 2023-08-17 14:31 UTC (permalink / raw) To: Štěpán Němec; +Cc: 65267, monnier, npostavs > From: Štěpán Němec <stepnem@smrk.net> > Cc: 65267@debbugs.gnu.org, npostavs@users.sourceforge.net > Date: Thu, 17 Aug 2023 16:16:19 +0200 > > On Thu, 17 Aug 2023 16:28:31 +0300 > Eli Zaretskii wrote: > > >> From: Stefan Monnier <monnier@iro.umontreal.ca> > >> Cc: stepnem@smrk.net, 65267@debbugs.gnu.org, npostavs@users.sourceforge.net > >> Date: Thu, 17 Aug 2023 08:55:38 -0400 > >> > >> > What about the minor changes below? They do seem to yield the > >> > expected results in the original recipe. The idea is to detect the > >> > situation where the init file _added_ to the value of > >> > debug-ignored-errors, and re-add the additions after loading the init > >> > file. > >> > >> No objection from me (it's not great, but I don't think there's a great > >> solution). > > > > Thanks. > > > > Štěpán, would you mind testing the patch? If it works for you, I will > > install it. > > Your patch preserves additions (although it moves them to the end of the > list, but that shouldn't matter for debug-ignored-errors), but doesn't > preserve removals If someone want to remove from the list, and use --debug-init on top of that, they will need to replace the value instead. If that's the only downside of the patch I proposed, I think people will be able to live with it. > Have you considered my humble suggestion of reverting to pre-bug#64163 > state and simply removing end-of-file from the default value of > debug-ignored-errors? Yes. This cannot fly, since we had end-of-file there for a long time (I see it in Emacs 20). ^ permalink raw reply [flat|nested] 32+ messages in thread
* bug#65267: 30.0.50; modifying debug-ignored-errors during startup with --debug-init is broken 2023-08-17 14:31 ` Eli Zaretskii @ 2023-08-17 14:36 ` Eli Zaretskii 2023-08-17 15:52 ` bug#65267: 30.0.50; modifying debug-ignored-errors during startup with --debug-init is broken, " Štěpán Němec 1 sibling, 0 replies; 32+ messages in thread From: Eli Zaretskii @ 2023-08-17 14:36 UTC (permalink / raw) To: stepnem; +Cc: 65267, monnier, npostavs > Cc: 65267@debbugs.gnu.org, monnier@iro.umontreal.ca, > npostavs@users.sourceforge.net > Date: Thu, 17 Aug 2023 17:31:00 +0300 > From: Eli Zaretskii <eliz@gnu.org> > > > Have you considered my humble suggestion of reverting to pre-bug#64163 > > state and simply removing end-of-file from the default value of > > debug-ignored-errors? > > Yes. This cannot fly, since we had end-of-file there for a long time > (I see it in Emacs 20). And, of course, end-of-file is just one of the errors in the list; bug#64163 could have been equally reported with any of those other ones, and the solution is the same. ^ permalink raw reply [flat|nested] 32+ messages in thread
* bug#65267: 30.0.50; modifying debug-ignored-errors during startup with --debug-init is broken, bug#65267: 30.0.50; modifying debug-ignored-errors during startup with --debug-init is broken 2023-08-17 14:31 ` Eli Zaretskii 2023-08-17 14:36 ` Eli Zaretskii @ 2023-08-17 15:52 ` Štěpán Němec 2023-08-17 16:05 ` Eli Zaretskii 2023-08-17 17:15 ` Gregory Heytings 1 sibling, 2 replies; 32+ messages in thread From: Štěpán Němec @ 2023-08-17 15:52 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 65267, monnier, npostavs On Thu, 17 Aug 2023 17:31:00 +0300 Eli Zaretskii wrote: >> From: Štěpán Němec <stepnem@smrk.net> >> Cc: 65267@debbugs.gnu.org, npostavs@users.sourceforge.net >> Date: Thu, 17 Aug 2023 16:16:19 +0200 >> >> On Thu, 17 Aug 2023 16:28:31 +0300 >> Eli Zaretskii wrote: >> >> Your patch preserves additions (although it moves them to the end of the >> list, but that shouldn't matter for debug-ignored-errors), but doesn't >> preserve removals > > If someone want to remove from the list, and use --debug-init on top > of that, they will need to replace the value instead. If that's the > only downside of the patch I proposed, I think people will be able to > live with it. As you said, debug-ignored-errors is a user variable. So some people are likely to change it, and some (most?) of those people will do that from their init file. I don't see how adding vs removing is any different in that respect. As for --debug-init, why would anyone (who knows about that option and cares about their setup) routinely start Emacs *without* it? >> Have you considered my humble suggestion of reverting to pre-bug#64163 >> state and simply removing end-of-file from the default value of >> debug-ignored-errors? > > Yes. This cannot fly, since we had end-of-file there for a long time > (I see it in Emacs 20). I only wish someone would put forth an actual argument for having end-of-file on debug-ignored-errors. I agree backward compatibility/preserving behavior is important, but I hope you'll agree that some behavior changes are more serious/visible/disruptive/whatever than others, and I'd argue that in that sense, messing with user option modification during startup is a worse change than removing end-of-file from debug-ignored-errors. So if we're again back to blessing the breakage, I suggest it at least be documented. On Thu, 17 Aug 2023 17:36:09 +0300 Eli Zaretskii wrote: >> Cc: 65267@debbugs.gnu.org, monnier@iro.umontreal.ca, >> npostavs@users.sourceforge.net >> Date: Thu, 17 Aug 2023 17:31:00 +0300 >> From: Eli Zaretskii <eliz@gnu.org> >> >> > Have you considered my humble suggestion of reverting to pre-bug#64163 >> > state and simply removing end-of-file from the default value of >> > debug-ignored-errors? >> >> Yes. This cannot fly, since we had end-of-file there for a long time >> (I see it in Emacs 20). > > And, of course, end-of-file is just one of the errors in the list; > bug#64163 could have been equally reported with any of those other > ones, and the solution is the same. "Equally" I don't think. If it took many (tens of?) years for anybody to be bothered by the end-of-file case (bug#64163), which IME indeed occurs somewhat regularly during startup (missing closing paren), I find the same happening with any of the other members of debug-ignored-errors exceedingly unlikely. I agree with Stefan that no good solution has so far emerged. The advantage of my suggestion would be that it only changes debug-ignored-errors in a way that makes sense anyway (in absence of any arguments to the contrary), preventing bug#64163 as a byproduct, rather than adding to convoluted code nobody involved seems to really understand in a way that nobody involved seems to really understand or expect. -- Štěpán ^ permalink raw reply [flat|nested] 32+ messages in thread
* bug#65267: 30.0.50; modifying debug-ignored-errors during startup with --debug-init is broken, bug#65267: 30.0.50; modifying debug-ignored-errors during startup with --debug-init is broken 2023-08-17 15:52 ` bug#65267: 30.0.50; modifying debug-ignored-errors during startup with --debug-init is broken, " Štěpán Němec @ 2023-08-17 16:05 ` Eli Zaretskii 2023-08-17 16:29 ` Štěpán Němec 2023-08-17 17:15 ` Gregory Heytings 1 sibling, 1 reply; 32+ messages in thread From: Eli Zaretskii @ 2023-08-17 16:05 UTC (permalink / raw) To: Štěpán Němec; +Cc: 65267, monnier, npostavs > From: Štěpán Němec <stepnem@smrk.net> > Cc: 65267@debbugs.gnu.org, monnier@iro.umontreal.ca, > npostavs@users.sourceforge.net > Date: Thu, 17 Aug 2023 17:52:59 +0200 > > As you said, debug-ignored-errors is a user variable. So some people > are likely to change it, and some (most?) of those people will do that > from their init file. I don't see how adding vs removing is any > different in that respect. I agree, I'm just saying that removing from the list, and using --debug-init at the same time is beyond obscure. > As for --debug-init, why would anyone (who knows about that option and > cares about their setup) routinely start Emacs *without* it? I would actually ask the opposite: why would someone run with that option except when they need to debug their init files? It's a debugging option. I'm quite sure that if you poll Emacs users, you will find that the vast majority doesn't routinely use that option. Exactly like most of the users don't routinely run Emacs under GDB. > >> Have you considered my humble suggestion of reverting to pre-bug#64163 > >> state and simply removing end-of-file from the default value of > >> debug-ignored-errors? > > > > Yes. This cannot fly, since we had end-of-file there for a long time > > (I see it in Emacs 20). > > I only wish someone would put forth an actual argument for having > end-of-file on debug-ignored-errors. It no longer matters, since that ship has sailed in Sep 1996, if not earlier. > I agree backward compatibility/preserving behavior is important, but I > hope you'll agree that some behavior changes are more > serious/visible/disruptive/whatever than others, and I'd argue that in > that sense, messing with user option modification during startup is a > worse change than removing end-of-file from debug-ignored-errors. If we "mess" with the options and restore them back to their user-defined value at the end of startup, the "mess" is not that awful a felony. During startup, Emacs "messes" with some options anyway, e.g., those that need to be re-evaluated more than once, to support the user changing the environment via init file settings. So it isn't like there's no precedent for "messing" with user options. And let me remind you that this bug report was triggered by "messing" with user options by a certain package. > So if we're again back to blessing the breakage, I suggest it at least > be documented. I don't think I have a clear idea of what aspects of this you think we need to document. Please elaborate. ^ permalink raw reply [flat|nested] 32+ messages in thread
* bug#65267: 30.0.50; modifying debug-ignored-errors during startup with --debug-init is broken, bug#65267: 30.0.50; modifying debug-ignored-errors during startup with --debug-init is broken 2023-08-17 16:05 ` Eli Zaretskii @ 2023-08-17 16:29 ` Štěpán Němec 2023-08-17 17:58 ` Eli Zaretskii 0 siblings, 1 reply; 32+ messages in thread From: Štěpán Němec @ 2023-08-17 16:29 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 65267, monnier, npostavs On Thu, 17 Aug 2023 19:05:55 +0300 Eli Zaretskii wrote: >> From: Štěpán Němec <stepnem@smrk.net> >> Cc: 65267@debbugs.gnu.org, monnier@iro.umontreal.ca, >> npostavs@users.sourceforge.net >> Date: Thu, 17 Aug 2023 17:52:59 +0200 >> >> As you said, debug-ignored-errors is a user variable. So some people >> are likely to change it, and some (most?) of those people will do that >> from their init file. I don't see how adding vs removing is any >> different in that respect. > > I agree, I'm just saying that removing from the list, and using > --debug-init at the same time is beyond obscure. Why? >> As for --debug-init, why would anyone (who knows about that option and >> cares about their setup) routinely start Emacs *without* it? > > I would actually ask the opposite: why would someone run with that > option except when they need to debug their init files? It's a > debugging option. Because in the no-errors case it costs the user virtually nothing, and in case of errors you don't have to restart with --debug-init: you have the backtrace right there. > I'm quite sure that if you poll Emacs users, you will find that the > vast majority doesn't routinely use that option. I don't share your confidence, one way or the other; you might well be right (that's why I added the parenthetical). > Exactly like most of the users don't routinely run Emacs under GDB. Running under GDB is significantly more complex (esp. for a casual user) than adding a CLI option, so I don't think that is a good comparison. >> >> Have you considered my humble suggestion of reverting to pre-bug#64163 >> >> state and simply removing end-of-file from the default value of >> >> debug-ignored-errors? >> > >> > Yes. This cannot fly, since we had end-of-file there for a long time >> > (I see it in Emacs 20). >> >> I only wish someone would put forth an actual argument for having >> end-of-file on debug-ignored-errors. > > It no longer matters, since that ship has sailed in Sep 1996, if not > earlier. Even GNU Emacs is amenable to such reassessments. Options and/or their defaults change every release, I don't see how debug-ignored-errors is any different (if anything, this change would seem relatively minor). >> I agree backward compatibility/preserving behavior is important, but I >> hope you'll agree that some behavior changes are more >> serious/visible/disruptive/whatever than others, and I'd argue that in >> that sense, messing with user option modification during startup is a >> worse change than removing end-of-file from debug-ignored-errors. > > If we "mess" with the options and restore them back to their > user-defined value at the end of startup, the "mess" is not that awful > a felony. During startup, Emacs "messes" with some options anyway, > e.g., those that need to be re-evaluated more than once, to support > the user changing the environment via init file settings. So it isn't > like there's no precedent for "messing" with user options. > > And let me remind you that this bug report was triggered by "messing" > with user options by a certain package. > >> So if we're again back to blessing the breakage, I suggest it at least >> be documented. > > I don't think I have a clear idea of what aspects of this you think we > need to document. Please elaborate. I thought it was obvious, but I see I should have been more precise again, I apologize and reformulate: the "mess" here isn't with the option per se, but with its customization (even though the end result is, of course, a wrong (not user-intended) value of the option per se). Your patch doesn't improve that situation: if a user changes debug-ignored-errors during initialization, they might end up (silently!) with an unexpected value. Don't you agree that makes debug-ignored-errors special enough to need documenting? -- Štěpán ^ permalink raw reply [flat|nested] 32+ messages in thread
* bug#65267: 30.0.50; modifying debug-ignored-errors during startup with --debug-init is broken, bug#65267: 30.0.50; modifying debug-ignored-errors during startup with --debug-init is broken 2023-08-17 16:29 ` Štěpán Němec @ 2023-08-17 17:58 ` Eli Zaretskii 2023-08-17 18:15 ` Štěpán Němec 0 siblings, 1 reply; 32+ messages in thread From: Eli Zaretskii @ 2023-08-17 17:58 UTC (permalink / raw) To: Štěpán Němec; +Cc: 65267, monnier, npostavs > From: Štěpán Němec <stepnem@smrk.net> > Cc: 65267@debbugs.gnu.org, monnier@iro.umontreal.ca, > npostavs@users.sourceforge.net > Date: Thu, 17 Aug 2023 18:29:58 +0200 > > > I agree, I'm just saying that removing from the list, and using > > --debug-init at the same time is beyond obscure. > > Why? A hunch, based on a lot of years of talking to users who had problems in their init files. > >> As for --debug-init, why would anyone (who knows about that option and > >> cares about their setup) routinely start Emacs *without* it? > > > > I would actually ask the opposite: why would someone run with that > > option except when they need to debug their init files? It's a > > debugging option. > > Because in the no-errors case it costs the user virtually nothing, and > in case of errors you don't have to restart with --debug-init: you have > the backtrace right there. That's not how people regard use of debugging tools, usually. > > Exactly like most of the users don't routinely run Emacs under GDB. > > Running under GDB is significantly more complex (esp. for a casual user) > than adding a CLI option No, it doesn't. Starting a program from GDB is very similar to starting a program from the shell prompt. GDB was intentionally written to work like a shell in this regard, complete with searching PATH, supporting redirection, etc. > >> I only wish someone would put forth an actual argument for having > >> end-of-file on debug-ignored-errors. > > > > It no longer matters, since that ship has sailed in Sep 1996, if not > > earlier. > > Even GNU Emacs is amenable to such reassessments. Options and/or their > defaults change every release, I don't see how debug-ignored-errors is > any different (if anything, this change would seem relatively minor). We are extremely conservative with changing the defaults of user options, and usually require a very good reason for doing that. I see no such good reason here, as the behavior modified after bug#64163 is better than the old one. > > I don't think I have a clear idea of what aspects of this you think we > > need to document. Please elaborate. > > I thought it was obvious, but I see I should have been more precise > again, I apologize and reformulate: the "mess" here isn't with the > option per se, but with its customization (even though the end result > is, of course, a wrong (not user-intended) value of the option per se). > > Your patch doesn't improve that situation: if a user changes > debug-ignored-errors during initialization, they might end up > (silently!) with an unexpected value. Don't you agree that makes > debug-ignored-errors special enough to need documenting? I'm still not sure I understand: do you want us to document that if debug-ignored-errors are modified in the init files, they sometimes might end up with an unexpected value? If so, I don't think this kind of documentation will be useful. In the (IMO improbable) case that someone will want to remove errors from the default value, as opposed to simply set it to the value they want, I prefer to receive a bug report and explain that removing is not supported with --debug-init, rather than have something like that in the documentation, where it will almost certainly be very hard to discover. ^ permalink raw reply [flat|nested] 32+ messages in thread
* bug#65267: 30.0.50; modifying debug-ignored-errors during startup with --debug-init is broken, bug#65267: 30.0.50; modifying debug-ignored-errors during startup with --debug-init is broken 2023-08-17 17:58 ` Eli Zaretskii @ 2023-08-17 18:15 ` Štěpán Němec 2023-08-17 18:36 ` Eli Zaretskii 0 siblings, 1 reply; 32+ messages in thread From: Štěpán Němec @ 2023-08-17 18:15 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 65267, monnier, npostavs On Thu, 17 Aug 2023 20:58:00 +0300 Eli Zaretskii wrote: >> Running under GDB is significantly more complex (esp. for a casual user) >> than adding a CLI option > > No, it doesn't. Starting a program from GDB is very similar to > starting a program from the shell prompt. GDB was intentionally > written to work like a shell in this regard, complete with searching > PATH, supporting redirection, etc. Yes, after one has installed GDB, learnt how to use it and set it up to be useful with Emacs, the mere act of *starting* it is relatively easy, indeed... > I'm still not sure I understand: do you want us to document that if > debug-ignored-errors are modified in the init files, they sometimes > might end up with an unexpected value? Yes. (I think you mentioned something about saying that it's only safe to do so from after-init-hook or some such in a previous message.) > If so, I don't think this kind of documentation will be useful. Certainly more useful than silently breaking user's setup? (Which I still don't think should be done at all, silent or not, but doing so tacitly seems more on the user-hostile side.) > In the (IMO improbable) case that someone will want to remove errors > from the default value, as opposed to simply set it to the value they > want, I prefer to receive a bug report and explain that removing is > not supported with --debug-init, rather than have something like that > in the documentation, where it will almost certainly be very hard to > discover. IMHO it should be (at least) in the doc string of debug-ignored-errors. -- Štěpán ^ permalink raw reply [flat|nested] 32+ messages in thread
* bug#65267: 30.0.50; modifying debug-ignored-errors during startup with --debug-init is broken, bug#65267: 30.0.50; modifying debug-ignored-errors during startup with --debug-init is broken 2023-08-17 18:15 ` Štěpán Němec @ 2023-08-17 18:36 ` Eli Zaretskii 0 siblings, 0 replies; 32+ messages in thread From: Eli Zaretskii @ 2023-08-17 18:36 UTC (permalink / raw) To: Štěpán Němec; +Cc: 65267-done, monnier, npostavs > From: Štěpán Němec <stepnem@smrk.net> > Cc: 65267@debbugs.gnu.org, monnier@iro.umontreal.ca, > npostavs@users.sourceforge.net > Date: Thu, 17 Aug 2023 20:15:02 +0200 > > On Thu, 17 Aug 2023 20:58:00 +0300 > Eli Zaretskii wrote: > > >> Running under GDB is significantly more complex (esp. for a casual user) > >> than adding a CLI option > > > > No, it doesn't. Starting a program from GDB is very similar to > > starting a program from the shell prompt. GDB was intentionally > > written to work like a shell in this regard, complete with searching > > PATH, supporting redirection, etc. > > Yes, after one has installed GDB, learnt how to use it and set it up to > be useful with Emacs, the mere act of *starting* it is relatively easy, > indeed... I'm told that nowadays installing GDB boils down to running a single command of the package manager. > > I'm still not sure I understand: do you want us to document that if > > debug-ignored-errors are modified in the init files, they sometimes > > might end up with an unexpected value? > > Yes. (I think you mentioned something about saying that it's only safe > to do so from after-init-hook or some such in a previous message.) > > > If so, I don't think this kind of documentation will be useful. > > Certainly more useful than silently breaking user's setup? (Which I > still don't think should be done at all, silent or not, but doing so > tacitly seems more on the user-hostile side.) > > > In the (IMO improbable) case that someone will want to remove errors > > from the default value, as opposed to simply set it to the value they > > want, I prefer to receive a bug report and explain that removing is > > not supported with --debug-init, rather than have something like that > > in the documentation, where it will almost certainly be very hard to > > discover. > > IMHO it should be (at least) in the doc string of debug-ignored-errors. I added something to the doc string. Let's see if this will be discovered by someone. And with that, I'm closing this bug. ^ permalink raw reply [flat|nested] 32+ messages in thread
* bug#65267: 30.0.50; modifying debug-ignored-errors during startup with --debug-init is broken, bug#65267: 30.0.50; modifying debug-ignored-errors during startup with --debug-init is broken 2023-08-17 15:52 ` bug#65267: 30.0.50; modifying debug-ignored-errors during startup with --debug-init is broken, " Štěpán Němec 2023-08-17 16:05 ` Eli Zaretskii @ 2023-08-17 17:15 ` Gregory Heytings 2023-08-17 17:27 ` Štěpán Němec 1 sibling, 1 reply; 32+ messages in thread From: Gregory Heytings @ 2023-08-17 17:15 UTC (permalink / raw) To: Štěpán Němec; +Cc: 65267, Eli Zaretskii, monnier, npostavs >> Yes. This cannot fly, since we had end-of-file there for a long time >> (I see it in Emacs 20). > > I only wish someone would put forth an actual argument for having > end-of-file on debug-ignored-errors. > See NEWS.19: ** The variable 'debug-ignored-errors' specifies certain kinds of errors that should not enter the debugger. Its value is a list of error condition symbols and/or regular expressions. If the error has any of the condition symbols listed, or if any of the regular expressions matches the error message, then that error does not enter the debugger, regardless of the value of debug-on-error. This variable is initialized to match certain common but uninteresting errors that happen often during editing. To see what this means in practice, try: emacs -Q M-: (setq debug-ignored-errors nil) RET M-x toggle-debug-on-error RET " M-x eval-buffer RET ^ permalink raw reply [flat|nested] 32+ messages in thread
* bug#65267: 30.0.50; modifying debug-ignored-errors during startup with --debug-init is broken, bug#65267: 30.0.50; modifying debug-ignored-errors during startup with --debug-init is broken 2023-08-17 17:15 ` Gregory Heytings @ 2023-08-17 17:27 ` Štěpán Němec 2023-08-17 18:07 ` Gregory Heytings 0 siblings, 1 reply; 32+ messages in thread From: Štěpán Němec @ 2023-08-17 17:27 UTC (permalink / raw) To: Gregory Heytings; +Cc: 65267, Eli Zaretskii, monnier, npostavs On Thu, 17 Aug 2023 17:15:03 +0000 Gregory Heytings wrote: >>> Yes. This cannot fly, since we had end-of-file there for a long time >>> (I see it in Emacs 20). >> >> I only wish someone would put forth an actual argument for having >> end-of-file on debug-ignored-errors. >> > > See NEWS.19: > > ** The variable 'debug-ignored-errors' specifies certain kinds of errors > that should not enter the debugger. Its value is a list of error > condition symbols and/or regular expressions. If the error has any of the > condition symbols listed, or if any of the regular expressions matches the > error message, then that error does not enter the debugger, regardless of > the value of debug-on-error. > > This variable is initialized to match certain common but uninteresting > errors that happen often during editing. > > To see what this means in practice, try: > > emacs -Q > M-: (setq debug-ignored-errors nil) RET > M-x toggle-debug-on-error RET > " > M-x eval-buffer RET Thank you, but I believe we all knew that, already. My point has been that end-of-file doesn't really belong to the "common but uninteresting errors that happen often during editing", and your example doesn't change that, no. I guess I can imagine some kind of constantly-evaling-buffer-no-matter-what automation, triggered by examples like yours, leading to annoyance, but I'm not aware of such a thing (and would consider such automation broken if it existed; surely it would at least have to be handling end-of-file itself anyway). -- Štěpán ^ permalink raw reply [flat|nested] 32+ messages in thread
* bug#65267: 30.0.50; modifying debug-ignored-errors during startup with --debug-init is broken, bug#65267: 30.0.50; modifying debug-ignored-errors during startup with --debug-init is broken 2023-08-17 17:27 ` Štěpán Němec @ 2023-08-17 18:07 ` Gregory Heytings 2023-08-17 18:20 ` Štěpán Němec 0 siblings, 1 reply; 32+ messages in thread From: Gregory Heytings @ 2023-08-17 18:07 UTC (permalink / raw) To: Štěpán Němec; +Cc: 65267, Eli Zaretskii, monnier, npostavs > > Thank you, but I believe we all knew that, already. > I apologize for trying to help. > > My point has been that end-of-file doesn't really belong to the "common > but uninteresting errors that happen often during editing", and your > example doesn't change that, no. > I'd say that the fact that end-of-file has been in the default value of debug-ignored-errors for a quarter of a century without anyone objecting indicates that it's a reasonable default. And you can easily remove it from there if you want: (delq 'end-of-file debug-ignored-errors) ^ permalink raw reply [flat|nested] 32+ messages in thread
* bug#65267: 30.0.50; modifying debug-ignored-errors during startup with --debug-init is broken, bug#65267: 30.0.50; modifying debug-ignored-errors during startup with --debug-init is broken 2023-08-17 18:07 ` Gregory Heytings @ 2023-08-17 18:20 ` Štěpán Němec 2023-08-17 18:31 ` Gregory Heytings 0 siblings, 1 reply; 32+ messages in thread From: Štěpán Němec @ 2023-08-17 18:20 UTC (permalink / raw) To: Gregory Heytings; +Cc: 65267, Eli Zaretskii, monnier, npostavs On Thu, 17 Aug 2023 18:07:55 +0000 Gregory Heytings wrote: >> >> Thank you, but I believe we all knew that, already. >> > > I apologize for trying to help. Well, I don't apologize for (*sincerely*) thanking you. > I'd say that the fact that end-of-file has been in the default value of > debug-ignored-errors for a quarter of a century without anyone objecting > indicates that it's a reasonable default. And you can easily remove it > from there if you want: > > (delq 'end-of-file debug-ignored-errors) Maybe you know something about `delq' I do not, but I always use something like (setq debug-ignored-errors (delq 'end-of-file debug-ignored-errors)) instead. (See the documentation of `delq'.) -- Štěpán ^ permalink raw reply [flat|nested] 32+ messages in thread
* bug#65267: 30.0.50; modifying debug-ignored-errors during startup with --debug-init is broken, bug#65267: 30.0.50; modifying debug-ignored-errors during startup with --debug-init is broken 2023-08-17 18:20 ` Štěpán Němec @ 2023-08-17 18:31 ` Gregory Heytings 2023-08-17 18:36 ` Štěpán Němec 0 siblings, 1 reply; 32+ messages in thread From: Gregory Heytings @ 2023-08-17 18:31 UTC (permalink / raw) To: Štěpán Němec; +Cc: 65267, Eli Zaretskii, monnier, npostavs >> (delq 'end-of-file debug-ignored-errors) > > Maybe you know something about `delq' I do not, but I always use > something like > > (setq debug-ignored-errors (delq 'end-of-file debug-ignored-errors)) > > instead. (See the documentation of `delq'.) > Indeed it's safer to write it that way, but the setq is in fact necessary only when the element you want to remove is the first element of the list, which isn't the case here. ^ permalink raw reply [flat|nested] 32+ messages in thread
* bug#65267: 30.0.50; modifying debug-ignored-errors during startup with --debug-init is broken, bug#65267: 30.0.50; modifying debug-ignored-errors during startup with --debug-init is broken 2023-08-17 18:31 ` Gregory Heytings @ 2023-08-17 18:36 ` Štěpán Němec 0 siblings, 0 replies; 32+ messages in thread From: Štěpán Němec @ 2023-08-17 18:36 UTC (permalink / raw) To: Gregory Heytings; +Cc: 65267, Eli Zaretskii, monnier, npostavs On Thu, 17 Aug 2023 18:31:34 +0000 Gregory Heytings wrote: >>> (delq 'end-of-file debug-ignored-errors) >> >> Maybe you know something about `delq' I do not, but I always use >> something like >> >> (setq debug-ignored-errors (delq 'end-of-file debug-ignored-errors)) >> >> instead. (See the documentation of `delq'.) >> > > Indeed it's safer to write it that way, but the setq is in fact > necessary only when the element you want to remove is the first > element of the list, which isn't the case here. I didn't know that, thank you. (I can't imagine a situation where I would consider relying on that implementation detail a good idea, though.) -- Štěpán ^ permalink raw reply [flat|nested] 32+ messages in thread
end of thread, other threads:[~2023-08-17 18:36 UTC | newest] Thread overview: 32+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2023-08-13 7:54 bug#65267: 30.0.50; modifying debug-ignored-errors during startup with --debug-init is broken Štěpán Němec 2023-08-13 9:49 ` Eli Zaretskii 2023-08-13 10:03 ` Štěpán Němec 2023-08-13 10:12 ` Eli Zaretskii 2023-08-13 10:24 ` Štěpán Němec 2023-08-13 12:38 ` Eli Zaretskii 2023-08-13 16:19 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors 2023-08-13 16:32 ` Eli Zaretskii 2023-08-13 17:08 ` Štěpán Němec 2023-08-13 17:52 ` Eli Zaretskii [not found] ` <20230813203525+0200.956511-stepnem@smrk.net> 2023-08-13 19:05 ` Eli Zaretskii 2023-08-13 19:47 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors [not found] ` <20230813223458+0200.843367-stepnem@smrk.net> 2023-08-14 2:26 ` Eli Zaretskii 2023-08-14 6:48 ` Štěpán Němec 2023-08-17 9:31 ` Eli Zaretskii 2023-08-17 12:55 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors 2023-08-17 13:28 ` Eli Zaretskii 2023-08-17 14:16 ` Štěpán Němec 2023-08-17 14:31 ` Eli Zaretskii 2023-08-17 14:36 ` Eli Zaretskii 2023-08-17 15:52 ` bug#65267: 30.0.50; modifying debug-ignored-errors during startup with --debug-init is broken, " Štěpán Němec 2023-08-17 16:05 ` Eli Zaretskii 2023-08-17 16:29 ` Štěpán Němec 2023-08-17 17:58 ` Eli Zaretskii 2023-08-17 18:15 ` Štěpán Němec 2023-08-17 18:36 ` Eli Zaretskii 2023-08-17 17:15 ` Gregory Heytings 2023-08-17 17:27 ` Štěpán Němec 2023-08-17 18:07 ` Gregory Heytings 2023-08-17 18:20 ` Štěpán Němec 2023-08-17 18:31 ` Gregory Heytings 2023-08-17 18:36 ` Štěpán Němec
Code repositories for project(s) associated with this external index https://git.savannah.gnu.org/cgit/emacs.git https://git.savannah.gnu.org/cgit/emacs/org-mode.git This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.