GNU bug report logs -
#53877
29.0.50; [PATCH] async Gnus/nnml
Previous Next
To reply to this bug, email your comments to 53877 AT debbugs.gnu.org.
Toggle the display of automated, internal messages from the tracker.
Report forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#53877
; Package
emacs
.
(Tue, 08 Feb 2022 14:23:01 GMT)
Full text and
rfc822 format available.
Acknowledgement sent
to
Manuel Giraud <manuel <at> ledu-giraud.fr>
:
New bug report received and forwarded. Copy sent to
bug-gnu-emacs <at> gnu.org
.
(Tue, 08 Feb 2022 14:23:02 GMT)
Full text and
rfc822 format available.
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
Hi,
I'm trying to have an asynchronous Gnus nnml backend. In the process, I
found some things that I'd like to have first in nnmail.el and
mail-sources.el (see patches).
There is nothing asynchronous so far so Gnus behaviour shouldn't have
changed that much.
Best regards,
[0001-just-use-temp-buffer-for-nnmail-article-buffer.patch (text/x-patch, attachment)]
[0002-uniquify-mail-source-crash-box-on-each-different-mai.patch (text/x-patch, attachment)]
[0003-mutex-on-nnmail-cache.patch (text/x-patch, attachment)]
[0004-separate-update-unread-of-group.patch (text/x-patch, attachment)]
[Message part 6 (text/plain, inline)]
In GNU Emacs 29.0.50 (build 1, x86_64-unknown-openbsd7.0, X toolkit, cairo version 1.17.4, Xaw scroll bars)
of 2022-02-08 built on elite.giraud
Repository revision: 798555baaa3f4afca663a6ac29bc42bf313144bc
Repository branch: mgi-gnus2
Windowing system distributor 'The X.Org Foundation', version 11.0.12101001
System Description: OpenBSD elite.giraud 7.0 GENERIC.MP#314 amd64
Configured using:
'configure --prefix=/home/manuel/emacs --bindir=/home/manuel/bin
--with-x-toolkit=athena --without-sound --without-compress-install
CPPFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib'
Configured features:
CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GSETTINGS HARFBUZZ JPEG JSON
LCMS2 LIBOTF LIBXML2 M17N_FLT MODULES NOTIFY KQUEUE PDUMPER PNG RSVG
SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS WEBP X11 XDBE XIM XPM LUCID
ZLIB
Important settings:
value of $LC_ALL: en_US.UTF-8
locale-coding-system: utf-8-unix
Major mode: Magit
Minor modes in effect:
global-git-commit-mode: t
magit-auto-revert-mode: t
icomplete-mode: t
display-time-mode: t
shell-dirtrack-mode: t
repeat-mode: t
global-eldoc-mode: t
show-paren-mode: t
electric-indent-mode: t
mouse-wheel-mode: t
menu-bar-mode: t
file-name-shadow-mode: t
global-font-lock-mode: t
font-lock-mode: t
auto-composition-mode: t
auto-encryption-mode: t
auto-compression-mode: t
buffer-read-only: t
line-number-mode: t
indent-tabs-mode: t
transient-mark-mode: t
Load-path shadows:
/home/manuel/.el/google-maps.el/google-maps hides /home/manuel/.el/google-maps
/home/manuel/.emacs.d/elpa/transient-20220130.1941/transient hides /home/manuel/emacs/share/emacs/29.0.50/lisp/transient
~/emacs-repo/lisp/gnus/gnus-uu hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/gnus-uu
~/emacs-repo/lisp/gnus/gnus-fun hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/gnus-fun
~/emacs-repo/lisp/gnus/spam hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/spam
~/emacs-repo/lisp/gnus/spam-wash hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/spam-wash
~/emacs-repo/lisp/gnus/spam-stat hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/spam-stat
~/emacs-repo/lisp/gnus/spam-report hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/spam-report
~/emacs-repo/lisp/gnus/smime hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/smime
~/emacs-repo/lisp/gnus/smiley hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/smiley
~/emacs-repo/lisp/gnus/score-mode hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/score-mode
~/emacs-repo/lisp/gnus/nnweb hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/nnweb
~/emacs-repo/lisp/gnus/gnus-rmail hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/gnus-rmail
~/emacs-repo/lisp/gnus/nnvirtual hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/nnvirtual
~/emacs-repo/lisp/gnus/nntp hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/nntp
~/emacs-repo/lisp/gnus/nnspool hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/nnspool
~/emacs-repo/lisp/gnus/nnselect hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/nnselect
~/emacs-repo/lisp/gnus/nnrss hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/nnrss
~/emacs-repo/lisp/gnus/nnregistry hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/nnregistry
~/emacs-repo/lisp/gnus/nnoo hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/nnoo
~/emacs-repo/lisp/gnus/nnnil hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/nnnil
~/emacs-repo/lisp/gnus/nnml hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/nnml
~/emacs-repo/lisp/gnus/nnmh hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/nnmh
~/emacs-repo/lisp/gnus/nnmbox hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/nnmbox
~/emacs-repo/lisp/gnus/nnmairix hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/nnmairix
~/emacs-repo/lisp/gnus/gnus-delay hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/gnus-delay
~/emacs-repo/lisp/gnus/nnmaildir hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/nnmaildir
~/emacs-repo/lisp/gnus/nndoc hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/nndoc
~/emacs-repo/lisp/gnus/mml1991 hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/mml1991
~/emacs-repo/lisp/gnus/mml-smime hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/mml-smime
~/emacs-repo/lisp/gnus/gnus-win hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/gnus-win
~/emacs-repo/lisp/gnus/gnus-topic hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/gnus-topic
~/emacs-repo/lisp/gnus/nngateway hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/nngateway
~/emacs-repo/lisp/gnus/nndraft hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/nndraft
~/emacs-repo/lisp/gnus/nndir hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/nndir
~/emacs-repo/lisp/gnus/nndiary hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/nndiary
~/emacs-repo/lisp/gnus/mm-util hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/mm-util
~/emacs-repo/lisp/gnus/mm-extern hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/mm-extern
~/emacs-repo/lisp/gnus/mm-partial hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/mm-partial
~/emacs-repo/lisp/gnus/mm-encode hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/mm-encode
~/emacs-repo/lisp/gnus/mm-bodies hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/mm-bodies
~/emacs-repo/lisp/gnus/gnus-vm hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/gnus-vm
~/emacs-repo/lisp/gnus/gnus-undo hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/gnus-undo
~/emacs-repo/lisp/gnus/gnus-spec hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/gnus-spec
~/emacs-repo/lisp/gnus/gnus-salt hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/gnus-salt
~/emacs-repo/lisp/gnus/gnus-rfc1843 hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/gnus-rfc1843
~/emacs-repo/lisp/gnus/gnus-range hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/gnus-range
~/emacs-repo/lisp/gnus/gnus-picon hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/gnus-picon
~/emacs-repo/lisp/gnus/gnus-notifications hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/gnus-notifications
~/emacs-repo/lisp/gnus/gnus-group hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/gnus-group
~/emacs-repo/lisp/gnus/deuglify hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/deuglify
~/emacs-repo/lisp/gnus/canlock hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/canlock
~/emacs-repo/lisp/gnus/gnus-util hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/gnus-util
~/emacs-repo/lisp/gnus/gnus-mlspl hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/gnus-mlspl
~/emacs-repo/lisp/gnus/gnus-ml hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/gnus-ml
~/emacs-repo/lisp/gnus/gnus-mh hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/gnus-mh
~/emacs-repo/lisp/gnus/gnus-logic hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/gnus-logic
~/emacs-repo/lisp/gnus/gnus-html hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/gnus-html
~/emacs-repo/lisp/gnus/gnus-dup hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/gnus-dup
~/emacs-repo/lisp/gnus/gnus-eform hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/gnus-eform
~/emacs-repo/lisp/gnus/gnus-diary hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/gnus-diary
~/emacs-repo/lisp/gnus/gnus-demon hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/gnus-demon
~/emacs-repo/lisp/gnus/gnus-cus hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/gnus-cus
~/emacs-repo/lisp/gnus/gnus-cite hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/gnus-cite
~/emacs-repo/lisp/gnus/gnus-bcklg hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/gnus-bcklg
~/emacs-repo/lisp/gnus/gnus-score hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/gnus-score
~/emacs-repo/lisp/gnus/gnus-msg hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/gnus-msg
~/emacs-repo/lisp/gnus/gnus hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/gnus
~/emacs-repo/lisp/gnus/gnus-dired hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/gnus-dired
~/emacs-repo/lisp/gnus/gnus-bookmark hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/gnus-bookmark
~/emacs-repo/lisp/gnus/gnus-agent hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/gnus-agent
~/emacs-repo/lisp/gnus/mml hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/mml
~/emacs-repo/lisp/gnus/nneething hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/nneething
~/emacs-repo/lisp/gnus/mml-sec hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/mml-sec
~/emacs-repo/lisp/gnus/mm-url hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/mm-url
~/emacs-repo/lisp/gnus/mail-source hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/mail-source
~/emacs-repo/lisp/gnus/gnus-sieve hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/gnus-sieve
~/emacs-repo/lisp/gnus/nnfolder hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/nnfolder
~/emacs-repo/lisp/gnus/mm-decode hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/mm-decode
~/emacs-repo/lisp/gnus/gnus-srvr hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/gnus-srvr
~/emacs-repo/lisp/gnus/gnus-start hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/gnus-start
~/emacs-repo/lisp/gnus/gnus-draft hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/gnus-draft
~/emacs-repo/lisp/gnus/gnus-cloud hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/gnus-cloud
~/emacs-repo/lisp/gnus/gnus-cache hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/gnus-cache
~/emacs-repo/lisp/gnus/nnbabyl hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/nnbabyl
~/emacs-repo/lisp/gnus/gnus-registry hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/gnus-registry
~/emacs-repo/lisp/gnus/mm-view hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/mm-view
~/emacs-repo/lisp/gnus/message hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/message
~/emacs-repo/lisp/gnus/nnmail hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/nnmail
~/emacs-repo/lisp/gnus/nnimap hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/nnimap
~/emacs-repo/lisp/gnus/nnheader hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/nnheader
~/emacs-repo/lisp/gnus/nnagent hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/nnagent
~/emacs-repo/lisp/gnus/gnus-search hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/gnus-search
~/emacs-repo/lisp/gnus/gnus-art hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/gnus-art
~/emacs-repo/lisp/gnus/gnus-dbus hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/gnus-dbus
~/emacs-repo/lisp/gnus/gnus-sum hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/gnus-sum
~/emacs-repo/lisp/gnus/gnus-async hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/gnus-async
~/emacs-repo/lisp/gnus/mml2015 hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/mml2015
~/emacs-repo/lisp/gnus/mm-uu hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/mm-uu
~/emacs-repo/lisp/gnus/mm-archive hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/mm-archive
~/emacs-repo/lisp/gnus/legacy-gnus-agent hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/legacy-gnus-agent
~/emacs-repo/lisp/gnus/gnus-icalendar hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/gnus-icalendar
~/emacs-repo/lisp/gnus/gssapi hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/gssapi
~/emacs-repo/lisp/gnus/gnus-int hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/gnus-int
~/emacs-repo/lisp/gnus/gnus-kill hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/gnus-kill
~/emacs-repo/lisp/gnus/gnus-gravatar hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/gnus-gravatar
~/emacs-repo/lisp/gnus/gmm-utils hides /home/manuel/emacs/share/emacs/29.0.50/lisp/gnus/gmm-utils
Features:
(goto-addr view cal-china lunar solar cal-dst cal-bahai cal-islam
cal-hebrew holidays hol-loaddefs cal-iso org-element avl-tree ol-eww eww
xdg url-queue ol-rmail ol-mhe ol-irc ol-info ol-gnus nnselect
gnus-search eieio-opt speedbar ezimage dframe ol-docview ol-bibtex
ol-bbdb ol-w3m ol-doi org-link-doi org-agenda org-refile shadow shortdoc
emacsbug whitespace magit-patch gnus-dired cl-print dabbrev rmail
magit-extras face-remap magit-submodule magit-obsolete magit-blame
magit-stash magit-reflog magit-bisect magit-push magit-pull magit-fetch
magit-clone magit-remote magit-commit magit-sequence magit-notes
magit-worktree magit-tag magit-merge magit-branch magit-reset
magit-files magit-refs magit-status magit magit-repos magit-apply
magit-wip magit-log which-func imenu magit-diff smerge-mode diff
git-commit log-edit pcvs-util add-log magit-core magit-autorevert
autorevert filenotify magit-margin magit-transient magit-process
with-editor magit-mode transient magit-git magit-section magit-utils
dash pulse help-fns radix-tree misearch multi-isearch vc-git diff-mode
bug-reference executable mailalias bbdb-message vc-dispatcher vc-svn
sort gnus-cite mail-extr textsec uni-scripts idna-mapping ucs-normalize
uni-confusable textsec-check gnus-async gnus-bcklg gnus-ml gnus-topic
mm-archive url-http url-gw url-auth qp utf-7 imap rfc2104 nnrss mm-url
nndoc nndraft nnmh gnutls network-stream nsm nnfolder bbdb-gnus nnml
gnus-agent gnus-srvr gnus-score score-mode nnvirtual gnus-msg nntp
gnus-cache w3m w3m-hist w3m-fb bookmark-w3m w3m-ems w3m-favicon
w3m-image tab-line w3m-proc w3m-util cl-extra help-mode paredit edmacro
icomplete time battery cus-load exwm-randr xcb-randr exwm-config exwm
exwm-input xcb-keysyms exwm-manage exwm-floating xcb-cursor xcb-render
exwm-layout exwm-workspace exwm-core xcb-ewmh xcb-icccm xcb xcb-xkb
xcb-xproto xcb-types xcb-debug kmacro server modus-operandi-theme
modus-themes pcase google-maps google-maps-static google-maps-geocode
google-maps-base osm-mode url-cache mingus libmpdee gnuplot info-look
transmission color calc-bin calc-ext calc calc-loaddefs rect calc-macs
w3m-load mu4e mu4e-org mu4e-main mu4e-view mu4e-view-gnus gnus-art mm-uu
mml2015 mm-view mml-smime smime dig gnus-sum gnus-group gnus-undo
gnus-start gnus-dbus gnus-cloud nnimap nnmail mail-source utf7 netrc
nnoo gnus-spec gnus-int gnus-range gnus-win gnus nnheader range wid-edit
mu4e-view-common mu4e-headers mu4e-compose mu4e-context mu4e-draft
mu4e-actions ido rfc2368 smtpmail sendmail mu4e-mark mu4e-proc
mu4e-utils doc-view jka-compr image-mode exif mu4e-lists mu4e-message
shr pixel-fill kinsoku svg dom flow-fill mule-util hl-line mu4e-vars
message yank-media rmc puny rfc822 mml mml-sec epa derived epg rfc6068
epg-config gnus-util mm-decode mm-bodies mm-encode mail-parse rfc2231
rfc2047 rfc2045 mm-util ietf-drums mail-prsvr mail-utils gmm-utils
mailheader mu4e-meta supercite regi bbdb-anniv diary-lib diary-loaddefs
bbdb-mua bbdb-com crm mailabbrev bbdb bbdb-site timezone org ob
ob-tangle ob-ref ob-lob ob-table ob-exp org-macro org-footnote org-src
ob-comint org-pcomplete org-list org-faces org-entities org-version
ob-emacs-lisp ob-core ob-eval org-table oc-basic bibtex ol rx org-keys
oc org-compat org-macs org-loaddefs find-func cal-menu calendar
cal-loaddefs visual-basic-mode web-mode disp-table erlang-start
smart-tabs-mode skeleton cc-mode cc-fonts cc-guess cc-menus cc-cmds
cc-styles cc-align cc-engine cc-vars cc-defs movitz-slime cl slime-asdf
grep slime-tramp tramp tramp-loaddefs trampver tramp-integration files-x
tramp-compat shell pcomplete parse-time iso8601 time-date ls-lisp
format-spec slime-fancy slime-indentation slime-cl-indent cl-indent
slime-trace-dialog slime-fontifying-fu slime-package-fu slime-references
slime-compiler-notes-tree advice slime-scratch slime-presentations
bridge slime-macrostep macrostep slime-mdot-fu slime-enclosing-context
slime-fuzzy slime-fancy-trace slime-fancy-inspector slime-c-p-c
slime-editing-commands slime-autodoc slime-repl slime-parse slime
compile text-property-search etags fileloop generator xref project
arc-mode archive-mode noutline outline pp comint ansi-color ring
hyperspec thingatpt slime-autoloads dired-aux dired-x dired
dired-loaddefs notifications dbus xml repeat easy-mmode tex-site info
package browse-url url url-proxy url-privacy url-expand url-methods
url-history url-cookie url-domsuf url-util mailcap url-handlers
url-parse auth-source cl-seq eieio eieio-core cl-macs eieio-loaddefs
password-cache json map url-vars seq gv subr-x byte-opt bytecomp
byte-compile cconv cl-loaddefs cl-lib iso-transl tooltip eldoc paren
electric uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel
term/x-win x-win term/common-win x-dnd 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 cl-generic 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 simple abbrev obarray cl-preloaded nadvice
button 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 kqueue lcms2
dynamic-setting system-font-setting font-render-setting cairo x-toolkit
x multi-tty make-network-process emacs)
Memory information:
((conses 16 868893 102442)
(symbols 48 59739 8)
(strings 32 276306 16458)
(string-bytes 1 8495369)
(vectors 16 147772)
(vector-slots 8 2714405 148428)
(floats 8 1138 546)
(intervals 56 12268 4311)
(buffers 992 47))
--
Manuel Giraud
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#53877
; Package
emacs
.
(Tue, 08 Feb 2022 20:35:02 GMT)
Full text and
rfc822 format available.
Message #8 received at submit <at> debbugs.gnu.org (full text, mbox):
Manuel Giraud <manuel <at> ledu-giraud.fr> writes:
> Hi,
>
> I'm trying to have an asynchronous Gnus nnml backend. In the process, I
> found some things that I'd like to have first in nnmail.el and
> mail-sources.el (see patches).
>
> There is nothing asynchronous so far so Gnus behaviour shouldn't have
> changed that much.
Hi Manuel,
Thanks for working on this! Getting rid of `nnmail-article-buffer' looks
fine to me.
In the crash box patch, I wonder if we really need to change the name of
the option. It could be used as-is as a prefix, without really needing
to involve the user. Maybe changing the docstring would be enough?
In mail-source-fetch:
+ (dolist (box (mail-source-existing-crash-boxes))
+ (message "Processing mail from %s..." box)
+ (setq found (mail-source-callback callback box box))
You'll want to use cl-incf on `found' here (as in the other files).
In the nnmail cache mutex patch, I guess we're preparing for multiple
threads to potentially be writing to/reading from `nnmail-cache-buffer',
right? The mutex prevents concurrent access, but are we sure that
leftover text in the buffer won't confuse the regexp searches? Would it
be safer just to clear the buffer altogether after each transaction?
I'm not quite sure why you're refactoring out
`gnus-update-unread-group', is the idea that that will be used in other
places as well? Or is this the function that will get run in a thread
eventually?
Lastly, have you done your copyright assignment?
Thanks,
Eric
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#53877
; Package
emacs
.
(Wed, 09 Feb 2022 08:17:01 GMT)
Full text and
rfc822 format available.
Message #11 received at 53877 <at> debbugs.gnu.org (full text, mbox):
Manuel Giraud <manuel <at> ledu-giraud.fr> writes:
> -(defvar nnmail-article-buffer " *nnmail incoming*"
> - "The buffer used for splitting incoming mails.")
[...]
> - (with-current-buffer (gnus-get-buffer-create nnmail-article-buffer)
> - (erase-buffer)
No, this would break lots of Gnus installations -- people have splitting
rules that go
(: split-on-body)
where that function looks into nnmail-article-buffer to do whatever they
want.
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#53877
; Package
emacs
.
(Wed, 09 Feb 2022 08:21:02 GMT)
Full text and
rfc822 format available.
Message #14 received at 53877 <at> debbugs.gnu.org (full text, mbox):
Manuel Giraud <manuel <at> ledu-giraud.fr> writes:
> -(defcustom mail-source-crash-box "~/.emacs-mail-crash-box"
> - "File where mail will be stored while processing it."
> +(defcustom mail-source-crash-box-prefix "~/.emacs-mail-crash-box-"
> + "Prefix of files where mail will be stored while processing it."
> :type 'file)
Is the point here that we want to have several mail-source-fetchers
going in parallel?
> +(defun mail-source-existing-crash-boxes ()
> + (let ((directory (file-name-directory mail-source-crash-box-prefix))
> + (partial (file-name-nondirectory mail-source-crash-box-prefix)))
> + (mapcar #'(lambda (name) (file-name-concat directory name))
> + (file-name-all-completions partial directory))))
`directory-files' takes a MATCH parameter, and is the way to get
matches -- not the completion machinery.
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#53877
; Package
emacs
.
(Wed, 09 Feb 2022 09:01:02 GMT)
Full text and
rfc822 format available.
Message #17 received at 53877 <at> debbugs.gnu.org (full text, mbox):
>>>>> On Tue, 08 Feb 2022 12:33:54 -0800, Eric Abrahamsen <eric <at> ericabrahamsen.net> said:
Eric> Manuel Giraud <manuel <at> ledu-giraud.fr> writes:
>> Hi,
>>
>> I'm trying to have an asynchronous Gnus nnml backend. In the process, I
>> found some things that I'd like to have first in nnmail.el and
>> mail-sources.el (see patches).
>>
>> There is nothing asynchronous so far so Gnus behaviour shouldn't have
>> changed that much.
Eric> Hi Manuel,
Eric> Thanks for working on this! Getting rid of `nnmail-article-buffer' looks
Eric> fine to me.
My paranoid side says that Iʼd rather have a predictable buffer name
when treating incoming email than a temporary buffer.
Eric> In the crash box patch, I wonder if we really need to change the name of
Eric> the option. It could be used as-is as a prefix, without really needing
Eric> to involve the user. Maybe changing the docstring would be enough?
Right. Backwards compatibility is important.
Robert
--
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#53877
; Package
emacs
.
(Wed, 09 Feb 2022 09:43:01 GMT)
Full text and
rfc822 format available.
Message #20 received at 53877 <at> debbugs.gnu.org (full text, mbox):
Lars Ingebrigtsen <larsi <at> gnus.org> writes:
> Manuel Giraud <manuel <at> ledu-giraud.fr> writes:
>
>> -(defvar nnmail-article-buffer " *nnmail incoming*"
>> - "The buffer used for splitting incoming mails.")
>
> [...]
>
>> - (with-current-buffer (gnus-get-buffer-create nnmail-article-buffer)
>> - (erase-buffer)
>
> No, this would break lots of Gnus installations -- people have splitting
> rules that go
>
> (: split-on-body)
>
> where that function looks into nnmail-article-buffer to do whatever they
> want.
I've just test this with my patch in place:
--8<---------------cut here---------------start------------->8---
(defun foo-split ()
(save-excursion
(save-restriction
(widen)
(goto-char (point-min))
(when (re-search-forward "booga" nil t)
"booga"))))
;; Mail splitting (XXX order is important)
(setq nnmail-split-methods 'nnmail-split-fancy
nnmail-split-fancy
`(| (: foo-split)
"elsewhere"))
--8<---------------cut here---------------end--------------->8---
…and it works as expected: splitting a mail containing "booga" to
"booga". `nnmail-split-it' does not seems to have a reference to
nnmail-buffer-article and just works on the current buffer:
--8<---------------cut here---------------start------------->8---
;; Builtin : operation.
((eq (car split) ':)
(nnmail-log-split split)
(nnmail-split-it (save-excursion (eval (cdr split) t))))
--8<---------------cut here---------------end--------------->8---
--
Manuel Giraud
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#53877
; Package
emacs
.
(Wed, 09 Feb 2022 09:52:02 GMT)
Full text and
rfc822 format available.
Message #23 received at 53877 <at> debbugs.gnu.org (full text, mbox):
Manuel Giraud <manuel <at> ledu-giraud.fr> writes:
> I've just test this with my patch in place:
People have code like
(defun split-on-body ()
(save-excursion
(set-buffer nnmail-article-buffer)
(goto-char (point-min))
(let ((case-fold-search t))
(cond
((re-search-forward
...
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#53877
; Package
emacs
.
(Wed, 09 Feb 2022 09:53:02 GMT)
Full text and
rfc822 format available.
Message #26 received at 53877 <at> debbugs.gnu.org (full text, mbox):
Lars Ingebrigtsen <larsi <at> gnus.org> writes:
> Manuel Giraud <manuel <at> ledu-giraud.fr> writes:
>
>> -(defcustom mail-source-crash-box "~/.emacs-mail-crash-box"
>> - "File where mail will be stored while processing it."
>> +(defcustom mail-source-crash-box-prefix "~/.emacs-mail-crash-box-"
>> + "Prefix of files where mail will be stored while processing it."
>> :type 'file)
>
> Is the point here that we want to have several mail-source-fetchers
> going in parallel?
Yes that's the point. After those patches, I've started to work on
moving `mail-source-fetch' from «callback method» to «process+sentinel
method». So far, I have done most simple ones: "file" and "directory"
sources.
>> +(defun mail-source-existing-crash-boxes ()
>> + (let ((directory (file-name-directory mail-source-crash-box-prefix))
>> + (partial (file-name-nondirectory mail-source-crash-box-prefix)))
>> + (mapcar #'(lambda (name) (file-name-concat directory name))
>> + (file-name-all-completions partial directory))))
>
> `directory-files' takes a MATCH parameter, and is the way to get
> matches -- not the completion machinery.
Thanks, I'll change that.
--
Manuel Giraud
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#53877
; Package
emacs
.
(Wed, 09 Feb 2022 10:40:02 GMT)
Full text and
rfc822 format available.
Message #29 received at 53877 <at> debbugs.gnu.org (full text, mbox):
Lars Ingebrigtsen <larsi <at> gnus.org> writes:
> People have code like
>
> (defun split-on-body ()
> (save-excursion
> (set-buffer nnmail-article-buffer)
> (goto-char (point-min))
> (let ((case-fold-search t))
> (cond
> ((re-search-forward
> ...
Ouch! Too bad because I don't think I could achieve multiple mail-source
fetchers in parallel without it. OTOH, this is not the example in the
info file which is correct.
--
Manuel Giraud
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#53877
; Package
emacs
.
(Wed, 09 Feb 2022 10:42:01 GMT)
Full text and
rfc822 format available.
Message #32 received at 53877 <at> debbugs.gnu.org (full text, mbox):
Manuel Giraud <manuel <at> ledu-giraud.fr> writes:
> Ouch! Too bad because I don't think I could achieve multiple mail-source
> fetchers in parallel without it.
Why can't you bind `nnmail-article-buffer' before calling the splitting
function?
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#53877
; Package
emacs
.
(Wed, 09 Feb 2022 10:48:01 GMT)
Full text and
rfc822 format available.
Message #35 received at 53877 <at> debbugs.gnu.org (full text, mbox):
Lars Ingebrigtsen <larsi <at> gnus.org> writes:
> Manuel Giraud <manuel <at> ledu-giraud.fr> writes:
>
>> Ouch! Too bad because I don't think I could achieve multiple mail-source
>> fetchers in parallel without it.
>
> Why can't you bind `nnmail-article-buffer' before calling the splitting
> function?
Ah yes of course 😅. Should I resubmit modified patch on this bug report?
--
Manuel Giraud
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#53877
; Package
emacs
.
(Wed, 09 Feb 2022 10:51:01 GMT)
Full text and
rfc822 format available.
Message #38 received at 53877 <at> debbugs.gnu.org (full text, mbox):
Manuel Giraud <manuel <at> ledu-giraud.fr> writes:
> Ah yes of course 😅. Should I resubmit modified patch on this bug report?
Yes, please.
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#53877
; Package
emacs
.
(Wed, 09 Feb 2022 12:31:02 GMT)
Full text and
rfc822 format available.
Message #41 received at 53877 <at> debbugs.gnu.org (full text, mbox):
Lars Ingebrigtsen <larsi <at> gnus.org> writes:
> Why can't you bind `nnmail-article-buffer' before calling the splitting
> function?
I spoke too quickly. The idea was that with a temporay buffer I could
run multiple splitting in "parallel". But rebinding just *one* global
variable won't help much here.
--
Manuel Giraud
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#53877
; Package
emacs
.
(Wed, 09 Feb 2022 16:36:01 GMT)
Full text and
rfc822 format available.
Message #44 received at 53877 <at> debbugs.gnu.org (full text, mbox):
Manuel Giraud <manuel <at> ledu-giraud.fr> writes:
> Lars Ingebrigtsen <larsi <at> gnus.org> writes:
>
>> Why can't you bind `nnmail-article-buffer' before calling the splitting
>> function?
>
> I spoke too quickly. The idea was that with a temporay buffer I could
> run multiple splitting in "parallel". But rebinding just *one* global
> variable won't help much here.
Are you sure? AFAIK this was Dick Chiang's approach to threading server
updates: let-binding the value of `nntp-server-buffer' within the thread
function. As far as I know it worked okay. The splitting function and
code run within it will have a separate value of
`nnmail-article-buffer'.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#53877
; Package
emacs
.
(Wed, 09 Feb 2022 20:27:01 GMT)
Full text and
rfc822 format available.
Message #47 received at 53877 <at> debbugs.gnu.org (full text, mbox):
Manuel Giraud <manuel <at> ledu-giraud.fr> writes:
> Yes that's the point. After those patches, I've started to work on
> moving `mail-source-fetch' from «callback method» to «process+sentinel
> method». So far, I have done most simple ones: "file" and "directory"
> sources.
Ah, right. Yeah, I think that's probably a good place to start.
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#53877
; Package
emacs
.
(Thu, 10 Feb 2022 09:04:02 GMT)
Full text and
rfc822 format available.
Message #50 received at 53877 <at> debbugs.gnu.org (full text, mbox):
Eric Abrahamsen <eric <at> ericabrahamsen.net> writes:
> Manuel Giraud <manuel <at> ledu-giraud.fr> writes:
>
>> Lars Ingebrigtsen <larsi <at> gnus.org> writes:
>>
>>> Why can't you bind `nnmail-article-buffer' before calling the splitting
>>> function?
>>
>> I spoke too quickly. The idea was that with a temporay buffer I could
>> run multiple splitting in "parallel". But rebinding just *one* global
>> variable won't help much here.
>
> Are you sure? AFAIK this was Dick Chiang's approach to threading
> server updates: let-binding the value of `nntp-server-buffer' within
> the thread function. As far as I know it worked okay. The splitting
> function and code run within it will have a separate value of
> `nnmail-article-buffer'.
I'm trying another approach: seek to the processes in the backend, don't
wait for them to end but instead attach sentinels for what's left to
do. Maybe it is not the best approach because Gnus seems to be heavily
stateful/serial.
I'm not sure about binding in sentinels: do you think it would work as
binding in threads?
--
Manuel Giraud
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#53877
; Package
emacs
.
(Thu, 10 Feb 2022 18:13:02 GMT)
Full text and
rfc822 format available.
Message #53 received at 53877 <at> debbugs.gnu.org (full text, mbox):
On 02/10/22 10:02 AM, Manuel Giraud wrote:
> Eric Abrahamsen <eric <at> ericabrahamsen.net> writes:
>
>> Manuel Giraud <manuel <at> ledu-giraud.fr> writes:
>>
>>> Lars Ingebrigtsen <larsi <at> gnus.org> writes:
>>>
>>>> Why can't you bind `nnmail-article-buffer' before calling the splitting
>>>> function?
>>>
>>> I spoke too quickly. The idea was that with a temporay buffer I could
>>> run multiple splitting in "parallel". But rebinding just *one* global
>>> variable won't help much here.
>>
>> Are you sure? AFAIK this was Dick Chiang's approach to threading
>> server updates: let-binding the value of `nntp-server-buffer' within
>> the thread function. As far as I know it worked okay. The splitting
>> function and code run within it will have a separate value of
>> `nnmail-article-buffer'.
>
> I'm trying another approach: seek to the processes in the backend, don't
> wait for them to end but instead attach sentinels for what's left to
> do. Maybe it is not the best approach because Gnus seems to be heavily
> stateful/serial.
>
> I'm not sure about binding in sentinels: do you think it would work as
> binding in threads?
Are you sure the original approach won't work? If you set
`nnmail-article-buffer' locally within the thread function, it seems to
work okay. Is this not workable:
(defun test-threads-outer ()
(dolist (label (list "one" "two" "three"))
(make-thread (lambda () (test-threads-inner label)) label)))
(defun test-threads-inner (label)
(let ((nnmail-article-buffer (format "nnmail-incoming-%s" label)))
(with-current-buffer (get-buffer-create nnmail-article-buffer)
(insert label))))
That creates three separate buffers, named correctly, and holding the
correct text.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#53877
; Package
emacs
.
(Thu, 10 Feb 2022 18:27:02 GMT)
Full text and
rfc822 format available.
Message #56 received at 53877 <at> debbugs.gnu.org (full text, mbox):
On 02/10/22 10:11 AM, Eric Abrahamsen wrote:
> On 02/10/22 10:02 AM, Manuel Giraud wrote:
>> Eric Abrahamsen <eric <at> ericabrahamsen.net> writes:
>>
>>> Manuel Giraud <manuel <at> ledu-giraud.fr> writes:
>>>
>>>> Lars Ingebrigtsen <larsi <at> gnus.org> writes:
>>>>
>>>>> Why can't you bind `nnmail-article-buffer' before calling the splitting
>>>>> function?
>>>>
>>>> I spoke too quickly. The idea was that with a temporay buffer I could
>>>> run multiple splitting in "parallel". But rebinding just *one* global
>>>> variable won't help much here.
>>>
>>> Are you sure? AFAIK this was Dick Chiang's approach to threading
>>> server updates: let-binding the value of `nntp-server-buffer' within
>>> the thread function. As far as I know it worked okay. The splitting
>>> function and code run within it will have a separate value of
>>> `nnmail-article-buffer'.
>>
>> I'm trying another approach: seek to the processes in the backend, don't
>> wait for them to end but instead attach sentinels for what's left to
>> do. Maybe it is not the best approach because Gnus seems to be heavily
>> stateful/serial.
>>
>> I'm not sure about binding in sentinels: do you think it would work as
>> binding in threads?
>
> Are you sure the original approach won't work? If you set
> `nnmail-article-buffer' locally within the thread function, it seems to
> work okay. Is this not workable:
>
> (defun test-threads-outer ()
> (dolist (label (list "one" "two" "three"))
> (make-thread (lambda () (test-threads-inner label)) label)))
>
> (defun test-threads-inner (label)
> (let ((nnmail-article-buffer (format "nnmail-incoming-%s" label)))
> (with-current-buffer (get-buffer-create nnmail-article-buffer)
> (insert label))))
>
> That creates three separate buffers, named correctly, and holding the
> correct text.
Though in this simple example, the copies of the inner function are
actually still being executed consecutively, so maybe this doesn't prove
anything? I don't have much faith in my reasoning about threads.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#53877
; Package
emacs
.
(Thu, 10 Feb 2022 20:26:02 GMT)
Full text and
rfc822 format available.
Message #59 received at 53877 <at> debbugs.gnu.org (full text, mbox):
> From: Eric Abrahamsen <eric <at> ericabrahamsen.net>
> Date: Thu, 10 Feb 2022 10:11:56 -0800
> Cc: 53877 <at> debbugs.gnu.org, Lars Ingebrigtsen <larsi <at> gnus.org>
>
>
> (defun test-threads-outer ()
> (dolist (label (list "one" "two" "three"))
> (make-thread (lambda () (test-threads-inner label)) label)))
>
> (defun test-threads-inner (label)
> (let ((nnmail-article-buffer (format "nnmail-incoming-%s" label)))
> (with-current-buffer (get-buffer-create nnmail-article-buffer)
> (insert label))))
>
> That creates three separate buffers, named correctly, and holding the
> correct text.
But only if you don't do anything in the main thread, just let it sit
idling. Right? Otherwise those other threads won't get an
opportunity to run.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#53877
; Package
emacs
.
(Thu, 10 Feb 2022 20:38:02 GMT)
Full text and
rfc822 format available.
Message #62 received at 53877 <at> debbugs.gnu.org (full text, mbox):
Eli Zaretskii <eliz <at> gnu.org> writes:
>> From: Eric Abrahamsen <eric <at> ericabrahamsen.net>
>> Date: Thu, 10 Feb 2022 10:11:56 -0800
>> Cc: 53877 <at> debbugs.gnu.org, Lars Ingebrigtsen <larsi <at> gnus.org>
>>
>>
>> (defun test-threads-outer ()
>> (dolist (label (list "one" "two" "three"))
>> (make-thread (lambda () (test-threads-inner label)) label)))
>>
>> (defun test-threads-inner (label)
>> (let ((nnmail-article-buffer (format "nnmail-incoming-%s" label)))
>> (with-current-buffer (get-buffer-create nnmail-article-buffer)
>> (insert label))))
>>
>> That creates three separate buffers, named correctly, and holding the
>> correct text.
>
> But only if you don't do anything in the main thread, just let it sit
> idling. Right? Otherwise those other threads won't get an
> opportunity to run.
Sure, in real life we'd be yielding to these threads and joining
afterwards before going on with the rest of the code. This example was
just to show that having different locally-bound values for
`nnmail-article-buffer' in each thread was a viable approach.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#53877
; Package
emacs
.
(Fri, 11 Feb 2022 10:59:01 GMT)
Full text and
rfc822 format available.
Message #65 received at 53877 <at> debbugs.gnu.org (full text, mbox):
Eric Abrahamsen <eric <at> ericabrahamsen.net> writes:
[...]
> Are you sure the original approach won't work? If you set
> `nnmail-article-buffer' locally within the thread function, it seems to
> work okay. Is this not workable:
Hi Eric,
I was trying just something different. The process/sentinel seems like a
good (established) way to do this in emacs without having to rely on
handling threads yielding (when?). Maybe it won't be fruitful though 😅
--
Manuel Giraud
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#53877
; Package
emacs
.
(Fri, 11 Feb 2022 17:54:01 GMT)
Full text and
rfc822 format available.
Message #68 received at 53877 <at> debbugs.gnu.org (full text, mbox):
Manuel Giraud <manuel <at> ledu-giraud.fr> writes:
> Eric Abrahamsen <eric <at> ericabrahamsen.net> writes:
>
> [...]
>
>> Are you sure the original approach won't work? If you set
>> `nnmail-article-buffer' locally within the thread function, it seems to
>> work okay. Is this not workable:
>
> Hi Eric,
>
> I was trying just something different. The process/sentinel seems like a
> good (established) way to do this in emacs without having to rely on
> handling threads yielding (when?). Maybe it won't be fruitful though 😅
Without having actually gone and written the code myself... my guess is
these two approaches will end up being pretty equivalent in design, only
the details will vary. You're going to launch several "things" in a loop
(the things being either threads, or processes+sentinels), then block
the rest of Emacs while you wait for all of the "things" to be done,
then carry on with main function execution.
Gnus is not set up for these "things" to return at random intervals, ie
we cannot "fire and forget". Not to mention that the "things" will block
Emacs while running elisp, but relinquish control while receiving
process output, which I think would lead to a kind of "stuttering"
responsiveness that would be more annoying than simply blocking Emacs
altogether. No matter which approach you take it will probably have to
wait for all the things to return before it continues, so the only
advantage is in being able to "layer" multiple process io and save a
little time there.
The Trio python library has a neat concept called nurseries, which
guarantees that multiple child threads all have to return before main
code execution continues, that might be interesting to look at:
https://trio.readthedocs.io/en/latest/reference-core.html#nurseries-and-spawning
Severity set to 'wishlist' from 'normal'
Request was from
Stefan Kangas <stefan <at> marxist.se>
to
control <at> debbugs.gnu.org
.
(Sun, 19 Jun 2022 19:05:04 GMT)
Full text and
rfc822 format available.
Removed tag(s) patch.
Request was from
Lars Ingebrigtsen <larsi <at> gnus.org>
to
control <at> debbugs.gnu.org
.
(Thu, 08 Sep 2022 12:55:01 GMT)
Full text and
rfc822 format available.
This bug report was last modified 2 years and 281 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.