Subject: Re: bug#15841: Display bugs with cache-long-lines non-nil

From: Stephen Berman <[email-masked]>
Date: Mon, 11 Nov 2013 15:12:15 +0100

This change broke dired-maybe-insert-subdir.  Perhaps this should be a
new bug number, but since part of the breakage is display-related, I
decided to report it here.  To reproduce:

0. emacs -Q (built from trunk bzr 115033 or later)
1. Open a directory in Dired, e.g. the Emacs source tree root.
2. Put point on an entry listing a directory, e.g. admin.
3. Type `i'.
=> Emacs hangs.

If I repeat the recipe but after step 1 type `M-: (setq cache-long-lines
nil)', then at step 3, `i' works as expected.

Here are more details of the breakage:

Typing `C-g' releases the hang and shows the admin subdirectory, but its
display is corrupted: (i) the "available" blocks information, which
should appear at the end of the "total" line, instead appears to the
right of the first entry `.' and is fontified with dired-directory face;
(ii) while all the entries of admin are listed below the `..' entry, the
entire line of each entry is fontified with dired-directory face, and
these lines cannot be accessed by vertical motion commands like `C-n' or
`C-p', though they can be with horizontal motion commands like `C-f' and
`C-p'.  In fact, all of these entries appear to Dired to be part of the
line of the `..' entry, and AFACT this is what causes the hang: Emacs
infloops in dired-move-to-filename because, when point appears to be at
eof, beginning-of-line moves it back to the start of the `..' entry.

Steve Berman