all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* bug#70579: 30.0.50; gnus: Wrong unread count in the Group buffer
@ 2024-04-26  3:32 James Thomas via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2024-04-26  4:34 ` Eric Abrahamsen
  0 siblings, 1 reply; 10+ messages in thread
From: James Thomas via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-04-26  3:32 UTC (permalink / raw)
  To: 70579; +Cc: Eric Abrahamsen


- (Preferably starting with an empty drafts folder) Compose a message
  and save it.
- Open the drafts group, press e on the message and then kill the new
  buffer; then (incidentally, if you now do '/ N' then this bug does not
  arise) delete the message (B DEL)
- Press q
- The message count is wrong (but can be corrected with M-g)

cf. In gnus.general (gnus-summary-goto-article "87y192lr8f.fsf@gmx.net")


In GNU Emacs 30.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version
 3.24.33, cairo version 1.16.0) of 2024-03-19 built on
 user-Inspiron-15-5518
Repository revision: 88355de6022458c3e890cc6d5da60d6f35fe8868
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12101004
System Description: Ubuntu 22.04.3 LTS

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG
JSON LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 M17N_FLT MODULES NOTIFY
INOTIFY PDUMPER PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF
TOOLKIT_SCROLL_BARS TREE_SITTER WEBP X11 XDBE XIM XINPUT2 XPM GTK3 ZLIB

Important settings:
  value of $LANG: en_IN
  value of $XMODIFIERS: @im=ibus
  locale-coding-system: iso-latin-1-unix

Major mode: Summary

Minor modes in effect:
  buffer-face-mode: t
  hl-line-mode: t
  display-time-mode: t
  desktop-environment-mode: t
  server-mode: t
  recentf-mode: t
  erc-track-mode: t
  erc-ring-mode: t
  erc-netsplit-mode: t
  erc-menu-mode: t
  erc-match-mode: t
  erc-log-mode: t
  erc-list-mode: t
  erc-irccontrols-mode: t
  erc-noncommands-mode: t
  erc-move-to-prompt-mode: t
  erc-readonly-mode: t
  erc-button-mode: t
  erc-fill-mode: t
  erc-stamp-mode: t
  erc-autojoin-mode: t
  midnight-mode: t
  icomplete-mode: t
  fido-mode: t
  erc-networks-mode: t
  display-battery-mode: t
  override-global-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  minibuffer-regexp-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:
~/.emacs.d/lisp/lexic hides /home/user/.emacs.d/elpa/lexic-0.0.1/lexic
/home/user/.emacs.d/elpa/bind-key-20230203.2004/bind-key hides /home/user/code/emacs-master/lisp/bind-key
/home/user/.emacs.d/elpa/transient-20231205.1848/transient hides /home/user/code/emacs-master/lisp/transient
/home/user/.emacs.d/elpa/use-package-20230203.2004/use-package-jump hides /home/user/code/emacs-master/lisp/use-package/use-package-jump
/home/user/.emacs.d/elpa/use-package-20230203.2004/use-package-ensure hides /home/user/code/emacs-master/lisp/use-package/use-package-ensure
/home/user/.emacs.d/elpa/use-package-20230203.2004/use-package-lint hides /home/user/code/emacs-master/lisp/use-package/use-package-lint
/home/user/.emacs.d/elpa/use-package-20230203.2004/use-package-core hides /home/user/code/emacs-master/lisp/use-package/use-package-core
/home/user/.emacs.d/elpa/use-package-20230203.2004/use-package hides /home/user/code/emacs-master/lisp/use-package/use-package
/home/user/.emacs.d/elpa/use-package-20230203.2004/use-package-delight hides /home/user/code/emacs-master/lisp/use-package/use-package-delight
/home/user/.emacs.d/elpa/use-package-20230203.2004/use-package-bind-key hides /home/user/code/emacs-master/lisp/use-package/use-package-bind-key
/home/user/.emacs.d/elpa/use-package-20230203.2004/use-package-diminish hides /home/user/code/emacs-master/lisp/use-package/use-package-diminish
/home/user/.emacs.d/elpa/ox-odt-9.6.620/ox-odt hides /home/user/code/emacs-master/lisp/org/ox-odt
~/code/tramp/lisp/tramp-uu hides /home/user/code/emacs-master/lisp/net/tramp-uu
~/code/tramp/lisp/tramp-rclone hides /home/user/code/emacs-master/lisp/net/tramp-rclone
~/code/tramp/lisp/tramp-gvfs hides /home/user/code/emacs-master/lisp/net/tramp-gvfs
~/code/tramp/lisp/tramp-integration hides /home/user/code/emacs-master/lisp/net/tramp-integration
~/code/tramp/lisp/tramp-container hides /home/user/code/emacs-master/lisp/net/tramp-container
~/code/tramp/lisp/tramp-sh hides /home/user/code/emacs-master/lisp/net/tramp-sh
~/code/tramp/lisp/tramp-sshfs hides /home/user/code/emacs-master/lisp/net/tramp-sshfs
~/code/tramp/lisp/tramp hides /home/user/code/emacs-master/lisp/net/tramp
~/code/tramp/lisp/tramp-sudoedit hides /home/user/code/emacs-master/lisp/net/tramp-sudoedit
~/code/tramp/lisp/tramp-message hides /home/user/code/emacs-master/lisp/net/tramp-message
~/code/tramp/lisp/tramp-androidsu hides /home/user/code/emacs-master/lisp/net/tramp-androidsu
~/code/tramp/lisp/trampver hides /home/user/code/emacs-master/lisp/net/trampver
~/code/tramp/lisp/tramp-archive hides /home/user/code/emacs-master/lisp/net/tramp-archive
~/code/tramp/lisp/tramp-fuse hides /home/user/code/emacs-master/lisp/net/tramp-fuse
~/code/tramp/lisp/tramp-adb hides /home/user/code/emacs-master/lisp/net/tramp-adb
~/code/tramp/lisp/tramp-crypt hides /home/user/code/emacs-master/lisp/net/tramp-crypt
~/code/tramp/lisp/tramp-compat hides /home/user/code/emacs-master/lisp/net/tramp-compat
~/code/tramp/lisp/tramp-cmds hides /home/user/code/emacs-master/lisp/net/tramp-cmds
~/code/tramp/lisp/tramp-cache hides /home/user/code/emacs-master/lisp/net/tramp-cache
~/code/tramp/lisp/tramp-ftp hides /home/user/code/emacs-master/lisp/net/tramp-ftp
~/code/tramp/lisp/tramp-smb hides /home/user/code/emacs-master/lisp/net/tramp-smb
~/code/tramp/lisp/tramp-loaddefs hides /home/user/code/emacs-master/lisp/net/tramp-loaddefs

Features:
(shadow emacsbug qp bbdb-message proced mpv tq org-timer org-clock
org-indent reddigg ht request promise promise-rejection-tracking
promise-finally promise-done promise-es6-extensions promise-core
ind-util quail rect pcmpl-unix tramp-adb deeper-blue-theme package-vc
ffap ellama cus-start spinner ellama-autoloads llm-gpt4all llm-ollama
llm-gemini llm-fake ert llm-openai llm-vertex llm-provider-utils
llm-request llm llm-autoloads warnings spinner-autoloads loaddefs-gen
tar-mode arc-mode archive-mode lisp-mnt org-element org-persist org-id
org-refile avl-tree oc-basic ol-w3m ol-mhe ol-irc ol-info ol-gnus
nnselect ol-eww ol-docview doc-view filenotify jka-compr image-mode exif
ol-bibtex bibtex ol-bbdb org org-macro org-pcomplete org-list
org-footnote org-faces org-entities noutline outline org-version
ob-shell ob-dot ob-R ob-python ob ob-tangle org-src ob-ref ob-lob
ob-table ob-exp ob-comint ob-emacs-lisp ob-core ob-eval org-cycle
org-table ol org-fold org-fold-core org-keys oc org-loaddefs org-compat
org-macs sh-script smie executable etags fileloop info-look lpr debug
backtrace magit-base magit-section dash tabify imenu man em-rebind
em-smart em-tramp pulse xref wgrep find-dired grep bug-reference
find-func shortdoc comp-common help-fns radix-tree apropos tramp-cmds
tramp-cache time-stamp tramp-sh dired-aux em-unix em-term term ehelp
em-script em-prompt em-pred em-ls em-hist em-glob em-extpipe
em-elecslash em-cmpl em-dirs em-basic em-banner em-alias esh-mode
esh-var eshell esh-cmd generator esh-ext esh-opt esh-proc esh-io esh-arg
esh-module esh-groups esh-util vc-hg vc-git diff-mode vc-bzr vc-src
vc-sccs vc-svn vc-cvs vc-rcs vc-dir ewoc sort gnus-cite smiley mail-extr
gnus-async gnus-bcklg face-remap gnus-ml hl-line disp-table nnrss
mm-archive nnatom nnfeed utf-7 epa-file nnagent nnml cursor-sensor
nndraft nnmh nnnil gnus-agent gnus-srvr gnus-score score-mode nnvirtual
gnus-msg gnus-art mm-uu mml2015 mm-view mml-smime smime dig nntp
gnus-cache gnus-sum gnus-group gnus-undo bbdb-gnus bbdb-mua bbdb-com crm
bbdb bbdb-site timezone auth-source-xoauth2 auth-source-pass smtpmail
gnus-start gnus-dbus gnus-cloud nnimap nnmail mail-source utf7 nnoo
gnus-spec gnus-int gnus-range message sendmail yank-media dired
dired-loaddefs rfc822 mml mml-sec epa epg rfc6068 epg-config mm-decode
mm-bodies mm-encode mailabbrev gmm-utils mailheader gnus-win cl-print
display-line-numbers timer-list hippie-exp shr-color color textsec
uni-scripts idna-mapping ucs-normalize uni-confusable textsec-check
gnutls network-stream url-http mail-parse rfc2231 rfc2047 rfc2045
ietf-drums url-gw nsm url-cache url-auth mule-util eww-history-ext
derived eww-history-ext-dyn eww url-queue shr pixel-fill kinsoku
url-file svg dom puny mm-url gnus nnheader gnus-util mail-utils range
mm-util mail-prsvr thingatpt compile text-property-search python project
treesit inheritenv buffer-env misearch multi-isearch vc-backup log-view
pcvs-util vc vc-dispatcher diff time diary-lib diary-loaddefs cal-menu
calendar cal-loaddefs keychain-environment exwm-ns cus-edit pp icons
tramp trampver tramp-integration files-x tramp-message tramp-compat xdg
parse-time iso8601 tramp-loaddefs rx native-complete shell edmacro
desktop-environment exwm-systemtray xcb-systemtray xcb-xembed exwm
exwm-input xcb-keysyms xcb-xkb exwm-manage exwm-floating xcb-cursor
xcb-render exwm-layout exwm-workspace exwm-core xcb-ewmh xcb-icccm xcb
xcb-xproto xcb-types xcb-debug kmacro server cl-extra help-mode advice
recentf tree-widget erc-track erc-ring erc-netsplit erc-menu erc-match
erc-log erc-list erc-goodies erc-pcomplete time-date pcomplete comint
ansi-osc ansi-color ring erc-button erc-fill erc-stamp wid-edit erc-join
midnight icomplete erc format-spec erc-backend erc-networks erc-common
erc-compat compat erc-loaddefs battery dbus xml cus-load use-package
use-package-ensure use-package-delight use-package-diminish
use-package-bind-key bind-key easy-mmode use-package-core
base32-autoloads bash-completion-autoloads buffer-env-autoloads
comint-mime-autoloads company-autoloads consult-gh-embark-autoloads
coterm-autoloads daemons-autoloads detached-autoloads docker-autoloads
aio-autoloads dumb-jump-autoloads eat-autoloads eglot-java-autoloads
embark-consult-autoloads consult-autoloads embark-autoloads
enwc-autoloads exwm-firefox-core-autoloads exwm-ns-autoloads finder-inf
fedi-autoloads firefox-javascript-repl-autoloads forge-autoloads
closql-autoloads emacsql-autoloads ghub-autoloads gnus-mock-autoloads
inheritenv-autoloads keychain-environment-autoloads lexic-autoloads
pcase markdown-mode-autoloads mpv-autoloads native-complete-autoloads
org-mime-autoloads org-pdfview-autoloads org-present-autoloads
org-remark-autoloads osm-autoloads ox-odt-autoloads pdf-tools-autoloads
popup-autoloads python-view-data-autoloads csv-mode-autoloads
pythonic-autoloads realgud-ipdb-autoloads realgud-autoloads
realgud-recursive-autoloads loc-changes-autoloads
load-relative-autoloads reddigg-autoloads ht-autoloads promise-autoloads
request-autoloads restclient-autoloads s-autoloads test-simple-autoloads
transient-autoloads treepy-autoloads vc-backup-autoloads wgrep-autoloads
info yaml-autoloads package browse-url url url-proxy url-privacy
url-expand url-methods url-history url-cookie generate-lisp-file
url-domsuf url-util mailcap url-handlers url-parse auth-source cl-seq
eieio eieio-core cl-macs password-cache json subr-x map byte-opt gv
bytecomp byte-compile url-vars 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 gtk x-toolkit xinput2 x multi-tty move-toolbar
make-network-process emacs)

Memory information:
((conses 16 3067174 456353) (symbols 48 57687 14)
 (strings 32 499786 28268) (string-bytes 1 42406989)
 (vectors 16 181322) (vector-slots 8 2511916 350646)
 (floats 8 643 10877) (intervals 56 257891 9877) (buffers 992 107))





^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#70579: 30.0.50; gnus: Wrong unread count in the Group buffer
  2024-04-26  3:32 bug#70579: 30.0.50; gnus: Wrong unread count in the Group buffer James Thomas via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-04-26  4:34 ` Eric Abrahamsen
  2024-05-09  7:19   ` Eli Zaretskii
  0 siblings, 1 reply; 10+ messages in thread
From: Eric Abrahamsen @ 2024-04-26  4:34 UTC (permalink / raw)
  To: 70579; +Cc: jimjoe

James Thomas via "Bug reports for GNU Emacs, the Swiss army knife of
text editors" <bug-gnu-emacs@gnu.org> writes:

> - (Preferably starting with an empty drafts folder) Compose a message
>   and save it.
> - Open the drafts group, press e on the message and then kill the new
>   buffer; then (incidentally, if you now do '/ N' then this bug does not
>   arise) delete the message (B DEL)
> - Press q
> - The message count is wrong (but can be corrected with M-g)
>
> cf. In gnus.general (gnus-summary-goto-article "87y192lr8f.fsf@gmx.net")

Thanks!





^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#70579: 30.0.50; gnus: Wrong unread count in the Group buffer
  2024-04-26  4:34 ` Eric Abrahamsen
@ 2024-05-09  7:19   ` Eli Zaretskii
  2024-05-10  4:00     ` Eric Abrahamsen
  0 siblings, 1 reply; 10+ messages in thread
From: Eli Zaretskii @ 2024-05-09  7:19 UTC (permalink / raw)
  To: Eric Abrahamsen; +Cc: 70579, jimjoe

Ping!  Eric, can we make some progress here?

> Cc: jimjoe@gmx.net
> From: Eric Abrahamsen <eric@ericabrahamsen.net>
> Date: Thu, 25 Apr 2024 21:34:45 -0700
> 
> James Thomas via "Bug reports for GNU Emacs, the Swiss army knife of
> text editors" <bug-gnu-emacs@gnu.org> writes:
> 
> > - (Preferably starting with an empty drafts folder) Compose a message
> >   and save it.
> > - Open the drafts group, press e on the message and then kill the new
> >   buffer; then (incidentally, if you now do '/ N' then this bug does not
> >   arise) delete the message (B DEL)
> > - Press q
> > - The message count is wrong (but can be corrected with M-g)
> >
> > cf. In gnus.general (gnus-summary-goto-article "87y192lr8f.fsf@gmx.net")
> 
> Thanks!
> 
> 
> 
> 





^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#70579: 30.0.50; gnus: Wrong unread count in the Group buffer
  2024-05-09  7:19   ` Eli Zaretskii
@ 2024-05-10  4:00     ` Eric Abrahamsen
  2024-05-10  4:14       ` Eric Abrahamsen
  0 siblings, 1 reply; 10+ messages in thread
From: Eric Abrahamsen @ 2024-05-10  4:00 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 70579, jimjoe

Eli Zaretskii <eliz@gnu.org> writes:

> Ping!  Eric, can we make some progress here?
>
>> Cc: jimjoe@gmx.net
>> From: Eric Abrahamsen <eric@ericabrahamsen.net>
>> Date: Thu, 25 Apr 2024 21:34:45 -0700
>> 
>> James Thomas via "Bug reports for GNU Emacs, the Swiss army knife of
>> text editors" <bug-gnu-emacs@gnu.org> writes:
>> 
>> > - (Preferably starting with an empty drafts folder) Compose a message
>> >   and save it.
>> > - Open the drafts group, press e on the message and then kill the new
>> >   buffer; then (incidentally, if you now do '/ N' then this bug does not
>> >   arise) delete the message (B DEL)
>> > - Press q
>> > - The message count is wrong (but can be corrected with M-g)
>> >
>> > cf. In gnus.general (gnus-summary-goto-article "87y192lr8f.fsf@gmx.net")

I've made some progress here -- the root of the problem seems to be
that, when we hit "e" in the draft summary buffer to resume editing a
draft, Gnus "jumps ahead" in message numbers. Basically what "editing"
actually means is that the old draft is deleted, and a new draft is
started, but the new draft has a article number that's the previous
draft's number + 2, and the "draft" group's active number is also
inflated (for instance (12 . 14) when it should be (12 . 13)). I was
also able to get it to jump three numbers in some cases.

From this point, *any* normal usage will end up correcting the error:
using "C-c C-k" to kill the editing buffer (instead of "C-x k") or as
you noted any of the commands that lead to refreshing the unread count.
But if you don't use any of those commands, you'll see the inflated
active/unread count when you get back to the *Group* buffer (the "B DEL"
isn't necessary for the recipe, and in fact at that stage the message
under point has already been deleted).

That's as far as I've gotten, and I'll keep working on why the article
number starts off inflated. But in the meantime, the solution is "don't
do that".

Eric





^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#70579: 30.0.50; gnus: Wrong unread count in the Group buffer
  2024-05-10  4:00     ` Eric Abrahamsen
@ 2024-05-10  4:14       ` Eric Abrahamsen
  2024-05-10  6:23         ` Eric Abrahamsen
  2024-05-10 11:01         ` James Thomas via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 2 replies; 10+ messages in thread
From: Eric Abrahamsen @ 2024-05-10  4:14 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 70579, jimjoe

Eric Abrahamsen <eric@ericabrahamsen.net> writes:

> Eli Zaretskii <eliz@gnu.org> writes:
>
>> Ping!  Eric, can we make some progress here?
>>
>>> Cc: jimjoe@gmx.net
>>> From: Eric Abrahamsen <eric@ericabrahamsen.net>
>>> Date: Thu, 25 Apr 2024 21:34:45 -0700
>>> 
>>> James Thomas via "Bug reports for GNU Emacs, the Swiss army knife of
>>> text editors" <bug-gnu-emacs@gnu.org> writes:
>>> 
>>> > - (Preferably starting with an empty drafts folder) Compose a message
>>> >   and save it.
>>> > - Open the drafts group, press e on the message and then kill the new
>>> >   buffer; then (incidentally, if you now do '/ N' then this bug does not
>>> >   arise) delete the message (B DEL)
>>> > - Press q
>>> > - The message count is wrong (but can be corrected with M-g)
>>> >
>>> > cf. In gnus.general (gnus-summary-goto-article "87y192lr8f.fsf@gmx.net")
>
> I've made some progress here -- the root of the problem seems to be
> that, when we hit "e" in the draft summary buffer to resume editing a
> draft, Gnus "jumps ahead" in message numbers. Basically what "editing"
> actually means is that the old draft is deleted, and a new draft is
> started, but the new draft has a article number that's the previous
> draft's number + 2, and the "draft" group's active number is also
> inflated (for instance (12 . 14) when it should be (12 . 13)). I was
> also able to get it to jump three numbers in some cases.
>
>>From this point, *any* normal usage will end up correcting the error:
> using "C-c C-k" to kill the editing buffer (instead of "C-x k") or as
> you noted any of the commands that lead to refreshing the unread count.
> But if you don't use any of those commands, you'll see the inflated
> active/unread count when you get back to the *Group* buffer (the "B DEL"
> isn't necessary for the recipe, and in fact at that stage the message
> under point has already been deleted).
>
> That's as far as I've gotten, and I'll keep working on why the article
> number starts off inflated. But in the meantime, the solution is "don't
> do that".

Sorry, that sounded a bit unfriendly, when I was the one who asked you
to submit the bug report! An hour or two of chasing Gnus function calls
will do that to you...





^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#70579: 30.0.50; gnus: Wrong unread count in the Group buffer
  2024-05-10  4:14       ` Eric Abrahamsen
@ 2024-05-10  6:23         ` Eric Abrahamsen
  2024-05-10 11:01         ` James Thomas via Bug reports for GNU Emacs, the Swiss army knife of text editors
  1 sibling, 0 replies; 10+ messages in thread
From: Eric Abrahamsen @ 2024-05-10  6:23 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 70579, jimjoe

[-- Attachment #1: Type: text/plain, Size: 4596 bytes --]

Eric Abrahamsen <eric@ericabrahamsen.net> writes:

> Eric Abrahamsen <eric@ericabrahamsen.net> writes:
>
>> Eli Zaretskii <eliz@gnu.org> writes:
>>
>>> Ping!  Eric, can we make some progress here?
>>>
>>>> Cc: jimjoe@gmx.net
>>>> From: Eric Abrahamsen <eric@ericabrahamsen.net>
>>>> Date: Thu, 25 Apr 2024 21:34:45 -0700
>>>> 
>>>> James Thomas via "Bug reports for GNU Emacs, the Swiss army knife of
>>>> text editors" <bug-gnu-emacs@gnu.org> writes:
>>>> 
>>>> > - (Preferably starting with an empty drafts folder) Compose a message
>>>> >   and save it.
>>>> > - Open the drafts group, press e on the message and then kill the new
>>>> >   buffer; then (incidentally, if you now do '/ N' then this bug does not
>>>> >   arise) delete the message (B DEL)
>>>> > - Press q
>>>> > - The message count is wrong (but can be corrected with M-g)
>>>> >
>>>> > cf. In gnus.general (gnus-summary-goto-article "87y192lr8f.fsf@gmx.net")
>>
>> I've made some progress here -- the root of the problem seems to be
>> that, when we hit "e" in the draft summary buffer to resume editing a
>> draft, Gnus "jumps ahead" in message numbers. Basically what "editing"
>> actually means is that the old draft is deleted, and a new draft is
>> started, but the new draft has a article number that's the previous
>> draft's number + 2, and the "draft" group's active number is also
>> inflated (for instance (12 . 14) when it should be (12 . 13)). I was
>> also able to get it to jump three numbers in some cases.
>>
>>>>From this point, *any* normal usage will end up correcting the error:
>> using "C-c C-k" to kill the editing buffer (instead of "C-x k") or as
>> you noted any of the commands that lead to refreshing the unread count.
>> But if you don't use any of those commands, you'll see the inflated
>> active/unread count when you get back to the *Group* buffer (the "B DEL"
>> isn't necessary for the recipe, and in fact at that stage the message
>> under point has already been deleted).
>>
>> That's as far as I've gotten, and I'll keep working on why the article
>> number starts off inflated. But in the meantime, the solution is "don't
>> do that".
>
> Sorry, that sounded a bit unfriendly, when I was the one who asked you
> to submit the bug report! An hour or two of chasing Gnus function calls
> will do that to you...

Okay, I found two things, one the proximate cause of this bug, another
"probably wrong" adjacent issue.

The main problem is that `gnus-draft-setup' both calls `message-mode'
(which calls `message-set-auto-save-file-name'), and then directly calls
`message-set-auto-save-file-name' itself. Without getting into horrible
details, that functions shouldn't be called twice, because it generates
an extra numerical file name, which ends up inflating the active value
of the drafts group.

I've attached a patch that removes the second call. If you feel
comfortable applying and testing patches, I hope you'll try it. In my
experiments it fixes the problem.

The patch also semi-addresses the second issue. When saving a draft,
message-mode only buries the buffer, it doesn't delete it. If you go
back and start editing the draft, `gnus-draft-check-draft-articles' is
supposed to see if a there's already a buffer visiting the draft file,
and return you to that buffer instead of creating a new one. But it only
does that if the buffer is modified, which it isn't if you've
saved/buried the draft.

I don't see why that should mean that you need a whole new buffer for
editing the message, and the fact that there are now two "copies" of the
message buffer causes further problems with the inflating article
numbers (why I could sometimes see three or even four "jumps").

The patch removes the check for modification, and in my brief testing
behaves the way I would expect it to.

That whole part of the code is weird:

    (let ((buffers (buffer-list))
	  file buffs buff)
      (save-current-buffer
	(while (and articles
		    (not buff))
	  (setq file (nndraft-article-filename (pop articles))
		buffs buffers)
	  (while buffs
	    (set-buffer (setq buff (pop buffs)))
	    (if (and buffer-file-name
		     (equal (file-remote-p file)
			    (file-remote-p buffer-file-name))
		     (string-equal (file-truename buffer-file-name)
				   (file-truename file))
		     ; (buffer-modified-p)
                     )
		(setq buffs nil)
	      (setq buff nil)))))

That seems like a very long way of writing `find-buffer-visiting'. Maybe
the remote check should be carried over, but otherwise this seems very
replaceable.

Anyway, please let me know if you can check the patch.

Eric

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: gnus-draft-fixes.diff --]
[-- Type: text/x-patch, Size: 928 bytes --]

diff --git a/lisp/gnus/gnus-draft.el b/lisp/gnus/gnus-draft.el
index 1fc2b33fffb..406ff705f3d 100644
--- a/lisp/gnus/gnus-draft.el
+++ b/lisp/gnus/gnus-draft.el
@@ -262,8 +262,7 @@ gnus-draft-setup
             (setq ga
                   (message-fetch-field gnus-draft-meta-information-header)))
           (insert mail-header-separator)
-          (forward-line 1)
-          (message-set-auto-save-file-name))))
+          (forward-line 1))))
     (gnus-backlog-remove-article group narticle)
     (when (and ga
                (ignore-errors (setq ga (car (read-from-string ga)))))
@@ -303,8 +302,7 @@ gnus-draft-check-draft-articles
 		     (equal (file-remote-p file)
 			    (file-remote-p buffer-file-name))
 		     (string-equal (file-truename buffer-file-name)
-				   (file-truename file))
-		     (buffer-modified-p))
+				   (file-truename file)))
 		(setq buffs nil)
 	      (setq buff nil)))))
       (when buff

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* bug#70579: 30.0.50; gnus: Wrong unread count in the Group buffer
  2024-05-10  4:14       ` Eric Abrahamsen
  2024-05-10  6:23         ` Eric Abrahamsen
@ 2024-05-10 11:01         ` James Thomas via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2024-05-10 11:58           ` James Thomas via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2024-05-10 15:49           ` Eric Abrahamsen
  1 sibling, 2 replies; 10+ messages in thread
From: James Thomas via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-05-10 11:01 UTC (permalink / raw)
  To: 70579; +Cc: Eric Abrahamsen, Eli Zaretskii

Eric Abrahamsen wrote:

> Eli Zaretskii <eliz@gnu.org> writes:
>
>> Ping!  Eric, can we make some progress here?
>>
>>> From: Eric Abrahamsen <eric@ericabrahamsen.net>
>>> Date: Thu, 25 Apr 2024 21:34:45 -0700
>>> 
>>> James Thomas via "Bug reports for GNU Emacs, the Swiss army knife of
>>> text editors" <bug-gnu-emacs@gnu.org> writes:
>>> 
>>> > - (Preferably starting with an empty drafts folder) Compose a message
>>> >   and save it.
>>> > - Open the drafts group, press e on the message and then kill the new
>>> >   buffer; then (incidentally, if you now do '/ N' then this bug does not
>>> >   arise) delete the message (B DEL)
>>> > - Press q
>>> > - The message count is wrong (but can be corrected with M-g)
>>> >
>>> > cf. In gnus.general (gnus-summary-goto-article "87y192lr8f.fsf@gmx.net")
>
> I've made some progress here -- the root of the problem seems to be
> that, when we hit "e" in the draft summary buffer to resume editing a
> draft, Gnus "jumps ahead" in message numbers. Basically what "editing"
> actually means is that the old draft is deleted, and a new draft is
> started, but the new draft has a article number that's the previous
> draft's number + 2, and the "draft" group's active number is also
> inflated (for instance (12 . 14) when it should be (12 . 13)). I was
> also able to get it to jump three numbers in some cases.
>
> From this point, *any* normal usage will end up correcting the error:
> using "C-c C-k" to kill the editing buffer (instead of "C-x k") or as
> you noted any of the commands that lead to refreshing the unread count.
> But if you don't use any of those commands, you'll see the inflated
> active/unread count when you get back to the *Group* buffer (the "B DEL"
> isn't necessary for the recipe, and in fact at that stage the message
> under point has already been deleted).
>
> That's as far as I've gotten, and I'll keep working on why the article
> number starts off inflated. But in the meantime, the solution is "don't
> do that".

Of course. I was only hoping that this would shed some light on the
other unread-count problems.... IMO this is low-severity.

> Sorry, that sounded a bit unfriendly, when I was the one who asked you
> to submit the bug report! An hour or two of chasing Gnus function calls
> will do that to you...

A more-than-reasonable trade-off of expressiveness for the ultimate
cause. 🙂

>>> I've made some progress here -- the root of the problem seems to be
>>> that, when we hit "e" in the draft summary buffer to resume editing a
>>> draft, Gnus "jumps ahead" in message numbers. Basically what "editing"
>>> actually means is that the old draft is deleted, and a new draft is
>>> started, but the new draft has a article number that's the previous
>>> draft's number + 2, and the "draft" group's active number is also
>>> inflated (for instance (12 . 14) when it should be (12 . 13)). I was
>>> also able to get it to jump three numbers in some cases.
>>>
>>>>>From this point, *any* normal usage will end up correcting the error:
>>> using "C-c C-k" to kill the editing buffer (instead of "C-x k") or as
>>> you noted any of the commands that lead to refreshing the unread count.
>>> But if you don't use any of those commands, you'll see the inflated
>>> active/unread count when you get back to the *Group* buffer (the "B DEL"
>>> isn't necessary for the recipe, and in fact at that stage the message
>>> under point has already been deleted).
>>>
>>> That's as far as I've gotten, and I'll keep working on why the article
>>> number starts off inflated. But in the meantime, the solution is "don't
>>> do that".
>>
>> Sorry, that sounded a bit unfriendly, when I was the one who asked you
>> to submit the bug report! An hour or two of chasing Gnus function calls
>> will do that to you...
>
> Okay, I found two things, one the proximate cause of this bug, another
> "probably wrong" adjacent issue.
>
> The main problem is that `gnus-draft-setup' both calls `message-mode'
> (which calls `message-set-auto-save-file-name'), and then directly calls
> `message-set-auto-save-file-name' itself. Without getting into horrible
> details, that functions shouldn't be called twice, because it generates
> an extra numerical file name, which ends up inflating the active value
> of the drafts group.
>
> I've attached a patch that removes the second call. If you feel
> comfortable applying and testing patches, I hope you'll try it. In my
> experiments it fixes the problem.
>
> The patch also semi-addresses the second issue. When saving a draft,
> message-mode only buries the buffer, it doesn't delete it. If you go
> back and start editing the draft, `gnus-draft-check-draft-articles' is
> supposed to see if a there's already a buffer visiting the draft file,
> and return you to that buffer instead of creating a new one. But it only
> does that if the buffer is modified, which it isn't if you've
> saved/buried the draft.
>
> I don't see why that should mean that you need a whole new buffer for
> editing the message

I can see a possible use case: you might want two versions of a draft
message, one being a 'root' (or 'base') version.

> , and the fact that there are now two "copies" of the
> message buffer causes further problems with the inflating article
> numbers (why I could sometimes see three or even four "jumps").
>
> The patch removes the check for modification

If my guess above is correct, this should be avoided.

> Anyway, please let me know if you can check the patch.

So I checked only the first hunk, and it worked, but seems to have
caused another problem: If I now open the group and view an existing
draft with RET, and then 'q', the message disappears - in both the
count, and if the group is reopened. M-g reverts things back to normal.

There's also a small hiccup with its working: 'B DEL' in the recipe
above does not work (i.e. it's not deleted - is it related to it already
being marked with 'G' at that point?), unless I 'q', re-enter and retry.

Regards,
James





^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#70579: 30.0.50; gnus: Wrong unread count in the Group buffer
  2024-05-10 11:01         ` James Thomas via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-05-10 11:58           ` James Thomas via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2024-05-10 12:37             ` James Thomas via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2024-05-10 15:49           ` Eric Abrahamsen
  1 sibling, 1 reply; 10+ messages in thread
From: James Thomas via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-05-10 11:58 UTC (permalink / raw)
  To: 70579; +Cc: Eric Abrahamsen, Eli Zaretskii

James Thomas wrote:

> So I checked only the first hunk, and it worked, but seems to have
> caused another problem: If I now open the group and view an existing
> draft with RET, and then 'q', the message disappears - in both the
> count, and if the group is reopened. M-g reverts things back to normal.

How silly of me! That is because, well, it is not unread anymore.

> There's also a small hiccup with its working: 'B DEL' in the recipe
> above does not work (i.e. it's not deleted - is it related to it already
> being marked with 'G' at that point?), unless I 'q', re-enter and retry.

This issue remains.

Regards,
James





^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#70579: 30.0.50; gnus: Wrong unread count in the Group buffer
  2024-05-10 11:58           ` James Thomas via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-05-10 12:37             ` James Thomas via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 0 replies; 10+ messages in thread
From: James Thomas via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-05-10 12:37 UTC (permalink / raw)
  To: 70579; +Cc: Eric Abrahamsen, Eli Zaretskii

James Thomas wrote:

>> There's also a small hiccup with its working: 'B DEL' in the recipe
>> above does not work (i.e. it's not deleted - is it related to it already
>> being marked with 'G' at that point?), unless I 'q', re-enter and retry.
>
> This issue remains.

I'm mistaken about this too. I missed your explanation:

Eric Abrahamsen wrote:

> (the "B DEL" isn't necessary for the recipe, and in fact at that stage
> the message under point has already been deleted).

Regards,
James





^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#70579: 30.0.50; gnus: Wrong unread count in the Group buffer
  2024-05-10 11:01         ` James Thomas via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2024-05-10 11:58           ` James Thomas via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-05-10 15:49           ` Eric Abrahamsen
  1 sibling, 0 replies; 10+ messages in thread
From: Eric Abrahamsen @ 2024-05-10 15:49 UTC (permalink / raw)
  To: 70579

James Thomas via "Bug reports for GNU Emacs, the Swiss army knife of
text editors" <bug-gnu-emacs@gnu.org> writes:


[...]

> Of course. I was only hoping that this would shed some light on the
> other unread-count problems.... IMO this is low-severity.

That was my hope too, bummer that it's its own bug. But still worth fixing.


[...]

>> I don't see why that should mean that you need a whole new buffer for
>> editing the message
>
> I can see a possible use case: you might want two versions of a draft
> message, one being a 'root' (or 'base') version.
>
>> , and the fact that there are now two "copies" of the
>> message buffer causes further problems with the inflating article
>> numbers (why I could sometimes see three or even four "jumps").
>>
>> The patch removes the check for modification
>
> If my guess above is correct, this should be avoided.

Hmm, I guess so, though I wonder how many people are making use of the
ability to have two copies, vs how many are confused by it. But
I suppose it ain't broke, so I shouldn't fix it. I do think I'll update
the code to use `find-buffer-visiting', though.

>> Anyway, please let me know if you can check the patch.

[...]

>>> There's also a small hiccup with its working: 'B DEL' in the recipe
>>> above does not work (i.e. it's not deleted - is it related to it already
>>> being marked with 'G' at that point?), unless I 'q', re-enter and retry.
>>
>> This issue remains.
>
> I'm mistaken about this too. I missed your explanation:
>
> Eric Abrahamsen wrote:
>
>> (the "B DEL" isn't necessary for the recipe, and in fact at that stage
>> the message under point has already been deleted).

The UX is fairly confusing, but it makes more sense if you remember that
"edit" is actually just "delete-and-create". And if you use "C-c C-k" as
intended :)

Okay, there may be more bugs here, but I'll put this much in and close
the report; please open a new report if you find more.

Thanks,
Eric






^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2024-05-10 15:49 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-04-26  3:32 bug#70579: 30.0.50; gnus: Wrong unread count in the Group buffer James Thomas via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-04-26  4:34 ` Eric Abrahamsen
2024-05-09  7:19   ` Eli Zaretskii
2024-05-10  4:00     ` Eric Abrahamsen
2024-05-10  4:14       ` Eric Abrahamsen
2024-05-10  6:23         ` Eric Abrahamsen
2024-05-10 11:01         ` James Thomas via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-05-10 11:58           ` James Thomas via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-05-10 12:37             ` James Thomas via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-05-10 15:49           ` Eric Abrahamsen

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.