[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Display problems with 'before-string in overlay

From: Chong Yidong
Subject: Re: Display problems with 'before-string in overlay
Date: Thu, 12 Apr 2007 11:26:41 -0400
User-agent: Gnus/5.11 (Gnus v5.11) Emacs/22.0.97 (gnu/linux)

address@hidden (Kim F. Storm) writes:

> Can you track down the bug report(s) which lead up to the fix I
> installed, so you can confirm that your change also fixes the old bug(s).
> I must be close to the date in the ChangeLog.

The original bug report was at


However, your fix appears to have been unrelated to that original bug


  From: Kim F. Storm
  Subject: Re: Overlays disappearing during line-by-line scrolling
  Date: Wed, 13 Jul 2005 12:35:42 +0200

  I have installed some changes to fix this and other problems related
  to line-move around such multi-line overlay strings.

  The changes touches on some tricky low-level "move_it_..." functions
  so I may have broken other things...

* I also fixed problems with positioning the cursor on (first char of)
* such multi-line strings.

  Finally, I fixed problems related to vertical-motion not moving when
  point is on an image.

The ChangeLog entry says:

  Row is ok if cursor is at newline from string, but string starts on
  this line (so we always position cursor at start of string).

I think the current code is mistaken.  The ChangeLog entry and the
comments both say that we want to set cursor_row_p to a non-zero value
in the case where the display string starts in this row.  But that's
not what it's doing; Lennart is correct in pointing out that it's
setting cursor_row_p unconditionally, since

   PT == MATRIX_ROW_END_CHARPOS (row) implies

To actually do what the comments and ChangeLog say we want to do, we
would have to scan backward in the glyph row for the beginning of the
string, which would be significantly more complicated than the current

For the Emacs 22 release, maybe we should simply revert this change to

        cursor_row_p = row->continued_p;

It does not cause the original 2005 bug report to reappear, and it
doesn't seem to affect anything else as far as I can tell.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]