bug#32343: 27.0.50; Todo mode bugs involving done items separator
In todo-mode the done items separator is the divider (displayed as a
double line by default) between the todo and done items sections of each
todo category; it is not reachable by todo-mode navigation commands, but
it is reachable e.g. by C-n and C-p. The current code does not take
this possibility into account, and when certain todo-mode commands are
invoked with point on the separator, this can lead to the following
unexpected results, errors and even file corruption:
- When point is at BOL of done items separator, typing `i h' inserts the
new item as the penultimate in the category.
- When point is on EOL of done items separator, typing `i h' inserts the
new item as the first in the category.
- When point is at BOL or EOL of done items separator, typing `i p'
makes a copy of the last todo item.
- When point is on done items separator, typing `e' allows editing the
final non-done item.
- When point is at BOL or EOL of done items separator, typing `p' moves
to the second to last todo item.
- When point is at BOL or EOL of done items separator, typing `*' marks
or unmarks the last todo item.
- When point is at BOL of done items separator, typing `H' (to enable
but not to disable item highlighting) or `m', `k', `d', `r' or `#'
raises the error "Invalid search bound (wrong side of point)" in
todo-item-end; `d', `r' and `#' also move point to EOL.
- When point is at EOL of done items separator, typing `m' or `k'
highlights the last todo item, the space below it and the done items
separator; `d' deletes the last todo item (but the categories sexp
show one less todo and one more done item) as well as the done items
separator and raises the error "Category %s is missing
todo-category-done string" in todo-category-select; `r' raises and `#'
reprioritizes last item but both delete done items separator.
- When item highlighting is enabled and the done items section is
visible, then while repeating C-n or the down arrow, the item
highlighting stops as soon as point moves to the line displaying the
done items separator: Error in post-command-hook (hl-line-highlight):
(error "Invalid search bound (wrong side of point)"); and 'H' must be
pressed twice to restore item highlighting.
I have fixes for these bugs and will commit them and tests to master;
this bug report is for reference in the commit message.
In GNU Emacs 27.0.50 (build 10, x86_64-pc-linux-gnu, GTK+ Version 3.22.28)
of 2018-08-01 built on rosalinde
Repository revision: cabe9e5126bfed05643d595589031cce8a404255
Windowing system distributor 'The X.Org Foundation', version 11.0.11906000
System Description: Linux From Scratch