Subject: bug#37370: 27.0.50; gnus-article-view-part duplicates Attachment: headers

From: "Jose A. Ortega Ruiz" <[email-masked]>
Date: Tue, 10 Sep 2019 14:57:33 +0100

- Open any mulitpart email (html and text), with butonize set so that
  you see the () text/plain (*) text/html buttons
- Press `b' (gnus-article-view-part) in the summary buffer or the
  article buffer
- A new Attachment: header, duplicating existing ones, appears when
  switching the view
- This keeps going on, every time one presses b again... e.g., after two
  times is see at the end of the mail headers:

     Date: Tue, 10 Sep 2019 11:28:21 +0200 (4 hours, 24 minutes, 19 seconds ago)
     Attachment: [2. text/plain]...
     Attachment: [3. text/html]...
     Attachment: [2. text/plain]...

     1.  ( ) text/plain          (*) text/html           

Thanks!

In GNU Emacs 27.0.50 (build 17, x86_64-pc-linux-gnu, X toolkit, Xaw scroll bars)
 of 2019-09-10 built on imladris
Repository revision: 74e9799bd89484b8d15bdd6597c68fc00d07e7f7
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12004000
System Description: Debian GNU/Linux bullseye/sid

Recent messages:
nnimap read 0k from localhost
Do you really want to delete these 2 articles forever? (y or n) y
nnimap read 0k from localhost
Expiring articles...done
nnimap read 0k from localhost
uncompressing gnus-art.el.gz...done
Note: file is write protected
uncompressing gnus-art.el.gz...done
Searched 0/1 files
Searched 1/1 files
Quit
Configured using:
 'configure --with-x-toolkit=lucid --prefix=/usr/local/stow/emacs27'

Configured features:
XPM JPEG TIFF GIF PNG RSVG SOUND GPM DBUS GSETTINGS GLIB NOTIFY INOTIFY
ACL LIBSELINUX GNUTLS LIBXML2 FREETYPE HARFBUZZ LIBOTF XFT ZLIB
TOOLKIT_SCROLL_BARS LUCID X11 XDBE XIM THREADS LIBSYSTEMD JSON PDUMPER
LCMS2 GMP

Important settings:
  value of $LANG: en_GB.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Summary

Minor modes in effect:
  winner-mode: t
  circe-lagmon-mode: t
  tracking-mode: t
  global-magit-file-mode: t
  magit-auto-revert-mode: t
  global-git-commit-mode: t
  async-bytecomp-package-mode: t
  global-diff-hl-mode: t
  intero-global-mode: t
  sly-symbol-completion-mode: t
  pdf-occur-global-minor-mode: t
  global-edit-server-edit-mode: t
  shell-dirtrack-mode: t
  display-time-mode: t
  show-paren-mode: t
  global-auto-revert-mode: t
  persistent-scratch-autosave-mode: t
  global-company-mode: t
  ivy-rich-mode: t
  counsel-mode: t
  ivy-mode: t
  savehist-mode: t
  recentf-mode: t
  save-place-mode: t
  override-global-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-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
  column-number-mode: t
  line-number-mode: t

Load-path shadows:
/home/jao/lib/elisp/jao/bmk/dot-emacs hides /home/jao/.emacs.d/elpa.27/tuareg-20190805.958/dot-emacs

Features:
(shadow bbdb-message mailalias emacsbug org-w3m org-info org-id
org-crypt org-bibtex bibtex org-bbdb copyright gnus-cite w3m-form
w3m-symbol mm-archive mail-extr gnus-async gnus-bcklg qp gnus-ml
gnus-topic utf-7 bbdb-gnus gnus-delay gnus-draft gnus-agent gnus-srvr
gnus-score score-mode nnvirtual gnus-cache gnus-msg nndraft nnmh
gnus-demon nntp cursor-sensor emojify tar-mode network-stream slack
slack-company slack-oauth2 oauth2 plstore slack-unread slack-websocket
slack-thread-event slack-room-event slack-star-event
slack-reaction-event slack-reply-event slack-message-event slack-typing
slack-authorize slack-dialog-edit-element-buffer slack-dialog-buffer
slack-dialog slack-stars-buffer slack-search-result-buffer
slack-thread-message-compose-buffer slack-file-info-buffer
slack-file-list-buffer slack-all-threads-buffer slack-message-buffer
slack-modeline slack-mrkdwn slack-user-profile-buffer
slack-pinned-items-buffer slack-pinned-item slack-thread-message-buffer
slack-room-buffer slack-message-share-buffer slack-message-edit-buffer
slack-room-message-compose-buffer slack-message-compose-buffer
slack-action slack-slash-commands slack-event slack-star slack-reminder
slack-search slack-bot-message slack-user-message slack-message-reaction
slack-message-editor slack-message-sender slack-message-notification
slack-message-formatter slack-attachment slack-selectable slack-thread
slack-usergroup slack-file slack-im slack-channel slack-group
slack-conversations slack-buffer slack-room slack-counts slack-message
slack-block slack-reaction slack-user slack-bot slack-dnd-status
slack-emoji slack-image slack-request slack-log request slack-team
slack-team-ws slack-util websocket bindat mule-util spaceline-config
spaceline-segments spaceline powerline powerline-separators
powerline-themes windmove winner jao-patches bml-logs bml bml-misc
bml-whizzml bml-clojure bml-clj-tests bml-python bml-skels bml-utils
whizzml-skeletons whizzml-mode jao-proton-utils enwc enwc-backend
jao-emms-info-track jao-emms jao-osd jao-emms-lyrics
jao-emms-random-album emms-info-metaflac emms-librefm-stream
emms-librefm-scrobbler emms-playlist-limit emms-volume
emms-volume-mixerctl emms-volume-pulse emms-volume-amixer emms-i18n
emms-history emms-score emms-stream-info emms-metaplaylist-mode
emms-bookmarks emms-cue emms-mode-line-icon emms-browser sort
emms-playlist-sort emms-last-played emms-player-xine emms-player-mpd
emms-playing-time emms-lyrics emms-url emms-streams emms-show-all
emms-tag-editor emms-mark emms-mode-line emms-cache emms-info-opusinfo
emms-info-ogginfo emms-info-mp3info emms-info later-do
emms-playlist-mode emms-player-vlc emms-player-mpv emms-player-mplayer
emms-player-simple emms-source-playlist emms-source-file locate
emms-setup emms emms-compat mastodon circe-color-nicks
circe-notifications circe-lagmon circe lui-irc-colors irc
make-tls-process tls lcs lui-format lui tracking shorten flyspell ispell
circe-compat jenkins gist gh-gist gh-oauth gh-api logito gh-cache pcache
gh-auth gh-url gh-profile eieio-base github-review forge-list
forge-commands forge-semi forge-bitbucket buck forge-gogs gogs
forge-gitea gtea forge-gitlab glab forge-github ghub-graphql treepy
gsexp ghub forge-notify forge-revnote forge-pullreq forge-issue
forge-topic bug-reference forge-post forge-repo forge forge-core
forge-db closql emacsql-sqlite emacsql emacsql-compiler url-http
url-auth url-gw nsm magit-bookmark 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 magit-diff smerge-mode
magit-core magit-autorevert magit-margin magit-transient magit-process
magit-mode git-commit magit-git magit-section magit-utils log-edit
pcvs-util add-log with-editor async-bytecomp async server
git-timemachine transient diff-hl vc-dir ewoc sawfish
display-fill-column-indicator paredit scheme inf-lisp json-mode
json-reformat json-snatcher js cc-mode cc-fonts cc-guess cc-menus
cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs merlin-company
merlin-cap merlin utop utop-minor-mode tuareg caml-help caml-types
caml-emacs find-file erlang tempo virtualenvwrapper gud intero warnings
flycheck cider-macroexpansion cider-mode cider-completion cider-profile
cider-eval cider-repl cider-resolve cider-eldoc cider-test
cider-stacktrace cider-doc cider-browse-spec org-table cider-clojuredocs
cider-popup cider-overlays cider-client cider-common cider-util
cider-connection sesman-browser nrepl-client tramp tramp-loaddefs
trampver tramp-integration files-x tramp-compat ls-lisp queue nrepl-dict
cider-compat spinner parseedn parseclj-parser parseclj-lex a sesman vc
vc-dispatcher clojure-mode lisp-mnt align racket-mode racket-bug-report
racket-collection racket-stepper racket-logger racket-profile
racket-imenu racket-edit hideshow racket-complete racket-repl
racket-common racket-indent racket-font-lock racket-util racket-ppss
racket-keywords-and-builtins racket-custom sh-script smie executable
geiser sly sly-completion sly-buttons sly-messages sly-common apropos
arc-mode archive-mode hyperspec edit-list esh-toggle bash-completion
eshell-up git-ps1-mode w3m w3m-hist w3m-fb bookmark-w3m w3m-ems
w3m-favicon w3m-image w3m-proc w3m-util pdf-view-restore pdf-occur
ibuf-ext ibuffer ibuffer-loaddefs tablist tablist-filter
semantic/wisent/comp semantic/wisent semantic/wisent/wisent
semantic/util-modes semantic/util semantic semantic/tag semantic/lex
semantic/fw mode-local cedet pdf-isearch let-alist pdf-misc pdf-tools
pdf-view bookmark pp pdf-cache pdf-info tq pdf-util jao-doc-view term
disp-table ehelp bbdb-anniv bbdb-mua bbdb-com bbdb bbdb-site timezone
jao-frm randomsig gnutls mu4e-icalendar org-mu4e mu4e-query-fragments
mu4e-overview mu4e-maildirs-extension mu4e-conversation mu4e-alert ht
mu4e desktop frameset mu4e-speedbar speedbar sb-image ezimage dframe
mu4e-main mu4e-view mu4e-headers mu4e-compose mu4e-context mu4e-draft
mu4e-actions ido rfc2368 mu4e-mark mu4e-message flow-fill mu4e-proc
mu4e-utils doc-view image-mode mu4e-lists mu4e-vars mu4e-meta
counsel-notmuch notmuch hl-line notmuch-hello notmuch-tree notmuch-show
notmuch-print notmuch-crypto notmuch-mua notmuch-message notmuch-draft
notmuch-maildir-fcc notmuch-address notmuch-company notmuch-parser
notmuch-wash coolj notmuch-query goto-addr notmuch-tag crm notmuch-lib
notmuch-compat smtpmail sendmail edit-server gh-md eww mm-url url-queue
markdown-mode thingatpt org-gnus nnir gnus-icalendar org-capture
gnus-art mm-uu mml2015 mm-view mml-smime smime dig gnus-sum shr svg dom
gnus-group gnus-undo gnus-start gnus-cloud nnimap nnmail mail-source
utf7 netrc nnoo parse-time iso8601 gnus-spec gnus-int gnus-range message
rmc puny rfc822 mml mml-sec mailabbrev mailheader gnus-win mm-decode
mm-bodies mm-encode mail-parse rfc2231 gmm-utils icalendar org-agenda
gnus nnheader gnus-util rmail rmail-loaddefs rfc2047 rfc2045 ietf-drums
text-property-search mail-utils mm-util mail-prsvr jao-org-links
jao-devon jao-applescript jao-org-utils org-protocol org-tanglesync diff
ob-shell shell ob-scheme ob-python ob-org ob-ocaml ob-makefile
ob-haskell ob-gnuplot ob-clojure ob-calc calc-store calc-trail calc-ext
calc calc-loaddefs calc-macs ox-odt rng-loc rng-uri rng-parse rng-match
rng-dt rng-util rng-pttrn nxml-parse nxml-ns nxml-enc xmltok nxml-util
ox-latex ox-icalendar ox-html table ox-ascii ox-publish ox time cus-edit
cus-start cus-load paren helpful imenu trace edebug backtrace info-look
f dash-functional help-fns radix-tree elisp-refs s loop dash
jao-light-theme jao-themes cl dired-x autorevert filenotify jka-compr
persistent-scratch epa-file epa epg epg-config cal-china lunar solar
cal-dst cal-bahai cal-islam cal-hebrew holidays hol-loaddefs vc-git
diff-mode appt diary-lib diary-loaddefs company-oddmuse company-keywords
company-etags etags fileloop company-gtags company-dabbrev-code
company-dabbrev company-files company-capf company-cmake company-xcode
company-clang company-semantic company-eclim company-template
company-bbdb company pcase alert log4e notifications gntp jao-recoll
derived org-element avl-tree generator org advice org-macro org-footnote
org-pcomplete pcomplete org-list org-faces org-entities time-date
noutline outline org-version ob-emacs-lisp ob ob-tangle org-src ob-ref
ob-lob ob-table ob-keys ob-exp ob-comint ob-core ob-eval org-compat
org-macs org-loaddefs format-spec find-func cal-menu calendar
cal-loaddefs ivy-rich wgrep-ag wgrep grep counsel-spotify dbus xml url
url-proxy url-privacy url-expand url-methods url-history url-cookie
url-domsuf url-util mailcap counsel xdg xref project dired
dired-loaddefs compile comint ansi-color swiper ivy flx delsel ring
colir color ivy-overlay edmacro kmacro texinfo-skel lisp-skel muse-skel
haskell-skel jao-dominating-file scsh-skel init-skel common-skel
skeleton autoinsert savehist recentf tree-widget wid-edit saveplace
jao-elpa package-x diminish gnu-elpa-keyring-update use-package
use-package-ensure use-package-delight use-package-diminish
use-package-bind-key bind-key easy-mmode use-package-core finder-inf
tex-site gh-common marshal eieio-compat rx cl-extra help-mode info
package easymenu browse-url url-handlers url-parse auth-source cl-seq
eieio eieio-core cl-macs eieio-loaddefs password-cache json subr-x map
url-vars seq byte-opt gv bytecomp byte-compile cconv cl-loaddefs cl-lib
tooltip eldoc electric uniquify ediff-hook vc-hooks lisp-float-type
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 elisp-mode
lisp-mode prog-mode register page menu-bar rfn-eshadow isearch timer
select scroll-bar mouse jit-lock font-lock syntax facemenu font-core
term/tty-colors frame 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 charscript charprop case-table epa-hook jka-cmpr-hook
help simple abbrev obarray minibuffer cl-preloaded nadvice loaddefs
button faces cus-face macroexp files text-properties overlay sha1 md5
base64 format env code-pages mule custom widget hashtable-print-readable
backquote threads dbusbind inotify lcms2 dynamic-setting
system-font-setting font-render-setting x-toolkit x multi-tty
make-network-process emacs)

Memory information:
((conses 16 1439019 147729)
 (symbols 48 80549 4)
 (strings 32 433494 60088)
 (string-bytes 1 12708514)
 (vectors 16 179039)
 (vector-slots 8 5395332 202428)
 (floats 8 1875 1806)
 (intervals 56 18668 3240)
 (buffers 992 91))

-- 
That's a high price to pay for a theoretically inelegant misfeature
that's seldom used correctly in portable code.
  -Will Clinger, r6rs-discuss mailing list