unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* [kobayays@otsukakj.co.jp: vertical-motion]
@ 2006-08-27  8:39 Richard Stallman
  2006-08-27  8:49 ` David Kastrup
  2006-08-28 22:00 ` Chong Yidong
  0 siblings, 2 replies; 9+ messages in thread
From: Richard Stallman @ 2006-08-27  8:39 UTC (permalink / raw)


Would someone please DTRT and ack?

------- Start of forwarded message -------
From: KOBAYASHI Yasuhiro <kobayays@otsukakj.co.jp>
To: emacs-pretest-bug@gnu.org
Date: Thu, 24 Aug 2006 14:13:30 +0900
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Subject: vertical-motion
X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=failed 
	version=3.0.4

It seems that vertical-motion is not right in the case which
some propertized texts are included in the line.


- - Test function:

(defun test-case (n)
  ;; Preparate the test buffer.
  (switch-to-buffer (get-buffer-create "test"))
  (erase-buffer)
  (let ((pos (point-min)))
    (dotimes (i 3) (insert "\t\t\t\t\t\n"))
    (while (< pos (point-max))
      (and (= (char-after pos) ?\t)
	   (put-text-property pos (1+ pos) 'display (propertize "   >")))
      (setq pos (1+ pos))))
  ;; The following is the test case.
  (goto-char (point-min))
  (while (< (point) (point-max))
    (beginning-of-line)
    (forward-char n)
    ;; If POINT is not on the edge of the line,
    ;; POINT move to the beginning of the save line.
    (vertical-motion 1)))


- - Correct actions.
(test-case 0)
(test-case 5)

- - Strange actions.
(test-case 1)
(test-case 2)
(test-case 3)
(test-case 4)

- -- 
KOBAYASHI Yasuhiro <kobayays@otsukakj.co.jp>


_______________________________________________
emacs-pretest-bug mailing list
emacs-pretest-bug@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-pretest-bug
------- End of forwarded message -------

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

* Re: [kobayays@otsukakj.co.jp: vertical-motion]
  2006-08-27  8:39 [kobayays@otsukakj.co.jp: vertical-motion] Richard Stallman
@ 2006-08-27  8:49 ` David Kastrup
  2006-08-27 21:51   ` Kim F. Storm
  2006-08-28  9:52   ` Richard Stallman
  2006-08-28 22:00 ` Chong Yidong
  1 sibling, 2 replies; 9+ messages in thread
From: David Kastrup @ 2006-08-27  8:49 UTC (permalink / raw)
  Cc: emacs-devel

Richard Stallman <rms@gnu.org> writes:

> Would someone please DTRT and ack?
>
> From: KOBAYASHI Yasuhiro <kobayays@otsukakj.co.jp>
> Subject: vertical-motion
> To: emacs-pretest-bug@gnu.org
> Date: Thu, 24 Aug 2006 14:13:30 +0900
>
> It seems that vertical-motion is not right in the case which
> some propertized texts are included in the line.

I want to add that navigating across large images has become a
completely unworking mess in the last year.  No combination of
forward-line and scroll-down by now makes it possible to reliably move
across such an item (either direction), and it is very unpredictable
what will happen at all.  A year ago, Emacs 22 was on a good track.

The last bug reports I sent in were basically met with "this is not
going to get fixed before the release".

Very frustrating, since we had stuff that worked almost perfectly in
that regard one year ago.  Now the situation appears at least as bad
as in Emacs 21.

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

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

* Re: [kobayays@otsukakj.co.jp: vertical-motion]
  2006-08-27  8:49 ` David Kastrup
@ 2006-08-27 21:51   ` Kim F. Storm
  2006-08-27 22:10     ` David Kastrup
  2006-08-28  9:52   ` Richard Stallman
  1 sibling, 1 reply; 9+ messages in thread
From: Kim F. Storm @ 2006-08-27 21:51 UTC (permalink / raw)
  Cc: rms, emacs-devel

David Kastrup <dak@gnu.org> writes:

> Richard Stallman <rms@gnu.org> writes:
>
>> Would someone please DTRT and ack?
>>
>> From: KOBAYASHI Yasuhiro <kobayays@otsukakj.co.jp>
>> Subject: vertical-motion
>> To: emacs-pretest-bug@gnu.org
>> Date: Thu, 24 Aug 2006 14:13:30 +0900
>>
>> It seems that vertical-motion is not right in the case which
>> some propertized texts are included in the line.
>
> I want to add that navigating across large images has become a
> completely unworking mess in the last year.  No combination of
> forward-line and scroll-down by now makes it possible to reliably move
> across such an item (either direction), and it is very unpredictable
> what will happen at all.  A year ago, Emacs 22 was on a good track.

Can you point to some changes which made things worse?

> The last bug reports I sent in were basically met with "this is not
> going to get fixed before the release".

I would like to fix it ... but this is not trivial, and I've yet to 
find a good way to do it (which doesn't break a lot of other code).

> Very frustrating, since we had stuff that worked almost perfectly in
> that regard one year ago.  Now the situation appears at least as bad
> as in Emacs 21.

I share your frustration.

Do forward-char / backward-char work better in these cases??

-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

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

* Re: [kobayays@otsukakj.co.jp: vertical-motion]
  2006-08-27 21:51   ` Kim F. Storm
@ 2006-08-27 22:10     ` David Kastrup
  2006-08-27 22:41       ` Kim F. Storm
  2006-08-28 22:10       ` Richard Stallman
  0 siblings, 2 replies; 9+ messages in thread
From: David Kastrup @ 2006-08-27 22:10 UTC (permalink / raw)
  Cc: rms, emacs-devel

storm@cua.dk (Kim F. Storm) writes:

> David Kastrup <dak@gnu.org> writes:
>
>> Richard Stallman <rms@gnu.org> writes:
>>
>>> Would someone please DTRT and ack?
>>>
>>> From: KOBAYASHI Yasuhiro <kobayays@otsukakj.co.jp>
>>> Subject: vertical-motion
>>> To: emacs-pretest-bug@gnu.org
>>> Date: Thu, 24 Aug 2006 14:13:30 +0900
>>>
>>> It seems that vertical-motion is not right in the case which
>>> some propertized texts are included in the line.
>>
>> I want to add that navigating across large images has become a
>> completely unworking mess in the last year.  No combination of
>> forward-line and scroll-down by now makes it possible to reliably move
>> across such an item (either direction), and it is very unpredictable
>> what will happen at all.  A year ago, Emacs 22 was on a good track.
>
> Can you point to some changes which made things worse?

There have been so many changes in that area that it would be hard to
point to any particular one.  There was progressive deterioration.
There was even a time where the screen display and the behavior could
get out of sync (the cursor displays at a different point than it
behaves) and I am not sure this has not occured recently.

Since you said no fixes where intended before the release, I stopped
actively checking for things like that since it would only annoy me to
no good cause.

And there are things where clicking on some highlighted line (probably
not fully visible) will cause the line to jump away in some manner of
recentering, thus evading the click action, and jump back afterwards.
Sort of click-avoidance-mode.

I just don't understand how stuff like that tests as an improvement.

>> The last bug reports I sent in were basically met with "this is not
>> going to get fixed before the release".
>
> I would like to fix it ... but this is not trivial, and I've yet to
> find a good way to do it (which doesn't break a lot of other code).
>
>> Very frustrating, since we had stuff that worked almost perfectly in
>> that regard one year ago.  Now the situation appears at least as bad
>> as in Emacs 21.
>
> I share your frustration.
>
> Do forward-char / backward-char work better in these cases??

Irrelevant.  I use the equivalent of auto-reveal-mode on
forward-char/backward-char.

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

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

* Re: [kobayays@otsukakj.co.jp: vertical-motion]
  2006-08-27 22:10     ` David Kastrup
@ 2006-08-27 22:41       ` Kim F. Storm
  2006-08-28 22:10       ` Richard Stallman
  1 sibling, 0 replies; 9+ messages in thread
From: Kim F. Storm @ 2006-08-27 22:41 UTC (permalink / raw)
  Cc: rms, emacs-devel

David Kastrup <dak@gnu.org> writes:

> There have been so many changes in that area that it would be hard to
> point to any particular one.  There was progressive deterioration.
> There was even a time where the screen display and the behavior could
> get out of sync (the cursor displays at a different point than it
> behaves) and I am not sure this has not occured recently.
>
> Since you said no fixes where intended before the release, I stopped
> actively checking for things like that since it would only annoy me to
> no good cause.

.. unless I can find some way to fix it which isn't too complex ..

If you can provide more test cases that I can look at, maybe I can
find the right fix.

> And there are things where clicking on some highlighted line (probably
> not fully visible) will cause the line to jump away in some manner of
> recentering, thus evading the click action, and jump back afterwards.
> Sort of click-avoidance-mode.

This is news to me.  So examples please!

I have fixed a few redisplay issues with "cursors outside visible part
of window" -- one of those might have broken image display or behaviour
with highlighting.

> I just don't understand how stuff like that tests as an improvement.

Fixing one bug often leads to another bug -- so please report problems
that you think are related to _recent_ changes.

  It's a bit annoying for the to be told that fixes I might have made
a year ago broke something else, and I wasn't told at the time -- now
I have to use a lot of time to find out what changes may have broken
things.

>>> The last bug reports I sent in were basically met with "this is not
>>> going to get fixed before the release".
>>
>> I would like to fix it ... but this is not trivial, and I've yet to
>> find a good way to do it (which doesn't break a lot of other code).

And now you tell me, that things degraded gradually, so there are
probably several things that influences the current bad behaviour.
Which is actually also my experience with trying to solve it. :-(

>> Do forward-char / backward-char work better in these cases??
>
> Irrelevant.  I use the equivalent of auto-reveal-mode on
> forward-char/backward-char.

Too bad -- as I have found that using those keys typically
do scroll images in cases where the scrolling commands don't.

So far, I've found that it is primarily the scrolling commands which
are broken -- often they make false decisions when chosing a new
window start in the presense of a partially visible image.

I'll give fixing it another shot this week.

-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

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

* Re: [kobayays@otsukakj.co.jp: vertical-motion]
  2006-08-27  8:49 ` David Kastrup
  2006-08-27 21:51   ` Kim F. Storm
@ 2006-08-28  9:52   ` Richard Stallman
  1 sibling, 0 replies; 9+ messages in thread
From: Richard Stallman @ 2006-08-28  9:52 UTC (permalink / raw)
  Cc: emacs-devel

    I want to add that navigating across large images has become a
    completely unworking mess in the last year.  No combination of
    forward-line and scroll-down by now makes it possible to reliably move
    across such an item (either direction), and it is very unpredictable
    what will happen at all.  A year ago, Emacs 22 was on a good track.

    The last bug reports I sent in were basically met with "this is not
    going to get fixed before the release".

I would like to reconsider this.  If we have made it worse than it
was, we should make one more attempt to find a good fix.  Perhaps
conditionalizing some of the changes that made it worse would be a
sufficient fix.

Could you please resend the report that described this problem?

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

* Re: [kobayays@otsukakj.co.jp: vertical-motion]
  2006-08-27  8:39 [kobayays@otsukakj.co.jp: vertical-motion] Richard Stallman
  2006-08-27  8:49 ` David Kastrup
@ 2006-08-28 22:00 ` Chong Yidong
  2006-08-29 22:17   ` Chong Yidong
  1 sibling, 1 reply; 9+ messages in thread
From: Chong Yidong @ 2006-08-28 22:00 UTC (permalink / raw)
  Cc: emacs-devel

> From: KOBAYASHI Yasuhiro <kobayays@otsukakj.co.jp>
> Subject: vertical-motion
>
> It seems that vertical-motion is not right in the case which
> some propertized texts are included in the line.
>
> (defun test-case (n)
>   ;; Preparate the test buffer.
>   (switch-to-buffer (get-buffer-create "test"))
>   (erase-buffer)
>   (let ((pos (point-min)))
>     (dotimes (i 3) (insert "\t\t\t\t\t\n"))
>     (while (< pos (point-max))
>       (and (= (char-after pos) ?\t)
> 	   (put-text-property pos (1+ pos) 'display (propertize "   >")))
>       (setq pos (1+ pos))))
>   ;; The following is the test case.
>   (goto-char (point-min))
>   (while (< (point) (point-max))
>     (beginning-of-line)
>     (forward-char n)
>     ;; If POINT is not on the edge of the line,
>     ;; POINT move to the beginning of the save line.
>     (vertical-motion 1)))
>
> - - Strange actions.
> (test-case 1)

The problem is that when the iterator method at PT is GET_FROM_STRING,
the value of it.current after calling move_it_to is PT + 1.  This is
because the call to set_iterator_to_next in xdisp.c:6607 (inside
move_it_in_display_line_to), upon reaching the end of the display
string at PT, sees that there are no more strings to display at PT and
calls pop_it, which automagically advances the iterator to PT + 1.
The code in Fvertical_motion then misfires:

      /* Move back if we got too far.  This may happen if
	 truncate-lines is on and PT is beyond right margin.
	 It may also happen if it_start is on an image or a stretch
	 glyph -- in that case, don't go back.  */
      if (IT_CHARPOS (it) > it_start && XINT (lines) > 0
	  && !start_on_image_or_stretch_p)
	move_it_by_lines (&it, -1, 0);

I propose the following fix.  It fixes the bug described in the above
bug report.

*** emacs/src/indent.c.~1.183.~	2006-02-25 13:07:18.000000000 -0500
--- emacs/src/indent.c	2006-08-28 17:54:41.000000000 -0400
***************
*** 2074,2080 ****
      {
        int it_start;
        int oselective;
!       int start_on_image_or_stretch_p;
  
        SET_TEXT_POS (pt, PT, PT_BYTE);
        start_display (&it, w, pt);
--- 2074,2080 ----
      {
        int it_start;
        int oselective;
!       int start_on_image_or_stretch_or_string_p;
  
        SET_TEXT_POS (pt, PT, PT_BYTE);
        start_display (&it, w, pt);
***************
*** 2086,2093 ****
  	 while the end position is really at some X > 0, the same X that
  	 PT had.  */
        it_start = IT_CHARPOS (it);
!       start_on_image_or_stretch_p = (it.method == GET_FROM_IMAGE
! 				     || it.method == GET_FROM_STRETCH);
        reseat_at_previous_visible_line_start (&it);
        it.current_x = it.hpos = 0;
        /* Temporarily disable selective display so we don't move too far */
--- 2086,2094 ----
  	 while the end position is really at some X > 0, the same X that
  	 PT had.  */
        it_start = IT_CHARPOS (it);
!       start_on_image_or_stretch_or_string_p = (it.method == GET_FROM_IMAGE
! 					       || it.method == GET_FROM_STRETCH
! 					       || it.method == GET_FROM_STRING);
        reseat_at_previous_visible_line_start (&it);
        it.current_x = it.hpos = 0;
        /* Temporarily disable selective display so we don't move too far */
***************
*** 2098,2107 ****
  
        /* Move back if we got too far.  This may happen if
  	 truncate-lines is on and PT is beyond right margin.
! 	 It may also happen if it_start is on an image or a stretch
! 	 glyph -- in that case, don't go back.  */
        if (IT_CHARPOS (it) > it_start && XINT (lines) > 0
! 	  && !start_on_image_or_stretch_p)
  	move_it_by_lines (&it, -1, 0);
  
        it.vpos = 0;
--- 2099,2108 ----
  
        /* Move back if we got too far.  This may happen if
  	 truncate-lines is on and PT is beyond right margin.
! 	 It may also happen if it_start is on an image, stretch
! 	 glyph, or string -- in that case, don't go back.  */
        if (IT_CHARPOS (it) > it_start && XINT (lines) > 0
! 	  && !start_on_image_or_stretch_or_string_p)
  	move_it_by_lines (&it, -1, 0);
  
        it.vpos = 0;

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

* Re: [kobayays@otsukakj.co.jp: vertical-motion]
  2006-08-27 22:10     ` David Kastrup
  2006-08-27 22:41       ` Kim F. Storm
@ 2006-08-28 22:10       ` Richard Stallman
  1 sibling, 0 replies; 9+ messages in thread
From: Richard Stallman @ 2006-08-28 22:10 UTC (permalink / raw)
  Cc: emacs-devel, storm

    Since you said no fixes where intended before the release, I stopped
    actively checking for things like that since it would only annoy me to
    no good cause.

Please start again.

    And there are things where clicking on some highlighted line (probably
    not fully visible) will cause the line to jump away in some manner of
    recentering, thus evading the click action, and jump back afterwards.
    Sort of click-avoidance-mode.

    I just don't understand how stuff like that tests as an improvement.

I know you are upset, but please don't accuse us of trying to hurt
things.  Each change that was installed was intended to fix a bug.
You know this.

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

* Re: [kobayays@otsukakj.co.jp: vertical-motion]
  2006-08-28 22:00 ` Chong Yidong
@ 2006-08-29 22:17   ` Chong Yidong
  0 siblings, 0 replies; 9+ messages in thread
From: Chong Yidong @ 2006-08-29 22:17 UTC (permalink / raw)
  Cc: emacs-devel

> The problem is that when the iterator method at PT is GET_FROM_STRING,
> the value of it.current after calling move_it_to is PT + 1.  This is
> because the call to set_iterator_to_next in xdisp.c:6607 (inside
> move_it_in_display_line_to), upon reaching the end of the display
> string at PT, sees that there are no more strings to display at PT and
> calls pop_it, which automagically advances the iterator to PT + 1.
> The code in Fvertical_motion then misfires.
>
> I propose the following fix.  It fixes the bug described in the above
> bug report.

I have checked in the fix.

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

end of thread, other threads:[~2006-08-29 22:17 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-08-27  8:39 [kobayays@otsukakj.co.jp: vertical-motion] Richard Stallman
2006-08-27  8:49 ` David Kastrup
2006-08-27 21:51   ` Kim F. Storm
2006-08-27 22:10     ` David Kastrup
2006-08-27 22:41       ` Kim F. Storm
2006-08-28 22:10       ` Richard Stallman
2006-08-28  9:52   ` Richard Stallman
2006-08-28 22:00 ` Chong Yidong
2006-08-29 22:17   ` Chong Yidong

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).