Subject: bug#55442: 27.2; newsticker-treeview-save uses print prin1-to-string which abbreviates groups based on print-length

From: Xavier Capaldi <[email-masked]>
Date: Sun, 15 May 2022 22:12:23 -0400

1. Check the value of ~print-length` (default was 10 for me).
2. Use ~newsticker-add-url~ to add a number of RSS feeds greater than
the value of ~print-length~ (in my real config I use use-package for
this instead of the customize interface).
3. Run ~newsticker-treeview~ . . . it should work and you can fetch the
feeds using 'G'.
4. Press 'q' to quit the treeview.
5. Run ~newsticker-treeview~ again and you'll get an error.

The cause is quite simple:

When you press 'q' (~newsticker-treeview-quit~) it calls
~newsticker-treeview-save~ which saves the feed groups to a file under
the ~newsticker-dir~ named ~groups~. It uses ~prin1-to-string~ to write
the groups. This function uses the ~print-length~ and ~print-level~ to
determine how many elements to print before abbreviating the output with
'...'. In my case, I have more feeds than the value of ~print-length~ so
the feed groups are abbreviated. The next time you run
~newsticker-treeview~, it tries to read from that file but cannot due to
abbreviated output. Now that I know, I can of course modify the values
of ~print-length~ and ~print-depth~ but ideally
~newsticker-treeview-save~ should not depend on those variables to
properly store the feed groups. If that's unavoidable, perhaps it can be
noted in the newsticker documentation which is otherwise great.

It looks like there is a patch for this in the bug report logs (#53638).

In GNU Emacs 27.2 (build 1, x86_64-redhat-linux-gnu, GTK+ Version 3.24.30, cairo version 1.17.4)
 of 2021-08-07 built on buildvm-x86-29.iad2.fedoraproject.org
Windowing system distributor 'The X.Org Foundation', version 11.0.12014000
System Description: Fedora 34 (Thirty Four)

Recent messages:
Type "q" in help window to restore its previous buffer.
Mark set [5 times]
Entering debugger...
"(\"Feeds\" \"GnuCash\" \"Suckless\" \"Russ Cox\" \"Paul Khuong\" \"Honnef\" \"Protesilaos\" \"Pragmatic Emacs\" \"Null Program\" \"Karthinks\" ...)"
Type "q" in help window to restore previous buffer
C-x C-g is undefined

Quit
Type "q" to restore previous buffer.

Configured using:
 'configure --build=x86_64-redhat-linux-gnu
 --host=x86_64-redhat-linux-gnu --program-prefix=
 --disable-dependency-tracking --prefix=/usr --exec-prefix=/usr
 --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc
 --datadir=/usr/share --includedir=/usr/include --libdir=/usr/lib64
 --libexecdir=/usr/libexec --localstatedir=/var
 --sharedstatedir=/var/lib --mandir=/usr/share/man
 --infodir=/usr/share/info --with-dbus --with-gif --with-jpeg --with-png
 --with-rsvg --with-tiff --with-xft --with-xpm --with-x-toolkit=gtk3
 --with-gpm=no --with-xwidgets --with-modules --with-harfbuzz
 --with-cairo --with-json build_alias=x86_64-redhat-linux-gnu
 host_alias=x86_64-redhat-linux-gnu CC=gcc 'CFLAGS=-DMAIL_USE_LOCKF -O2
 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches
 -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2
 -Wp,-D_GLIBCXX_ASSERTIONS
 -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong
 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic
 -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection'
 LDFLAGS=-Wl,-z,relro
 PKG_CONFIG_PATH=:/usr/lib64/pkgconfig:/usr/share/pkgconfig'

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

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

Major mode: Lisp Interaction

Minor modes in effect:
  pdf-occur-global-minor-mode: t
  minions-mode: t
  pulsar-global-mode: t
  pulsar-mode: t
  editorconfig-mode: t
  marginalia-mode: t
  vertico-mode: t
  override-global-mode: t
  global-git-commit-mode: t
  magit-auto-revert-mode: t
  shell-dirtrack-mode: t
  el-patch-use-package-mode: t
  straight-use-package-mode: t
  straight-package-neutering-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  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
  line-number-mode: t
  global-visual-line-mode: t
  visual-line-mode: t
  transient-mark-mode: t

Load-path shadows:
/home/xavier/.config/emacs/straight/build/jsonrpc/jsonrpc hides /usr/share/emacs/27.2/lisp/jsonrpc
/home/xavier/.config/emacs/straight/build/xref/xref hides /usr/share/emacs/27.2/lisp/progmodes/xref
/home/xavier/.config/emacs/straight/build/project/project hides /usr/share/emacs/27.2/lisp/progmodes/project
/home/xavier/.config/emacs/straight/build/flymake/flymake hides /usr/share/emacs/27.2/lisp/progmodes/flymake
/home/xavier/.config/emacs/straight/build/org/ox hides /usr/share/emacs/27.2/lisp/org/ox
/home/xavier/.config/emacs/straight/build/org/ox-texinfo hides /usr/share/emacs/27.2/lisp/org/ox-texinfo
/home/xavier/.config/emacs/straight/build/org/ox-publish hides /usr/share/emacs/27.2/lisp/org/ox-publish
/home/xavier/.config/emacs/straight/build/org/ox-org hides /usr/share/emacs/27.2/lisp/org/ox-org
/home/xavier/.config/emacs/straight/build/org/ox-odt hides /usr/share/emacs/27.2/lisp/org/ox-odt
/home/xavier/.config/emacs/straight/build/org/ox-md hides /usr/share/emacs/27.2/lisp/org/ox-md
/home/xavier/.config/emacs/straight/build/org/ox-man hides /usr/share/emacs/27.2/lisp/org/ox-man
/home/xavier/.config/emacs/straight/build/org/ox-latex hides /usr/share/emacs/27.2/lisp/org/ox-latex
/home/xavier/.config/emacs/straight/build/org/ox-icalendar hides /usr/share/emacs/27.2/lisp/org/ox-icalendar
/home/xavier/.config/emacs/straight/build/org/ox-html hides /usr/share/emacs/27.2/lisp/org/ox-html
/home/xavier/.config/emacs/straight/build/org/ox-beamer hides /usr/share/emacs/27.2/lisp/org/ox-beamer
/home/xavier/.config/emacs/straight/build/org/ox-ascii hides /usr/share/emacs/27.2/lisp/org/ox-ascii
/home/xavier/.config/emacs/straight/build/org/org hides /usr/share/emacs/27.2/lisp/org/org
/home/xavier/.config/emacs/straight/build/org/org-version hides /usr/share/emacs/27.2/lisp/org/org-version
/home/xavier/.config/emacs/straight/build/org/org-timer hides /usr/share/emacs/27.2/lisp/org/org-timer
/home/xavier/.config/emacs/straight/build/org/org-tempo hides /usr/share/emacs/27.2/lisp/org/org-tempo
/home/xavier/.config/emacs/straight/build/org/org-table hides /usr/share/emacs/27.2/lisp/org/org-table
/home/xavier/.config/emacs/straight/build/org/org-src hides /usr/share/emacs/27.2/lisp/org/org-src
/home/xavier/.config/emacs/straight/build/org/org-refile hides /usr/share/emacs/27.2/lisp/org/org-refile
/home/xavier/.config/emacs/straight/build/org/org-protocol hides /usr/share/emacs/27.2/lisp/org/org-protocol
/home/xavier/.config/emacs/straight/build/org/org-plot hides /usr/share/emacs/27.2/lisp/org/org-plot
/home/xavier/.config/emacs/straight/build/org/org-pcomplete hides /usr/share/emacs/27.2/lisp/org/org-pcomplete
/home/xavier/.config/emacs/straight/build/org/org-num hides /usr/share/emacs/27.2/lisp/org/org-num
/home/xavier/.config/emacs/straight/build/org/org-mouse hides /usr/share/emacs/27.2/lisp/org/org-mouse
/home/xavier/.config/emacs/straight/build/org/org-mobile hides /usr/share/emacs/27.2/lisp/org/org-mobile
/home/xavier/.config/emacs/straight/build/org/org-macs hides /usr/share/emacs/27.2/lisp/org/org-macs
/home/xavier/.config/emacs/straight/build/org/org-macro hides /usr/share/emacs/27.2/lisp/org/org-macro
/home/xavier/.config/emacs/straight/build/org/org-loaddefs hides /usr/share/emacs/27.2/lisp/org/org-loaddefs
/home/xavier/.config/emacs/straight/build/org/org-list hides /usr/share/emacs/27.2/lisp/org/org-list
/home/xavier/.config/emacs/straight/build/org/org-lint hides /usr/share/emacs/27.2/lisp/org/org-lint
/home/xavier/.config/emacs/straight/build/org/org-keys hides /usr/share/emacs/27.2/lisp/org/org-keys
/home/xavier/.config/emacs/straight/build/org/org-install hides /usr/share/emacs/27.2/lisp/org/org-install
/home/xavier/.config/emacs/straight/build/org/org-inlinetask hides /usr/share/emacs/27.2/lisp/org/org-inlinetask
/home/xavier/.config/emacs/straight/build/org/org-indent hides /usr/share/emacs/27.2/lisp/org/org-indent
/home/xavier/.config/emacs/straight/build/org/org-id hides /usr/share/emacs/27.2/lisp/org/org-id
/home/xavier/.config/emacs/straight/build/org/org-habit hides /usr/share/emacs/27.2/lisp/org/org-habit
/home/xavier/.config/emacs/straight/build/org/org-goto hides /usr/share/emacs/27.2/lisp/org/org-goto
/home/xavier/.config/emacs/straight/build/org/org-footnote hides /usr/share/emacs/27.2/lisp/org/org-footnote
/home/xavier/.config/emacs/straight/build/org/org-feed hides /usr/share/emacs/27.2/lisp/org/org-feed
/home/xavier/.config/emacs/straight/build/org/org-faces hides /usr/share/emacs/27.2/lisp/org/org-faces
/home/xavier/.config/emacs/straight/build/org/org-entities hides /usr/share/emacs/27.2/lisp/org/org-entities
/home/xavier/.config/emacs/straight/build/org/org-element hides /usr/share/emacs/27.2/lisp/org/org-element
/home/xavier/.config/emacs/straight/build/org/org-duration hides /usr/share/emacs/27.2/lisp/org/org-duration
/home/xavier/.config/emacs/straight/build/org/org-datetree hides /usr/share/emacs/27.2/lisp/org/org-datetree
/home/xavier/.config/emacs/straight/build/org/org-ctags hides /usr/share/emacs/27.2/lisp/org/org-ctags
/home/xavier/.config/emacs/straight/build/org/org-crypt hides /usr/share/emacs/27.2/lisp/org/org-crypt
/home/xavier/.config/emacs/straight/build/org/org-compat hides /usr/share/emacs/27.2/lisp/org/org-compat
/home/xavier/.config/emacs/straight/build/org/org-colview hides /usr/share/emacs/27.2/lisp/org/org-colview
/home/xavier/.config/emacs/straight/build/org/org-clock hides /usr/share/emacs/27.2/lisp/org/org-clock
/home/xavier/.config/emacs/straight/build/org/org-capture hides /usr/share/emacs/27.2/lisp/org/org-capture
/home/xavier/.config/emacs/straight/build/org/org-attach hides /usr/share/emacs/27.2/lisp/org/org-attach
/home/xavier/.config/emacs/straight/build/org/org-attach-git hides /usr/share/emacs/27.2/lisp/org/org-attach-git
/home/xavier/.config/emacs/straight/build/org/org-archive hides /usr/share/emacs/27.2/lisp/org/org-archive
/home/xavier/.config/emacs/straight/build/org/org-agenda hides /usr/share/emacs/27.2/lisp/org/org-agenda
/home/xavier/.config/emacs/straight/build/org/ol hides /usr/share/emacs/27.2/lisp/org/ol
/home/xavier/.config/emacs/straight/build/org/ol-w3m hides /usr/share/emacs/27.2/lisp/org/ol-w3m
/home/xavier/.config/emacs/straight/build/org/ol-rmail hides /usr/share/emacs/27.2/lisp/org/ol-rmail
/home/xavier/.config/emacs/straight/build/org/ol-mhe hides /usr/share/emacs/27.2/lisp/org/ol-mhe
/home/xavier/.config/emacs/straight/build/org/ol-irc hides /usr/share/emacs/27.2/lisp/org/ol-irc
/home/xavier/.config/emacs/straight/build/org/ol-info hides /usr/share/emacs/27.2/lisp/org/ol-info
/home/xavier/.config/emacs/straight/build/org/ol-gnus hides /usr/share/emacs/27.2/lisp/org/ol-gnus
/home/xavier/.config/emacs/straight/build/org/ol-eww hides /usr/share/emacs/27.2/lisp/org/ol-eww
/home/xavier/.config/emacs/straight/build/org/ol-eshell hides /usr/share/emacs/27.2/lisp/org/ol-eshell
/home/xavier/.config/emacs/straight/build/org/ol-docview hides /usr/share/emacs/27.2/lisp/org/ol-docview
/home/xavier/.config/emacs/straight/build/org/ol-bibtex hides /usr/share/emacs/27.2/lisp/org/ol-bibtex
/home/xavier/.config/emacs/straight/build/org/ol-bbdb hides /usr/share/emacs/27.2/lisp/org/ol-bbdb
/home/xavier/.config/emacs/straight/build/org/ob hides /usr/share/emacs/27.2/lisp/org/ob
/home/xavier/.config/emacs/straight/build/org/ob-tangle hides /usr/share/emacs/27.2/lisp/org/ob-tangle
/home/xavier/.config/emacs/straight/build/org/ob-table hides /usr/share/emacs/27.2/lisp/org/ob-table
/home/xavier/.config/emacs/straight/build/org/ob-sqlite hides /usr/share/emacs/27.2/lisp/org/ob-sqlite
/home/xavier/.config/emacs/straight/build/org/ob-sql hides /usr/share/emacs/27.2/lisp/org/ob-sql
/home/xavier/.config/emacs/straight/build/org/ob-shell hides /usr/share/emacs/27.2/lisp/org/ob-shell
/home/xavier/.config/emacs/straight/build/org/ob-sed hides /usr/share/emacs/27.2/lisp/org/ob-sed
/home/xavier/.config/emacs/straight/build/org/ob-screen hides /usr/share/emacs/27.2/lisp/org/ob-screen
/home/xavier/.config/emacs/straight/build/org/ob-scheme hides /usr/share/emacs/27.2/lisp/org/ob-scheme
/home/xavier/.config/emacs/straight/build/org/ob-sass hides /usr/share/emacs/27.2/lisp/org/ob-sass
/home/xavier/.config/emacs/straight/build/org/ob-ruby hides /usr/share/emacs/27.2/lisp/org/ob-ruby
/home/xavier/.config/emacs/straight/build/org/ob-ref hides /usr/share/emacs/27.2/lisp/org/ob-ref
/home/xavier/.config/emacs/straight/build/org/ob-python hides /usr/share/emacs/27.2/lisp/org/ob-python
/home/xavier/.config/emacs/straight/build/org/ob-processing hides /usr/share/emacs/27.2/lisp/org/ob-processing
/home/xavier/.config/emacs/straight/build/org/ob-plantuml hides /usr/share/emacs/27.2/lisp/org/ob-plantuml
/home/xavier/.config/emacs/straight/build/org/ob-perl hides /usr/share/emacs/27.2/lisp/org/ob-perl
/home/xavier/.config/emacs/straight/build/org/ob-org hides /usr/share/emacs/27.2/lisp/org/ob-org
/home/xavier/.config/emacs/straight/build/org/ob-octave hides /usr/share/emacs/27.2/lisp/org/ob-octave
/home/xavier/.config/emacs/straight/build/org/ob-ocaml hides /usr/share/emacs/27.2/lisp/org/ob-ocaml
/home/xavier/.config/emacs/straight/build/org/ob-maxima hides /usr/share/emacs/27.2/lisp/org/ob-maxima
/home/xavier/.config/emacs/straight/build/org/ob-matlab hides /usr/share/emacs/27.2/lisp/org/ob-matlab
/home/xavier/.config/emacs/straight/build/org/ob-makefile hides /usr/share/emacs/27.2/lisp/org/ob-makefile
/home/xavier/.config/emacs/straight/build/org/ob-lua hides /usr/share/emacs/27.2/lisp/org/ob-lua
/home/xavier/.config/emacs/straight/build/org/ob-lob hides /usr/share/emacs/27.2/lisp/org/ob-lob
/home/xavier/.config/emacs/straight/build/org/ob-lisp hides /usr/share/emacs/27.2/lisp/org/ob-lisp
/home/xavier/.config/emacs/straight/build/org/ob-lilypond hides /usr/share/emacs/27.2/lisp/org/ob-lilypond
/home/xavier/.config/emacs/straight/build/org/ob-latex hides /usr/share/emacs/27.2/lisp/org/ob-latex
/home/xavier/.config/emacs/straight/build/org/ob-js hides /usr/share/emacs/27.2/lisp/org/ob-js
/home/xavier/.config/emacs/straight/build/org/ob-java hides /usr/share/emacs/27.2/lisp/org/ob-java
/home/xavier/.config/emacs/straight/build/org/ob-haskell hides /usr/share/emacs/27.2/lisp/org/ob-haskell
/home/xavier/.config/emacs/straight/build/org/ob-groovy hides /usr/share/emacs/27.2/lisp/org/ob-groovy
/home/xavier/.config/emacs/straight/build/org/ob-gnuplot hides /usr/share/emacs/27.2/lisp/org/ob-gnuplot
/home/xavier/.config/emacs/straight/build/org/ob-fortran hides /usr/share/emacs/27.2/lisp/org/ob-fortran
/home/xavier/.config/emacs/straight/build/org/ob-forth hides /usr/share/emacs/27.2/lisp/org/ob-forth
/home/xavier/.config/emacs/straight/build/org/ob-exp hides /usr/share/emacs/27.2/lisp/org/ob-exp
/home/xavier/.config/emacs/straight/build/org/ob-eval hides /usr/share/emacs/27.2/lisp/org/ob-eval
/home/xavier/.config/emacs/straight/build/org/ob-eshell hides /usr/share/emacs/27.2/lisp/org/ob-eshell
/home/xavier/.config/emacs/straight/build/org/ob-emacs-lisp hides /usr/share/emacs/27.2/lisp/org/ob-emacs-lisp
/home/xavier/.config/emacs/straight/build/org/ob-dot hides /usr/share/emacs/27.2/lisp/org/ob-dot
/home/xavier/.config/emacs/straight/build/org/ob-ditaa hides /usr/share/emacs/27.2/lisp/org/ob-ditaa
/home/xavier/.config/emacs/straight/build/org/ob-css hides /usr/share/emacs/27.2/lisp/org/ob-css
/home/xavier/.config/emacs/straight/build/org/ob-core hides /usr/share/emacs/27.2/lisp/org/ob-core
/home/xavier/.config/emacs/straight/build/org/ob-comint hides /usr/share/emacs/27.2/lisp/org/ob-comint
/home/xavier/.config/emacs/straight/build/org/ob-clojure hides /usr/share/emacs/27.2/lisp/org/ob-clojure
/home/xavier/.config/emacs/straight/build/org/ob-calc hides /usr/share/emacs/27.2/lisp/org/ob-calc
/home/xavier/.config/emacs/straight/build/org/ob-awk hides /usr/share/emacs/27.2/lisp/org/ob-awk
/home/xavier/.config/emacs/straight/build/org/ob-R hides /usr/share/emacs/27.2/lisp/org/ob-R
/home/xavier/.config/emacs/straight/build/org/ob-C hides /usr/share/emacs/27.2/lisp/org/ob-C
/home/xavier/.config/emacs/straight/build/let-alist/let-alist hides /usr/share/emacs/27.2/lisp/emacs-lisp/let-alist
/home/xavier/.config/emacs/straight/build/eldoc/eldoc hides /usr/share/emacs/27.2/lisp/emacs-lisp/eldoc

Features:
(shadow sort gnus-alias mail-extr emacsbug sendmail debug backtrace lpr
cl-print ...)

Memory information:
((conses 16 604259 96853)
 (symbols 48 38572 1)
 (strings 32 158869 2951)
 (string-bytes 1 7601314)
 (vectors 16 59146)
 (vector-slots 8 688588 52968)
 (floats 8 462 542)
 (intervals 56 4297 1421)
 (buffers 1000 92))