Subject: 27.0.50; Todo mode bugs involving done items separator

From: Stephen Berman <[email-masked]>
Date: Wed, 01 Aug 2018 14:30:00 +0200

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