unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#66395: 28.2; Todo-mode locks up when trying to edit an entry
@ 2023-10-07 19:06 Nathan R. DeGruchy
  2023-10-07 19:25 ` Eli Zaretskii
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Nathan R. DeGruchy @ 2023-10-07 19:06 UTC (permalink / raw)
  To: 66395





I am trying to explore using 'todo-mode' as a todo list and while I can
see and create entries in todo-mode using the normal functions, trying
to edit an item seems to cause emacs to soft-lock. I can reproduce this
in a config-less emacs via `emacs -Q`.

Basically, I have a todo-file at $HOME/.config/emacs/todo/tasks.todo,
this was created when using `todo-show` initially. The contents are not
very complex:

(("Emacs" . [1 0 0 0]) ("Home" . [1 0 0 0]))
--==-- Emacs
[2023-10-07] Learn Todo Mode

==--== DONE 
--==-- Home
[2023-10-07] Get new wiper blades

==--== DONE 

When on either of the items, if I hit 'e' to edit them, it causes emacs
to lock up, specifically around `todo-done-item-p()`. I found this out
by enabling `toggle-debug-on-quit`, reproducing the error, and the
C-g'ing out of the loop/lockup. I also tried to trace through the
todo-edit-item with edebug-defun. Stepping through, it seems to reach
the same predicate function and ... stop.

I'm not sure where to go from here.

In GNU Emacs 28.2 (build 2, x86_64-pc-linux-gnu)
 of 2023-05-13, modified by Debian built on x86-ubc-01
System Description: Debian GNU/Linux 12 (bookworm)

Configured using:
 'configure --build x86_64-linux-gnu --prefix=/usr
 --sharedstatedir=/var/lib --libexecdir=/usr/libexec
 --localstatedir=/var/lib --infodir=/usr/share/info
 --mandir=/usr/share/man --with-libsystemd --with-pop=yes
 --enable-locallisppath=/etc/emacs:/usr/local/share/emacs/28.2/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/28.2/site-lisp:/usr/share/emacs/site-lisp
 --with-sound=alsa --without-gconf --with-mailutils
 --with-native-compilation --build x86_64-linux-gnu --prefix=/usr
 --sharedstatedir=/var/lib --libexecdir=/usr/libexec
 --localstatedir=/var/lib --infodir=/usr/share/info
 --mandir=/usr/share/man --with-libsystemd --with-pop=yes
 --enable-locallisppath=/etc/emacs:/usr/local/share/emacs/28.2/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/28.2/site-lisp:/usr/share/emacs/site-lisp
 --with-sound=alsa --without-gconf --with-mailutils
 --with-native-compilation --with-x=no --without-gsettings 'CFLAGS=-g
 -O2 -ffile-prefix-map=/build/emacs-mPr7Vr/emacs-28.2+1=.
 -fstack-protector-strong -Wformat -Werror=format-security -Wall'
 'CPPFLAGS=-Wdate-time -D_FORTIFY_SOURCE=2' LDFLAGS=-Wl,-z,relro'

Configured features:
ACL DBUS GMP GNUTLS GPM JSON LCMS2 LIBSELINUX LIBSYSTEMD LIBXML2 MODULES
NATIVE_COMP NOTIFY INOTIFY PDUMPER SECCOMP SOUND THREADS XIM ZLIB

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

Major mode: rcirc

Minor modes in effect:
  flyspell-mode: t
  rcirc-track-minor-mode: t
  rcirc-omit-mode: t
  xterm-mouse-mode: t
  repeat-mode: t
  recentf-mode: t
  timeclock-mode-line-display: t
  display-time-mode: t
  display-battery-mode: t
  auto-insert-mode: t
  xclip-mode: t
  which-key-mode: t
  pulsar-global-mode: t
  pulsar-mode: t
  notmuch-indicator-mode: t
  shell-dirtrack-mode: t
  hyperbole-mode: t
  mouse-wheel-mode: t
  TeX-PDF-mode: t
  csv-field-index-mode: t
  override-global-mode: t
  windmove-mode: t
  savehist-mode: t
  delete-selection-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  use-hard-newlines: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  indent-tabs-mode: t
  transient-mark-mode: t
  abbrev-mode: t

Load-path shadows:
/home/nathan/.config/emacs/site-lisp.d/transmission hides /usr/share/emacs/site-lisp/elpa/transmission-0.12.2/transmission
/usr/share/emacs/site-lisp/elpa/bind-key-2.4.1/bind-key hides /usr/share/emacs/site-lisp/elpa-src/bind-key-2.4.1/bind-key
/usr/share/emacs/site-lisp/elpa/bind-key-2.4.1/bind-key-autoloads hides /usr/share/emacs/site-lisp/elpa-src/bind-key-2.4.1/bind-key-autoloads
/usr/share/emacs/site-lisp/elpa/bind-key-2.4.1/bind-key-pkg hides /usr/share/emacs/site-lisp/elpa-src/bind-key-2.4.1/bind-key-pkg
/usr/share/emacs/site-lisp/elpa/circe-2.11/make-tls-process hides /usr/share/emacs/site-lisp/elpa-src/circe-2.11/make-tls-process
/usr/share/emacs/site-lisp/elpa/circe-2.11/lcs hides /usr/share/emacs/site-lisp/elpa-src/circe-2.11/lcs
/usr/share/emacs/site-lisp/elpa/circe-2.11/circe-color-nicks hides /usr/share/emacs/site-lisp/elpa-src/circe-2.11/circe-color-nicks
/usr/share/emacs/site-lisp/elpa/circe-2.11/lui hides /usr/share/emacs/site-lisp/elpa-src/circe-2.11/lui
/usr/share/emacs/site-lisp/elpa/circe-2.11/tracking hides /usr/share/emacs/site-lisp/elpa-src/circe-2.11/tracking
/usr/share/emacs/site-lisp/elpa/circe-2.11/irc hides /usr/share/emacs/site-lisp/elpa-src/circe-2.11/irc
/usr/share/emacs/site-lisp/elpa/circe-2.11/lui-irc-colors hides /usr/share/emacs/site-lisp/elpa-src/circe-2.11/lui-irc-colors
/usr/share/emacs/site-lisp/elpa/circe-2.11/circe-pkg hides /usr/share/emacs/site-lisp/elpa-src/circe-2.11/circe-pkg
/usr/share/emacs/site-lisp/elpa/circe-2.11/circe hides /usr/share/emacs/site-lisp/elpa-src/circe-2.11/circe
/usr/share/emacs/site-lisp/elpa/circe-2.11/circe-autoloads hides /usr/share/emacs/site-lisp/elpa-src/circe-2.11/circe-autoloads
/usr/share/emacs/site-lisp/elpa/circe-2.11/circe-new-day-notifier hides /usr/share/emacs/site-lisp/elpa-src/circe-2.11/circe-new-day-notifier
/usr/share/emacs/site-lisp/elpa/circe-2.11/lui-logging hides /usr/share/emacs/site-lisp/elpa-src/circe-2.11/lui-logging
/usr/share/emacs/site-lisp/elpa/circe-2.11/lui-autopaste hides /usr/share/emacs/site-lisp/elpa-src/circe-2.11/lui-autopaste
/usr/share/emacs/site-lisp/elpa/circe-2.11/circe-compat hides /usr/share/emacs/site-lisp/elpa-src/circe-2.11/circe-compat
/usr/share/emacs/site-lisp/elpa/circe-2.11/lui-format hides /usr/share/emacs/site-lisp/elpa-src/circe-2.11/lui-format
/usr/share/emacs/site-lisp/elpa/circe-2.11/circe-display-images hides /usr/share/emacs/site-lisp/elpa-src/circe-2.11/circe-display-images
/usr/share/emacs/site-lisp/elpa/circe-2.11/circe-chanop hides /usr/share/emacs/site-lisp/elpa-src/circe-2.11/circe-chanop
/usr/share/emacs/site-lisp/elpa/circe-2.11/circe-lagmon hides /usr/share/emacs/site-lisp/elpa-src/circe-2.11/circe-lagmon
/usr/share/emacs/site-lisp/elpa/circe-2.11/shorten hides /usr/share/emacs/site-lisp/elpa-src/circe-2.11/shorten
/usr/share/emacs/site-lisp/elpa/circe-2.11/lui-track-bar hides /usr/share/emacs/site-lisp/elpa-src/circe-2.11/lui-track-bar
/usr/share/emacs/site-lisp/elpa/clues-theme-1.0.1/clues-theme hides /usr/share/emacs/site-lisp/elpa-src/clues-theme-1.0.1/clues-theme
/usr/share/emacs/site-lisp/elpa/clues-theme-1.0.1/clues-theme-autoloads hides /usr/share/emacs/site-lisp/elpa-src/clues-theme-1.0.1/clues-theme-autoloads
/usr/share/emacs/site-lisp/elpa/clues-theme-1.0.1/clues-theme-pkg hides /usr/share/emacs/site-lisp/elpa-src/clues-theme-1.0.1/clues-theme-pkg
/usr/share/emacs/site-lisp/elpa/csv-mode-1.22/csv-mode-tests hides /usr/share/emacs/site-lisp/elpa-src/csv-mode-1.22/csv-mode-tests
/usr/share/emacs/site-lisp/elpa/csv-mode-1.22/csv-mode-pkg hides /usr/share/emacs/site-lisp/elpa-src/csv-mode-1.22/csv-mode-pkg
/usr/share/emacs/site-lisp/elpa/csv-mode-1.22/csv-mode hides /usr/share/emacs/site-lisp/elpa-src/csv-mode-1.22/csv-mode
/usr/share/emacs/site-lisp/elpa/csv-mode-1.22/csv-mode-autoloads hides /usr/share/emacs/site-lisp/elpa-src/csv-mode-1.22/csv-mode-autoloads
/usr/share/emacs/site-lisp/elpa/debase-0.7/debase-pkg hides /usr/share/emacs/site-lisp/elpa-src/debase-0.7/debase-pkg
/usr/share/emacs/site-lisp/elpa/debase-0.7/debase-autoloads hides /usr/share/emacs/site-lisp/elpa-src/debase-0.7/debase-autoloads
/usr/share/emacs/site-lisp/elpa/debase-0.7/debase hides /usr/share/emacs/site-lisp/elpa-src/debase-0.7/debase
/usr/share/emacs/site-lisp/elpa/debase-0.7/debase-objectmanager hides /usr/share/emacs/site-lisp/elpa-src/debase-0.7/debase-objectmanager
/usr/share/emacs/site-lisp/elpa/debase-0.7/debase-gen hides /usr/share/emacs/site-lisp/elpa-src/debase-0.7/debase-gen
/usr/share/emacs/site-lisp/elpa/diminish-0.45/diminish-pkg hides /usr/share/emacs/site-lisp/elpa-src/diminish-0.45/diminish-pkg
/usr/share/emacs/site-lisp/elpa/diminish-0.45/diminish-autoloads hides /usr/share/emacs/site-lisp/elpa-src/diminish-0.45/diminish-autoloads
/usr/share/emacs/site-lisp/elpa/diminish-0.45/diminish hides /usr/share/emacs/site-lisp/elpa-src/diminish-0.45/diminish
/usr/share/emacs/site-lisp/elpa/discomfort-0.0/discomfort-autoloads hides /usr/share/emacs/site-lisp/elpa-src/discomfort-0.0/discomfort-autoloads
/usr/share/emacs/site-lisp/elpa/discomfort-0.0/discomfort hides /usr/share/emacs/site-lisp/elpa-src/discomfort-0.0/discomfort
/usr/share/emacs/site-lisp/elpa/discomfort-0.0/discomfort-pkg hides /usr/share/emacs/site-lisp/elpa-src/discomfort-0.0/discomfort-pkg
/usr/share/emacs/site-lisp/elpa/editorconfig-0.8.2/editorconfig-core-handle hides /usr/share/emacs/site-lisp/elpa-src/editorconfig-0.8.2/editorconfig-core-handle
/usr/share/emacs/site-lisp/elpa/editorconfig-0.8.2/editorconfig-conf-mode hides /usr/share/emacs/site-lisp/elpa-src/editorconfig-0.8.2/editorconfig-conf-mode
/usr/share/emacs/site-lisp/elpa/editorconfig-0.8.2/editorconfig-core hides /usr/share/emacs/site-lisp/elpa-src/editorconfig-0.8.2/editorconfig-core
/usr/share/emacs/site-lisp/elpa/editorconfig-0.8.2/editorconfig-pkg hides /usr/share/emacs/site-lisp/elpa-src/editorconfig-0.8.2/editorconfig-pkg
/usr/share/emacs/site-lisp/elpa/editorconfig-0.8.2/editorconfig hides /usr/share/emacs/site-lisp/elpa-src/editorconfig-0.8.2/editorconfig
/usr/share/emacs/site-lisp/elpa/editorconfig-0.8.2/editorconfig-autoloads hides /usr/share/emacs/site-lisp/elpa-src/editorconfig-0.8.2/editorconfig-autoloads
/usr/share/emacs/site-lisp/elpa/editorconfig-0.8.2/editorconfig-fnmatch hides /usr/share/emacs/site-lisp/elpa-src/editorconfig-0.8.2/editorconfig-fnmatch
/usr/share/emacs/site-lisp/elpa/elfeed-3.4.1/elfeed-autoloads hides /usr/share/emacs/site-lisp/elpa-src/elfeed-3.4.1/elfeed-autoloads
/usr/share/emacs/site-lisp/elpa/elfeed-3.4.1/elfeed-log hides /usr/share/emacs/site-lisp/elpa-src/elfeed-3.4.1/elfeed-log
/usr/share/emacs/site-lisp/elpa/elfeed-3.4.1/elfeed-csv hides /usr/share/emacs/site-lisp/elpa-src/elfeed-3.4.1/elfeed-csv
/usr/share/emacs/site-lisp/elpa/elfeed-3.4.1/elfeed-db hides /usr/share/emacs/site-lisp/elpa-src/elfeed-3.4.1/elfeed-db
/usr/share/emacs/site-lisp/elpa/elfeed-3.4.1/elfeed-curl hides /usr/share/emacs/site-lisp/elpa-src/elfeed-3.4.1/elfeed-curl
/usr/share/emacs/site-lisp/elpa/elfeed-3.4.1/elfeed-lib hides /usr/share/emacs/site-lisp/elpa-src/elfeed-3.4.1/elfeed-lib
/usr/share/emacs/site-lisp/elpa/elfeed-3.4.1/elfeed-pkg hides /usr/share/emacs/site-lisp/elpa-src/elfeed-3.4.1/elfeed-pkg
/usr/share/emacs/site-lisp/elpa/elfeed-3.4.1/elfeed-search hides /usr/share/emacs/site-lisp/elpa-src/elfeed-3.4.1/elfeed-search
/usr/share/emacs/site-lisp/elpa/elfeed-3.4.1/elfeed hides /usr/share/emacs/site-lisp/elpa-src/elfeed-3.4.1/elfeed
/usr/share/emacs/site-lisp/elpa/elfeed-3.4.1/elfeed-show hides /usr/share/emacs/site-lisp/elpa-src/elfeed-3.4.1/elfeed-show
/usr/share/emacs/site-lisp/elpa/elfeed-3.4.1/elfeed-link hides /usr/share/emacs/site-lisp/elpa-src/elfeed-3.4.1/elfeed-link
/usr/share/emacs/site-lisp/elpa/elfeed-3.4.1/xml-query hides /usr/share/emacs/site-lisp/elpa-src/elfeed-3.4.1/xml-query
/usr/share/emacs/site-lisp/elpa/let-alist-1.0.6/let-alist hides /usr/share/emacs/site-lisp/elpa-src/let-alist-1.0.6/let-alist
/usr/share/emacs/site-lisp/elpa/let-alist-1.0.6/let-alist-pkg hides /usr/share/emacs/site-lisp/elpa-src/let-alist-1.0.6/let-alist-pkg
/usr/share/emacs/site-lisp/elpa/let-alist-1.0.6/let-alist-autoloads hides /usr/share/emacs/site-lisp/elpa-src/let-alist-1.0.6/let-alist-autoloads
/usr/share/emacs/site-lisp/elpa/markdown-mode-2.5/markdown-mode-autoloads hides /usr/share/emacs/site-lisp/elpa-src/markdown-mode-2.5/markdown-mode-autoloads
/usr/share/emacs/site-lisp/elpa/markdown-mode-2.5/markdown-mode hides /usr/share/emacs/site-lisp/elpa-src/markdown-mode-2.5/markdown-mode
/usr/share/emacs/site-lisp/elpa/markdown-mode-2.5/markdown-mode-pkg hides /usr/share/emacs/site-lisp/elpa-src/markdown-mode-2.5/markdown-mode-pkg
/usr/share/emacs/site-lisp/elpa/notmuch-0.37/notmuch-print hides /usr/share/emacs/site-lisp/elpa-src/notmuch-0.37/notmuch-print
/usr/share/emacs/site-lisp/elpa/notmuch-0.37/notmuch-version hides /usr/share/emacs/site-lisp/elpa-src/notmuch-0.37/notmuch-version
/usr/share/emacs/site-lisp/elpa/notmuch-0.37/notmuch-wash hides /usr/share/emacs/site-lisp/elpa-src/notmuch-0.37/notmuch-wash
/usr/share/emacs/site-lisp/elpa/notmuch-0.37/notmuch-maildir-fcc hides /usr/share/emacs/site-lisp/elpa-src/notmuch-0.37/notmuch-maildir-fcc
/usr/share/emacs/site-lisp/elpa/notmuch-0.37/notmuch-company hides /usr/share/emacs/site-lisp/elpa-src/notmuch-0.37/notmuch-company
/usr/share/emacs/site-lisp/elpa/notmuch-0.37/notmuch-lib hides /usr/share/emacs/site-lisp/elpa-src/notmuch-0.37/notmuch-lib
/usr/share/emacs/site-lisp/elpa/notmuch-0.37/notmuch-hello hides /usr/share/emacs/site-lisp/elpa-src/notmuch-0.37/notmuch-hello
/usr/share/emacs/site-lisp/elpa/notmuch-0.37/notmuch-show hides /usr/share/emacs/site-lisp/elpa-src/notmuch-0.37/notmuch-show
/usr/share/emacs/site-lisp/elpa/notmuch-0.37/notmuch-jump hides /usr/share/emacs/site-lisp/elpa-src/notmuch-0.37/notmuch-jump
/usr/share/emacs/site-lisp/elpa/notmuch-0.37/notmuch-crypto hides /usr/share/emacs/site-lisp/elpa-src/notmuch-0.37/notmuch-crypto
/usr/share/emacs/site-lisp/elpa/notmuch-0.37/notmuch-tag hides /usr/share/emacs/site-lisp/elpa-src/notmuch-0.37/notmuch-tag
/usr/share/emacs/site-lisp/elpa/notmuch-0.37/notmuch-draft hides /usr/share/emacs/site-lisp/elpa-src/notmuch-0.37/notmuch-draft
/usr/share/emacs/site-lisp/elpa/notmuch-0.37/notmuch-tree hides /usr/share/emacs/site-lisp/elpa-src/notmuch-0.37/notmuch-tree
/usr/share/emacs/site-lisp/elpa/notmuch-0.37/notmuch-query hides /usr/share/emacs/site-lisp/elpa-src/notmuch-0.37/notmuch-query
/usr/share/emacs/site-lisp/elpa/notmuch-0.37/notmuch-autoloads hides /usr/share/emacs/site-lisp/elpa-src/notmuch-0.37/notmuch-autoloads
/usr/share/emacs/site-lisp/elpa/notmuch-0.37/notmuch-message hides /usr/share/emacs/site-lisp/elpa-src/notmuch-0.37/notmuch-message
/usr/share/emacs/site-lisp/elpa/notmuch-0.37/notmuch-pkg hides /usr/share/emacs/site-lisp/elpa-src/notmuch-0.37/notmuch-pkg
/usr/share/emacs/site-lisp/elpa/notmuch-0.37/notmuch-parser hides /usr/share/emacs/site-lisp/elpa-src/notmuch-0.37/notmuch-parser
/usr/share/emacs/site-lisp/elpa/notmuch-0.37/notmuch-compat hides /usr/share/emacs/site-lisp/elpa-src/notmuch-0.37/notmuch-compat
/usr/share/emacs/site-lisp/elpa/notmuch-0.37/notmuch-address hides /usr/share/emacs/site-lisp/elpa-src/notmuch-0.37/notmuch-address
/usr/share/emacs/site-lisp/elpa/notmuch-0.37/notmuch-mua hides /usr/share/emacs/site-lisp/elpa-src/notmuch-0.37/notmuch-mua
/usr/share/emacs/site-lisp/elpa/notmuch-0.37/notmuch hides /usr/share/emacs/site-lisp/elpa-src/notmuch-0.37/notmuch
/usr/share/emacs/site-lisp/elpa/notmuch-0.37/coolj hides /usr/share/emacs/site-lisp/elpa-src/notmuch-0.37/coolj
/usr/share/emacs/site-lisp/elpa/paredit-26/paredit hides /usr/share/emacs/site-lisp/elpa-src/paredit-26/paredit
/usr/share/emacs/site-lisp/elpa/paredit-26/paredit-autoloads hides /usr/share/emacs/site-lisp/elpa-src/paredit-26/paredit-autoloads
/usr/share/emacs/site-lisp/elpa/paredit-26/paredit-pkg hides /usr/share/emacs/site-lisp/elpa-src/paredit-26/paredit-pkg
/usr/share/emacs/site-lisp/elpa/php-mode-1.24.2/php hides /usr/share/emacs/site-lisp/elpa-src/php-mode-1.24.2/php
/usr/share/emacs/site-lisp/elpa/php-mode-1.24.2/php-flymake hides /usr/share/emacs/site-lisp/elpa-src/php-mode-1.24.2/php-flymake
/usr/share/emacs/site-lisp/elpa/php-mode-1.24.2/php-mode-autoloads hides /usr/share/emacs/site-lisp/elpa-src/php-mode-1.24.2/php-mode-autoloads
/usr/share/emacs/site-lisp/elpa/php-mode-1.24.2/php-align hides /usr/share/emacs/site-lisp/elpa-src/php-mode-1.24.2/php-align
/usr/share/emacs/site-lisp/elpa/php-mode-1.24.2/php-local-manual hides /usr/share/emacs/site-lisp/elpa-src/php-mode-1.24.2/php-local-manual
/usr/share/emacs/site-lisp/elpa/php-mode-1.24.2/php-project hides /usr/share/emacs/site-lisp/elpa-src/php-mode-1.24.2/php-project
/usr/share/emacs/site-lisp/elpa/php-mode-1.24.2/php-face hides /usr/share/emacs/site-lisp/elpa-src/php-mode-1.24.2/php-face
/usr/share/emacs/site-lisp/elpa/php-mode-1.24.2/php-defs hides /usr/share/emacs/site-lisp/elpa-src/php-mode-1.24.2/php-defs
/usr/share/emacs/site-lisp/elpa/php-mode-1.24.2/php-mode-pkg hides /usr/share/emacs/site-lisp/elpa-src/php-mode-1.24.2/php-mode-pkg
/usr/share/emacs/site-lisp/elpa/php-mode-1.24.2/php-mode-debug hides /usr/share/emacs/site-lisp/elpa-src/php-mode-1.24.2/php-mode-debug
/usr/share/emacs/site-lisp/elpa/php-mode-1.24.2/php-complete hides /usr/share/emacs/site-lisp/elpa-src/php-mode-1.24.2/php-complete
/usr/share/emacs/site-lisp/elpa/php-mode-1.24.2/php-mode hides /usr/share/emacs/site-lisp/elpa-src/php-mode-1.24.2/php-mode
/usr/share/emacs/site-lisp/elpa/system-packages-1.0.11/system-packages-autoloads hides /usr/share/emacs/site-lisp/elpa-src/system-packages-1.0.11/system-packages-autoloads
/usr/share/emacs/site-lisp/elpa/system-packages-1.0.11/system-packages-pkg hides /usr/share/emacs/site-lisp/elpa-src/system-packages-1.0.11/system-packages-pkg
/usr/share/emacs/site-lisp/elpa/system-packages-1.0.11/system-packages hides /usr/share/emacs/site-lisp/elpa-src/system-packages-1.0.11/system-packages
/usr/share/emacs/site-lisp/elpa/systemd-1.6/systemd hides /usr/share/emacs/site-lisp/elpa-src/systemd-1.6/systemd
/usr/share/emacs/site-lisp/elpa/systemd-1.6/systemd-autoloads hides /usr/share/emacs/site-lisp/elpa-src/systemd-1.6/systemd-autoloads
/usr/share/emacs/site-lisp/elpa/systemd-1.6/systemd-pkg hides /usr/share/emacs/site-lisp/elpa-src/systemd-1.6/systemd-pkg
/usr/share/emacs/site-lisp/elpa/transmission-0.12.2/transmission-autoloads hides /usr/share/emacs/site-lisp/elpa-src/transmission-0.12.2/transmission-autoloads
/home/nathan/.config/emacs/site-lisp.d/transmission hides /usr/share/emacs/site-lisp/elpa-src/transmission-0.12.2/transmission
/usr/share/emacs/site-lisp/elpa/transmission-0.12.2/transmission-pkg hides /usr/share/emacs/site-lisp/elpa-src/transmission-0.12.2/transmission-pkg
/usr/share/emacs/site-lisp/elpa/use-package-2.4.4/use-package-autoloads hides /usr/share/emacs/site-lisp/elpa-src/use-package-2.4.4/use-package-autoloads
/usr/share/emacs/site-lisp/elpa/use-package-2.4.4/use-package hides /usr/share/emacs/site-lisp/elpa-src/use-package-2.4.4/use-package
/usr/share/emacs/site-lisp/elpa/use-package-2.4.4/use-package-diminish hides /usr/share/emacs/site-lisp/elpa-src/use-package-2.4.4/use-package-diminish
/usr/share/emacs/site-lisp/elpa/use-package-2.4.4/use-package-delight hides /usr/share/emacs/site-lisp/elpa-src/use-package-2.4.4/use-package-delight
/usr/share/emacs/site-lisp/elpa/use-package-2.4.4/use-package-lint hides /usr/share/emacs/site-lisp/elpa-src/use-package-2.4.4/use-package-lint
/usr/share/emacs/site-lisp/elpa/use-package-2.4.4/use-package-ensure hides /usr/share/emacs/site-lisp/elpa-src/use-package-2.4.4/use-package-ensure
/usr/share/emacs/site-lisp/elpa/use-package-2.4.4/use-package-bind-key hides /usr/share/emacs/site-lisp/elpa-src/use-package-2.4.4/use-package-bind-key
/usr/share/emacs/site-lisp/elpa/use-package-2.4.4/use-package-jump hides /usr/share/emacs/site-lisp/elpa-src/use-package-2.4.4/use-package-jump
/usr/share/emacs/site-lisp/elpa/use-package-2.4.4/use-package-pkg hides /usr/share/emacs/site-lisp/elpa-src/use-package-2.4.4/use-package-pkg
/usr/share/emacs/site-lisp/elpa/use-package-2.4.4/use-package-core hides /usr/share/emacs/site-lisp/elpa-src/use-package-2.4.4/use-package-core
/usr/share/emacs/site-lisp/elpa/use-package-ensure-system-package-2.4.4/use-package-ensure-system-package hides /usr/share/emacs/site-lisp/elpa-src/use-package-ensure-system-package-2.4.4/use-package-ensure-system-package
/usr/share/emacs/site-lisp/elpa/use-package-ensure-system-package-2.4.4/use-package-ensure-system-package-autoloads hides /usr/share/emacs/site-lisp/elpa-src/use-package-ensure-system-package-2.4.4/use-package-ensure-system-package-autoloads
/usr/share/emacs/site-lisp/elpa/use-package-ensure-system-package-2.4.4/use-package-ensure-system-package-pkg hides /usr/share/emacs/site-lisp/elpa-src/use-package-ensure-system-package-2.4.4/use-package-ensure-system-package-pkg
/usr/share/emacs/site-lisp/elpa/vc-fossil-20220707/vc-fossil-autoloads hides /usr/share/emacs/site-lisp/elpa-src/vc-fossil-20220707/vc-fossil-autoloads
/usr/share/emacs/site-lisp/elpa/vc-fossil-20220707/vc-fossil hides /usr/share/emacs/site-lisp/elpa-src/vc-fossil-20220707/vc-fossil
/usr/share/emacs/site-lisp/elpa/vc-fossil-20220707/vc-fossil-pkg hides /usr/share/emacs/site-lisp/elpa-src/vc-fossil-20220707/vc-fossil-pkg
/usr/share/emacs/site-lisp/elpa/volume-1.0/volume hides /usr/share/emacs/site-lisp/elpa-src/volume-1.0/volume
/usr/share/emacs/site-lisp/elpa/volume-1.0/volume-pkg hides /usr/share/emacs/site-lisp/elpa-src/volume-1.0/volume-pkg
/usr/share/emacs/site-lisp/elpa/volume-1.0/volume-autoloads hides /usr/share/emacs/site-lisp/elpa-src/volume-1.0/volume-autoloads
/usr/share/emacs/site-lisp/elpa/web-mode-17.0.2/web-mode-pkg hides /usr/share/emacs/site-lisp/elpa-src/web-mode-17.0.2/web-mode-pkg
/usr/share/emacs/site-lisp/elpa/web-mode-17.0.2/web-mode hides /usr/share/emacs/site-lisp/elpa-src/web-mode-17.0.2/web-mode
/usr/share/emacs/site-lisp/elpa/web-mode-17.0.2/web-mode-autoloads hides /usr/share/emacs/site-lisp/elpa-src/web-mode-17.0.2/web-mode-autoloads
/usr/share/emacs/site-lisp/elpa/which-key-3.6.0/which-key hides /usr/share/emacs/site-lisp/elpa-src/which-key-3.6.0/which-key
/usr/share/emacs/site-lisp/elpa/which-key-3.6.0/which-key-pkg hides /usr/share/emacs/site-lisp/elpa-src/which-key-3.6.0/which-key-pkg
/usr/share/emacs/site-lisp/elpa/which-key-3.6.0/which-key-autoloads hides /usr/share/emacs/site-lisp/elpa-src/which-key-3.6.0/which-key-autoloads
/usr/share/emacs/site-lisp/elpa/yaml-mode-0.0.15/yaml-mode hides /usr/share/emacs/site-lisp/elpa-src/yaml-mode-0.0.15/yaml-mode
/usr/share/emacs/site-lisp/elpa/yaml-mode-0.0.15/yaml-mode-pkg hides /usr/share/emacs/site-lisp/elpa-src/yaml-mode-0.0.15/yaml-mode-pkg
/usr/share/emacs/site-lisp/elpa/yaml-mode-0.0.15/yaml-mode-autoloads hides /usr/share/emacs/site-lisp/elpa-src/yaml-mode-0.0.15/yaml-mode-autoloads
/usr/share/emacs/site-lisp/elpa/let-alist-1.0.6/let-alist hides /usr/share/emacs/28.2/lisp/emacs-lisp/let-alist
/usr/share/emacs/site-lisp/auctex/latex hides /usr/share/auctex/latex
/usr/share/emacs/site-lisp/auctex/preview hides /usr/share/auctex/preview
/usr/share/emacs/site-lisp/auctex/tex-fold hides /usr/share/auctex/tex-fold
/usr/share/emacs/site-lisp/auctex/tex-ispell hides /usr/share/auctex/tex-ispell
/usr/share/emacs/site-lisp/auctex/plain-tex hides /usr/share/auctex/plain-tex
/usr/share/emacs/site-lisp/auctex/context-nl hides /usr/share/auctex/context-nl
/usr/share/emacs/site-lisp/auctex/prv-emacs hides /usr/share/auctex/prv-emacs
/usr/share/emacs/site-lisp/auctex/context-en hides /usr/share/auctex/context-en
/usr/share/emacs/site-lisp/auctex/multi-prompt hides /usr/share/auctex/multi-prompt
/usr/share/emacs/site-lisp/auctex/texmathp hides /usr/share/auctex/texmathp
/usr/share/emacs/site-lisp/auctex/tex-jp hides /usr/share/auctex/tex-jp
/usr/share/emacs/site-lisp/auctex/tex-info hides /usr/share/auctex/tex-info
/usr/share/emacs/site-lisp/auctex/tex-style hides /usr/share/auctex/tex-style
/usr/share/emacs/site-lisp/auctex/tex-font hides /usr/share/auctex/tex-font
/usr/share/emacs/site-lisp/auctex/context hides /usr/share/auctex/context
/usr/share/emacs/site-lisp/auctex/tex hides /usr/share/auctex/tex
/usr/share/emacs/site-lisp/auctex/tex-bar hides /usr/share/auctex/tex-bar
/usr/share/emacs/site-lisp/auctex/tex-buf hides /usr/share/auctex/tex-buf
/usr/share/emacs/site-lisp/auctex/font-latex hides /usr/share/auctex/font-latex
/usr/share/emacs/site-lisp/auctex/tex-mik hides /usr/share/auctex/tex-mik
/usr/share/emacs/site-lisp/auctex/latex-flymake hides /usr/share/auctex/latex-flymake
/usr/share/emacs/site-lisp/auctex/toolbar-x hides /usr/share/auctex/toolbar-x
/usr/share/emacs/site-lisp/auctex/bib-cite hides /usr/share/auctex/bib-cite

Features:
(shadow mail-extr time-stamp misearch multi-isearch mailalias emacsbug
jka-compr eieio-opt speedbar ezimage dframe shortdoc flyspell ispell
gnutls network-stream nsm epa-file rcirc help-fns radix-tree cl-print
todo-mode term/xterm xterm cus-start emacs-lock tempo-templates skeleton
macros xt-mouse repeat remember recentf tree-widget org-mouse org-tempo
tempo eshell em-smart esh-mode esh-cmd esh-ext esh-opt esh-proc esh-io
esh-arg esh-module esh-groups esh-util timeclock time battery mule-util
cal-china lunar solar cal-dst cal-bahai cal-islam cal-hebrew holidays
hol-loaddefs appt autoinsert yaml-mode xclip which-key vc-fossil
transmission calc-bin calc-ext calc calc-loaddefs rect calc-macs
rec-mode pulsar paredit messages-are-flowing notmuch-indicator
notmuch-calendar gnus-icalendar org-capture org-refile notmuch
notmuch-tree notmuch-jump notmuch-hello notmuch-show notmuch-print
notmuch-crypto notmuch-mua notmuch-message notmuch-draft
notmuch-maildir-fcc notmuch-address notmuch-company notmuch-parser
notmuch-wash coolj goto-addr icalendar diary-lib diary-loaddefs
notmuch-tag notmuch-lib notmuch-version notmuch-compat hl-line cus-edit
cus-load hyperbole hinit hibtypes hib-doc-id hib-kbd hib-debbugs
hsys-www hib-social hypb-ert ert ewoc debug backtrace hui-mini hui
hactypes man hui-mouse hmouse-key hargs tar-mode arc-mode archive-mode
hsys-org org-element 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 org-keys oc org-compat org-macs
org-loaddefs hui-menu hyrolo-menu hyrolo kview kproperty klink
hmouse-tag etags fileloop xref find-func kfill bbdb bbdb-site timezone
hui-jmenu hpath tramp tramp-loaddefs trampver tramp-integration files-x
tramp-compat shell pcomplete ls-lisp format-spec noutline outline
hmouse-sh hsettings hui-em-but hbut hmouse-drv hui-window pulse
hycontrol view hui-select web-mode disp-table rng-nxml rng-valid rng-loc
rng-uri rng-parse nxml-parse rng-match rng-dt rng-util rng-pttrn nxml-ns
nxml-mode nxml-outln nxml-rap nxml-util nxml-enc xmltok mhtml-mode
css-mode smie eww xdg mm-url color js imenu cc-mode cc-fonts cc-guess
cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs sgml-mode
facemenu hbdata hgnus gnus-msg 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 parse-time iso8601 gnus-spec
gnus-int gnus-range gnus-win gnus nnheader hsmail sendmail hmail htz
cal-julian cal-menu calendar cal-loaddefs hbmap hmoccur hvar hypb locate
hversion hload-path hyperbole-autoloads kotl-autoloads hact set hhist
discomfort debase-objectmanager debase pcase eieio-base elfeed-show
elfeed-search wid-edit vc-git diff-mode vc-dispatcher bookmark pp
message rmc dired dired-loaddefs rfc822 mml mml-sec epa derived epg
rfc6068 epg-config gnus-util rmail rmail-loaddefs mm-decode mm-bodies
mm-encode mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums
mail-prsvr mailabbrev mail-utils gmm-utils mailheader shr kinsoku puny
image svg dom elfeed-csv elfeed elfeed-curl elfeed-log elfeed-db
elfeed-lib time-date avl-tree generator url-queue xml-query latex
latex-flymake flymake-proc flymake project mwheel compile
text-property-search comint ansi-color ring thingatpt tex-ispell
tex-style tex dbus xml crm advice csv-mode sort edmacro kmacro
use-package-bind-key bind-key easy-mmode use-package-ensure
use-package-core windmove savehist delsel ef-winter-theme ef-themes comp
comp-cstr warnings cl-extra help-mode linum emms-auto bbdb-loaddefs
preview-latex auto-loads tex-site info tool-bar finder-inf regexp-opt rx
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 subr-x map url-vars seq byte-opt gv bytecomp
byte-compile cconv cl-loaddefs cl-lib iso-transl tooltip eldoc paren
electric uniquify ediff-hook vc-hooks lisp-float-type elisp-mode
tabulated-list replace newcomment text-mode lisp-mode prog-mode register
page tab-bar menu-bar rfn-eshadow isearch easymenu timer select 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 hashtable-print-readable
backquote threads dbusbind inotify lcms2 multi-tty make-network-process
native-compile emacs)

Memory information:
((conses 16 780232 125429)
 (symbols 48 48343 49)
 (strings 32 169729 21138)
 (string-bytes 1 5744242)
 (vectors 16 70207)
 (vector-slots 8 1218121 75214)
 (floats 8 1061 720)
 (intervals 56 3868 1500)
 (buffers 992 25))

-- 
Nathan DeGruchy
https://degruchy.org/
nathan@degruchy.org




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

* bug#66395: 28.2; Todo-mode locks up when trying to edit an entry
  2023-10-07 19:06 bug#66395: 28.2; Todo-mode locks up when trying to edit an entry Nathan R. DeGruchy
@ 2023-10-07 19:25 ` Eli Zaretskii
  2023-10-07 19:37 ` LdBeth
  2023-10-07 21:27 ` Stephen Berman
  2 siblings, 0 replies; 7+ messages in thread
From: Eli Zaretskii @ 2023-10-07 19:25 UTC (permalink / raw)
  To: Nathan R. DeGruchy; +Cc: 66395

> From: "Nathan R. DeGruchy" <nathan@degruchy.org>
> Date: Sat, 7 Oct 2023 19:06:55 +0000
> 
> I am trying to explore using 'todo-mode' as a todo list and while I can
> see and create entries in todo-mode using the normal functions, trying
> to edit an item seems to cause emacs to soft-lock. I can reproduce this
> in a config-less emacs via `emacs -Q`.

Can you please show a complete, self-contained recipe for reproducing
the problem, starting from "emacs -Q"?  You almost did that, but for
someone like me, who doesn't use the todo-mode, there are still gaps.
A complete step-by-step recipe would go a long way towards filling the
gaps.

Thanks.





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

* bug#66395: 28.2; Todo-mode locks up when trying to edit an entry
  2023-10-07 19:06 bug#66395: 28.2; Todo-mode locks up when trying to edit an entry Nathan R. DeGruchy
  2023-10-07 19:25 ` Eli Zaretskii
@ 2023-10-07 19:37 ` LdBeth
  2023-10-07 21:27 ` Stephen Berman
  2 siblings, 0 replies; 7+ messages in thread
From: LdBeth @ 2023-10-07 19:37 UTC (permalink / raw)
  To: nathan; +Cc: 66395

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


As we have discussed on IRC, the nonstandard timestamp format is the cause.
The hang is cause by the while loop `todo-item-start' not properly handle fail
case, however.

This patch would at least fix the hang.

---
LdBeth


[-- Attachment #2: patch.txt --]
[-- Type: text/plain, Size: 464 bytes --]

--- todo-mode.el.old	2023-10-07 14:28:59.000000000 -0500
+++ todo-mode.el	2023-10-07 14:30:20.000000000 -0500
@@ -5242,8 +5242,8 @@
 	   ;; Buffer is widened.
 	   (looking-at (regexp-quote todo-category-beg)))
     (goto-char (line-beginning-position))
-    (while (not (looking-at todo-item-start))
-      (forward-line -1))
+    (while (and (not (looking-at todo-item-start))
+                (= (forward-line -1) 0)))
     (point)))
 
 (defun todo-item-end ()

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

* bug#66395: 28.2; Todo-mode locks up when trying to edit an entry
  2023-10-07 19:06 bug#66395: 28.2; Todo-mode locks up when trying to edit an entry Nathan R. DeGruchy
  2023-10-07 19:25 ` Eli Zaretskii
  2023-10-07 19:37 ` LdBeth
@ 2023-10-07 21:27 ` Stephen Berman
  2023-10-07 23:20   ` Nathan R. DeGruchy
  2023-11-05 22:00   ` Stephen Berman
  2 siblings, 2 replies; 7+ messages in thread
From: Stephen Berman @ 2023-10-07 21:27 UTC (permalink / raw)
  To: Nathan R. DeGruchy; +Cc: LdBeth, 66395

On Sat, 7 Oct 2023 19:06:55 +0000 "Nathan R. DeGruchy" <nathan@degruchy.org> wrote:

> I am trying to explore using 'todo-mode' as a todo list and while I can
> see and create entries in todo-mode using the normal functions, trying
> to edit an item seems to cause emacs to soft-lock. I can reproduce this
> in a config-less emacs via `emacs -Q`.
>
> Basically, I have a todo-file at $HOME/.config/emacs/todo/tasks.todo,
> this was created when using `todo-show` initially. The contents are not
> very complex:
>
> (("Emacs" . [1 0 0 0]) ("Home" . [1 0 0 0]))
> --==-- Emacs
> [2023-10-07] Learn Todo Mode
>
> ==--== DONE
> --==-- Home
> [2023-10-07] Get new wiper blades
>
> ==--== DONE
>
> When on either of the items, if I hit 'e' to edit them, it causes emacs
> to lock up, specifically around `todo-done-item-p()`. I found this out
> by enabling `toggle-debug-on-quit`, reproducing the error, and the
> C-g'ing out of the loop/lockup. I also tried to trace through the
> todo-edit-item with edebug-defun. Stepping through, it seems to reach
> the same predicate function and ... stop.
>
> I'm not sure where to go from here.

On Sat, 07 Oct 2023 14:37:00 -0500 LdBeth <andpuke@foxmail.com> wrote:

> As we have discussed on IRC, the nonstandard timestamp format is the cause.

Yes.  This is a duplicate of bug#55284.  At the time that bug was
reported, I didn't have time to try fixing it (being the todo-mode
maintainer), and later, unfortunately, I forgot about it.  I'll try to
look into it soon, but, as I noted in that bug thread, I think it's not
easy to fix.  One issue is that todo-mode basically employs the same
handling of date formats as diary-lib.el, and the ISO date style causes
problems there too, see bug#55286.

> The hang is cause by the while loop `todo-item-start' not properly handle fail
> case, however.
>
> This patch would at least fix the hang.
>
> ---
> LdBeth
>
> --- todo-mode.el.old	2023-10-07 14:28:59.000000000 -0500
> +++ todo-mode.el	2023-10-07 14:30:20.000000000 -0500
> @@ -5242,8 +5242,8 @@
>  	   ;; Buffer is widened.
>  	   (looking-at (regexp-quote todo-category-beg)))
>      (goto-char (line-beginning-position))
> -    (while (not (looking-at todo-item-start))
> -      (forward-line -1))
> +    (while (and (not (looking-at todo-item-start))
> +                (= (forward-line -1) 0)))
>      (point)))
>
>  (defun todo-item-end ()

Thanks.  Even though this doesn't eliminate other problems with using
the ISO date style in todo-mode (or in the Emacs Diary), since it does
prevent the infinite loop here, it may be a good stopgap.

Steve Berman





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

* bug#66395: 28.2; Todo-mode locks up when trying to edit an entry
  2023-10-07 21:27 ` Stephen Berman
@ 2023-10-07 23:20   ` Nathan R. DeGruchy
  2023-11-05 22:00   ` Stephen Berman
  1 sibling, 0 replies; 7+ messages in thread
From: Nathan R. DeGruchy @ 2023-10-07 23:20 UTC (permalink / raw)
  To: Stephen Berman; +Cc: LdBeth, 66395@debbugs.gnu.org

Stephen Berman <stephen.berman@gmx.net> writes:

> On Sat, 7 Oct 2023 19:06:55 +0000 "Nathan R. DeGruchy" <nathan@degruchy.org> wrote:
>
>> I am trying to explore using 'todo-mode' as a todo list and while I can
>> see and create entries in todo-mode using the normal functions, trying
>> to edit an item seems to cause emacs to soft-lock. I can reproduce this
>> in a config-less emacs via `emacs -Q`.
>>
>> Basically, I have a todo-file at $HOME/.config/emacs/todo/tasks.todo,
>> this was created when using `todo-show` initially. The contents are not
>> very complex:
>>
>> (("Emacs" . [1 0 0 0]) ("Home" . [1 0 0 0]))
>> --==-- Emacs
>> [2023-10-07] Learn Todo Mode
>>
>> ==--== DONE
>> --==-- Home
>> [2023-10-07] Get new wiper blades
>>
>> ==--== DONE
>>
>> When on either of the items, if I hit 'e' to edit them, it causes emacs
>> to lock up, specifically around `todo-done-item-p()`. I found this out
>> by enabling `toggle-debug-on-quit`, reproducing the error, and the
>> C-g'ing out of the loop/lockup. I also tried to trace through the
>> todo-edit-item with edebug-defun. Stepping through, it seems to reach
>> the same predicate function and ... stop.
>>
>> I'm not sure where to go from here.
>
> On Sat, 07 Oct 2023 14:37:00 -0500 LdBeth <andpuke@foxmail.com> wrote:
>
>> As we have discussed on IRC, the nonstandard timestamp format is the cause.
>
> Yes.  This is a duplicate of bug#55284.  At the time that bug was
> reported, I didn't have time to try fixing it (being the todo-mode
> maintainer), and later, unfortunately, I forgot about it.  I'll try to
> look into it soon, but, as I noted in that bug thread, I think it's not
> easy to fix.  One issue is that todo-mode basically employs the same
> handling of date formats as diary-lib.el, and the ISO date style causes
> problems there too, see bug#55286.
>
>> The hang is cause by the while loop `todo-item-start' not properly handle fail
>> case, however.
>>
>> This patch would at least fix the hang.
>>
>> ---
>> LdBeth
>>
>> --- todo-mode.el.old	2023-10-07 14:28:59.000000000 -0500
>> +++ todo-mode.el	2023-10-07 14:30:20.000000000 -0500
>> @@ -5242,8 +5242,8 @@
>>  	   ;; Buffer is widened.
>>  	   (looking-at (regexp-quote todo-category-beg)))
>>      (goto-char (line-beginning-position))
>> -    (while (not (looking-at todo-item-start))
>> -      (forward-line -1))
>> +    (while (and (not (looking-at todo-item-start))
>> +                (= (forward-line -1) 0)))
>>      (point)))
>>
>>  (defun todo-item-end ()
>
> Thanks.  Even though this doesn't eliminate other problems with using
> the ISO date style in todo-mode (or in the Emacs Diary), since it does
> prevent the infinite loop here, it may be a good stopgap.
>
> Steve Berman

I guess I could also change back to 'american' or 'european' forms
instead of trying to force ISO8601. I appreciate the work being done.

-- 
Nathan DeGruchy
https://degruchy.org/
nathan@degruchy.org




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

* bug#66395: 28.2; Todo-mode locks up when trying to edit an entry
  2023-10-07 21:27 ` Stephen Berman
  2023-10-07 23:20   ` Nathan R. DeGruchy
@ 2023-11-05 22:00   ` Stephen Berman
  2023-11-12 14:10     ` bug#55284: " Stephen Berman
  1 sibling, 1 reply; 7+ messages in thread
From: Stephen Berman @ 2023-11-05 22:00 UTC (permalink / raw)
  To: Nathan R. DeGruchy; +Cc: Christos Ballas, LdBeth, 66395, 55284

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

merge 55284 66395
thanks

On Sat, 07 Oct 2023 23:27:46 +0200 Stephen Berman <stephen.berman@gmx.net> wrote:

> On Sat, 7 Oct 2023 19:06:55 +0000 "Nathan R. DeGruchy" <nathan@degruchy.org> wrote:
>
>> I am trying to explore using 'todo-mode' as a todo list and while I can
>> see and create entries in todo-mode using the normal functions, trying
>> to edit an item seems to cause emacs to soft-lock. I can reproduce this
>> in a config-less emacs via `emacs -Q`.
>>
>> Basically, I have a todo-file at $HOME/.config/emacs/todo/tasks.todo,
>> this was created when using `todo-show` initially. The contents are not
>> very complex:
>>
>> (("Emacs" . [1 0 0 0]) ("Home" . [1 0 0 0]))
>> --==-- Emacs
>> [2023-10-07] Learn Todo Mode
>>
>> ==--== DONE
>> --==-- Home
>> [2023-10-07] Get new wiper blades
>>
>> ==--== DONE
>>
>> When on either of the items, if I hit 'e' to edit them, it causes emacs
>> to lock up, specifically around `todo-done-item-p()`. I found this out
>> by enabling `toggle-debug-on-quit`, reproducing the error, and the
>> C-g'ing out of the loop/lockup. I also tried to trace through the
>> todo-edit-item with edebug-defun. Stepping through, it seems to reach
>> the same predicate function and ... stop.
>>
>> I'm not sure where to go from here.
>
> On Sat, 07 Oct 2023 14:37:00 -0500 LdBeth <andpuke@foxmail.com> wrote:
>
>> As we have discussed on IRC, the nonstandard timestamp format is the cause.
>
> Yes.  This is a duplicate of bug#55284.  At the time that bug was
> reported, I didn't have time to try fixing it (being the todo-mode
> maintainer), and later, unfortunately, I forgot about it.  I'll try to
> look into it soon, but, as I noted in that bug thread, I think it's not
> easy to fix.  One issue is that todo-mode basically employs the same
> handling of date formats as diary-lib.el, and the ISO date style causes
> problems there too, see bug#55286.

I've finally attended to this bug.  The problem is due to using a faulty
regular expression for matching todo date headers in the ISO format.
There was a related bug report years ago about a diary display problem
with the ISO format (bug#8583), and the fix for that (whose author
conceded it was "ugly") points the way to a fix for todo-mode, see the
attached patch (which I have to concede is even uglier and more
complicated than the fix for bug#8583, but I couldn't find a better
way).  (I actually had been aware of the diary bug and the fix, but
didn't try to apply it to todo-mode back then; I don't remember exactly
why but I guess because I concluded it was not straightforward to adapt
the fix to todo-mode and since I didn't use the ISO format myself I
lacked motivation, also because there had been no todo-mode bug reports
about it -- until bug#55286 (and now the current bug), but by then I had
forgotten about bug#8583.)

>> The hang is cause by the while loop `todo-item-start' not properly handle fail
>> case, however.
>>
>> This patch would at least fix the hang.
>>
>> ---
>> LdBeth
>>
>> --- todo-mode.el.old	2023-10-07 14:28:59.000000000 -0500
>> +++ todo-mode.el	2023-10-07 14:30:20.000000000 -0500
>> @@ -5242,8 +5242,8 @@
>>  	   ;; Buffer is widened.
>>  	   (looking-at (regexp-quote todo-category-beg)))
>>      (goto-char (line-beginning-position))
>> -    (while (not (looking-at todo-item-start))
>> -      (forward-line -1))
>> +    (while (and (not (looking-at todo-item-start))
>> +                (= (forward-line -1) 0)))
>>      (point)))
>>
>>  (defun todo-item-end ()
>
> Thanks.  Even though this doesn't eliminate other problems with using
> the ISO date style in todo-mode (or in the Emacs Diary), since it does
> prevent the infinite loop here, it may be a good stopgap.

With the attached patch I think this stopgap should be unnecessary: the
while-loop should no longer fail when the ISO date format is used
(barring any bugs in the patch, and if there are, it should fail so they
can be found and fixed).

However, using the ISO date format in todo-mode does necessitate
additional changes, in the code for editing todo item headers, which the
attached patch also includes.

Although with this patch todo-mode now supports the ISO date format,
there remains a problem.  Todo mode (like the Emacs Diary) uses the date
format specified by calendar-date-display-form, which is a user option
that has three default styles (American, European and ISO), which you
can change by customizing `calendar-date-style' or by executing
`calendar-set-date-style'.  But if you change it, that breaks using
todo-mode with any existing todo file that was created using a different
date format, in the same way that trying to use the ISO format with
todo-mode fails without the attached patch (i.e., the current bug).  (As
noted above with reference to bug#55286, the diary is subject to similar
breakage.)

After I came up with the attached patch to support the ISO date format
in todo-mode, I started tackling the issue of changing the date format,
and I now have what I think is a viable solution.  However, to implement
it I've had to make extensive changes in the todo-mode code, and also to
part of the internal structure of todo files (but not to the UI), and
I'm still testing these changes.  They include essentially the changes
in the attached patch (though partly in a more general form).
Therefore, what I'd like to do first is install this patch, after
waiting several days for any feedback.  I'll open a new bug to post and
discuss the more extensive changes I'd like to make.

Steve Berman


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: Todo mode support for ISO date format --]
[-- Type: text/x-patch, Size: 5786 bytes --]

diff --git a/lisp/calendar/todo-mode.el b/lisp/calendar/todo-mode.el
index 093ea0e22b6..5354a65799d 100644
--- a/lisp/calendar/todo-mode.el
+++ b/lisp/calendar/todo-mode.el
@@ -189,20 +189,53 @@ todo-month-abbrev-array
   "Array of abbreviated month names, in order.
 The final element is \"*\", indicating an unspecified month.")

+(defconst todo--date-pattern-groups
+  (pcase calendar-date-style
+          ('american '((monthname . "6") (month . "7") (day . "8") (year . "9")))
+          ('european '((day . "6") (monthname . "7") (month . "8") (year . "9")))
+          ('iso '((year . "6") (monthname . "7") (month . "8") (day . "9"))))
+  "Alist for grouping date components in `todo-date-pattern'.")
+
 (defconst todo-date-pattern
-  (let ((dayname (diary-name-pattern calendar-day-name-array nil t)))
-    (concat "\\(?4:\\(?5:" dayname "\\)\\|"
-	    (calendar-dlet
-                ((dayname)
-		 (monthname (format "\\(?6:%s\\)" (diary-name-pattern
-						   todo-month-name-array
-						   todo-month-abbrev-array)))
-		 (month "\\(?7:[0-9]+\\|\\*\\)")
-		 (day "\\(?8:[0-9]+\\|\\*\\)")
-		 (year "-?\\(?9:[0-9]+\\|\\*\\)"))
-	      (mapconcat #'eval calendar-date-display-form))
-	    "\\)"))
-  "Regular expression matching a todo item date header.")
+  (let* ((dayname (diary-name-pattern calendar-day-name-array nil t))
+         (d (concat "\\(?" (alist-get 'day todo--date-pattern-groups)
+                    ":[0-9]+\\|\\*\\)"))
+         (mn (format (concat "\\(?" (alist-get 'monthname
+                                               todo--date-pattern-groups)
+                             ":%s\\)")
+                     (diary-name-pattern todo-month-name-array
+                                         todo-month-abbrev-array)))
+         (m (concat "\\(?" (alist-get 'month todo--date-pattern-groups)
+                    ":[0-9]+\\|\\*\\)"))
+         (y (concat "\\(?" (alist-get 'year todo--date-pattern-groups)
+                    ":[0-9]+\\|\\*\\)"))
+         (dd "1111111")
+         (mm "2222222")
+         (yy "3333333")
+         (s (concat "\\(?4:\\(?5:" dayname "\\)\\|"
+	            (calendar-dlet
+                        ((dayname)
+		         (monthname mn)
+		         (year yy)
+		         (month mm)
+		         (day dd))
+                      (mapconcat #'eval calendar-date-display-form))
+	            "\\)")))
+    ;; The default value of calendar-iso-date-display-form calls
+    ;; `string-to-number' on the values of `month' and `day', so we
+    ;; gave them placeholder values above and now replace these with
+    ;; the necessary regexps with appropriately numbered groups, because
+    ;; `todo-edit-item--header' uses these groups.
+    (when (string-match dd s nil t)
+      (setq s (string-replace dd d s)))
+    (when (string-match mm s nil t)
+      (setq s (string-replace mm m s)))
+    (when (string-match yy s nil t)
+      (setq s (string-replace yy y s)))
+    s)
+  "Regular expression matching a todo item date header.
+The value of `calendar-date-display-form' determines the form of
+the date header.")

 ;; By itself this matches anything, because of the `?'; however, it's only
 ;; used in the context of `todo-date-pattern' (but Emacs Lisp lacks
@@ -2349,11 +2382,19 @@ todo-edit-item--header
 				     (regexp-quote todo-nondiary-end) "?")
 			     (line-end-position) t)
 	  (let* ((otime (match-string-no-properties 2))
-		 (odayname (match-string-no-properties 5))
-		 (omonthname (match-string-no-properties 6))
-		 (omonth (match-string-no-properties 7))
-		 (oday (match-string-no-properties 8))
-		 (oyear (match-string-no-properties 9))
+ 		 (odayname (match-string-no-properties 5))
+                 (mngroup (string-to-number
+                           (alist-get 'monthname todo--date-pattern-groups)))
+		 (omonthname (match-string-no-properties mngroup))
+                 (mgroup (string-to-number
+                          (alist-get 'month todo--date-pattern-groups)))
+		 (omonth (match-string-no-properties mgroup))
+                 (dgroup (string-to-number
+                          (alist-get 'day todo--date-pattern-groups)))
+		 (oday (match-string-no-properties dgroup))
+                 (ygroup (string-to-number
+                          (alist-get 'year todo--date-pattern-groups)))
+		 (oyear (match-string-no-properties ygroup))
 		 (tmn-array todo-month-name-array)
 		 (mlist (append tmn-array nil))
 		 (tma-array todo-month-abbrev-array)
@@ -2399,11 +2440,23 @@ todo-edit-item--header
 		 ((eq what 'month)
 		  (setf day oday
 			year oyear
-			(if (memq 'month calendar-date-display-form)
+                        ;; With default ISO style, 'month is in a
+                        ;; sublist of c-d-d-f, so we flatten it.
+			(if (memq 'month (flatten-tree
+                                          calendar-date-display-form))
 			    month
 			  monthname)
 			(cond ((not current-prefix-arg)
-			       (todo-read-date 'month))
+			       (let ((nmonth (todo-read-date 'month)))
+                                 ;; If old month is given as a number,
+                                 ;; have to convert new month name to
+                                 ;; the corresponding number.
+                                 (when omonth
+                                   (setq nmonth
+                                         (number-to-string
+                                          (1+ (seq-position tma-array
+                                                            nmonth)))))
+                                 nmonth))
 			      ((or (string= omonth "*") (= mm 13))
 			       (user-error "Cannot increment *"))
 			      (t

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

* bug#55284: bug#66395: 28.2; Todo-mode locks up when trying to edit an entry
  2023-11-05 22:00   ` Stephen Berman
@ 2023-11-12 14:10     ` Stephen Berman
  0 siblings, 0 replies; 7+ messages in thread
From: Stephen Berman @ 2023-11-12 14:10 UTC (permalink / raw)
  To: Nathan R. DeGruchy; +Cc: Christos Ballas, LdBeth, 66395, 55284

On Sun, 05 Nov 2023 23:00:36 +0100 Stephen Berman <stephen.berman@gmx.net> wrote:

> merge 55284 66395
> thanks
>
> On Sat, 07 Oct 2023 23:27:46 +0200 Stephen Berman <stephen.berman@gmx.net> wrote:
>
>> On Sat, 7 Oct 2023 19:06:55 +0000 "Nathan R. DeGruchy" <nathan@degruchy.org> wrote:
>>
>>> I am trying to explore using 'todo-mode' as a todo list and while I can
>>> see and create entries in todo-mode using the normal functions, trying
>>> to edit an item seems to cause emacs to soft-lock. I can reproduce this
>>> in a config-less emacs via `emacs -Q`.
>>>
>>> Basically, I have a todo-file at $HOME/.config/emacs/todo/tasks.todo,
>>> this was created when using `todo-show` initially. The contents are not
>>> very complex:
>>>
>>> (("Emacs" . [1 0 0 0]) ("Home" . [1 0 0 0]))
>>> --==-- Emacs
>>> [2023-10-07] Learn Todo Mode
>>>
>>> ==--== DONE
>>> --==-- Home
>>> [2023-10-07] Get new wiper blades
>>>
>>> ==--== DONE
>>>
>>> When on either of the items, if I hit 'e' to edit them, it causes emacs
>>> to lock up, specifically around `todo-done-item-p()`. I found this out
>>> by enabling `toggle-debug-on-quit`, reproducing the error, and the
>>> C-g'ing out of the loop/lockup. I also tried to trace through the
>>> todo-edit-item with edebug-defun. Stepping through, it seems to reach
>>> the same predicate function and ... stop.
>>>
[...]
> I've finally attended to this bug.  The problem is due to using a faulty
> regular expression for matching todo date headers in the ISO format.
[...]
> However, using the ISO date format in todo-mode does necessitate
> additional changes, in the code for editing todo item headers, which the
> attached patch also includes.
[...]
> Therefore, what I'd like to do first is install this patch, after
> waiting several days for any feedback.

I've now pushed the patch to master as commit 0bfe764fe56.

Steve Berman





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

end of thread, other threads:[~2023-11-12 14:10 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-10-07 19:06 bug#66395: 28.2; Todo-mode locks up when trying to edit an entry Nathan R. DeGruchy
2023-10-07 19:25 ` Eli Zaretskii
2023-10-07 19:37 ` LdBeth
2023-10-07 21:27 ` Stephen Berman
2023-10-07 23:20   ` Nathan R. DeGruchy
2023-11-05 22:00   ` Stephen Berman
2023-11-12 14:10     ` bug#55284: " Stephen Berman

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).