From: Lennart Borgman <lennart.borgman@gmail.com>
To: Eli Zaretskii <eliz@gnu.org>
Cc: david@harpegolden.net, emacs-devel@gnu.org,
Stefan Monnier <monnier@iro.umontreal.ca>,
storm@cua.dk
Subject: Re: The unwarranted scrolling assumption
Date: Thu, 17 Jun 2010 06:55:17 +0200 [thread overview]
Message-ID: <AANLkTim4llT4SxTOOmB4WOIHYxLw8zCzyMUwNUzGaIuf@mail.gmail.com> (raw)
In-Reply-To: <AANLkTikUt-92i3cCuz02Ee51yPZjjuPdrba0ZF5hI5Dw@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 1937 bytes --]
On Thu, Jun 17, 2010 at 5:59 AM, Lennart Borgman
<lennart.borgman@gmail.com> wrote:
> On Thu, Jun 17, 2010 at 5:10 AM, Lennart Borgman
> <lennart.borgman@gmail.com> wrote:
>> On Thu, Jun 17, 2010 at 5:05 AM, Eli Zaretskii <eliz@gnu.org> wrote:
>>>> From: Stefan Monnier <monnier@iro.umontreal.ca>
>>>> Cc: Lennart Borgman <lennart.borgman@gmail.com>, storm@cua.dk, emacs-devel@gnu.org, david@harpegolden.net
>>>> Date: Wed, 16 Jun 2010 20:54:52 -0400
>>>>
>>>> Indeed what he suggests is probably impossible. But the end result he's
>>>> after is definitely possible: move the window-start as little as possible
>>>> (tho still, line by line) to keep point displayed.
>>>
>>> xdisp.c already tries to do that, we just need to find out why it
>>> fails in this particular case.
>>
>> After trying to restore the clip_changed value when save-restriction,
>> widen etc unnecessarily changed I suddenly wonder why they changed it.
>> Is not this something that only redisplay should handle? redisplay_can
>> easily save the clipping when it sets clip_changed to 0 and compare
>> with that when it enters redisplay_window and set clip_changed to 1 if
>> the saved clipping does not match.
>>
>> Does that sound reasonable? (I do not know if I am missing something.)
>
> At least it works. I just tested. First time I am using Emacs without
> "jumping scrolling"! :-)
>
> If you think this is the right way to fix it I will send patches later
> when I cleaned up a bit.
>
> There is one more similar problem which I do not know how to handle,
> in fileio.c. In the function Finsert_file_contents clip_changed is set
> to 1. I am not quite sure of the impact of this but it looks wrong to
> me to do this. I think the display engine should be told, but it must
> decide what to do with redisplay, not fileio.
Here is the patch (without the fileio.c part which I leave until I got
some comments).
[-- Attachment #2: buffer-h-jumpscroll-0.diff --]
[-- Type: application/octet-stream, Size: 514 bytes --]
=== modified file 'src/buffer.h'
--- trunk/src/buffer.h 2010-04-20 17:01:39 +0000
+++ patched/src/buffer.h 2010-06-17 04:48:01 +0000
@@ -541,6 +541,9 @@
/* Set nonzero whenever the narrowing is changed in this buffer. */
int clip_changed;
+ /* Set to the narrowing in effect when clip_changed is set to 0. */
+ EMACS_INT clip_begv;
+ EMACS_INT clip_zv;
/* If the long line scan cache is enabled (i.e. the buffer-local
variable cache-long-line-scans is non-nil), newline_cache
[-- Attachment #3: editfns-jumpscroll-0.diff --]
[-- Type: application/octet-stream, Size: 1508 bytes --]
=== modified file 'src/editfns.c'
--- trunk/src/editfns.c 2010-06-10 05:31:36 +0000
+++ patched/src/editfns.c 2010-06-17 04:07:10 +0000
@@ -3215,12 +3221,13 @@
()
{
if (BEG != BEGV || Z != ZV)
- current_buffer->clip_changed = 1;
+ {
BEGV = BEG;
BEGV_BYTE = BEG_BYTE;
SET_BUF_ZV_BOTH (current_buffer, Z, Z_BYTE);
/* Changing the buffer bounds invalidates any recorded current column. */
invalidate_current_column ();
+ }
return Qnil;
}
@@ -3249,8 +3256,7 @@
args_out_of_range (start, end);
if (BEGV != XFASTINT (start) || ZV != XFASTINT (end))
- current_buffer->clip_changed = 1;
-
+ {
SET_BUF_BEGV (current_buffer, XFASTINT (start));
SET_BUF_ZV (current_buffer, XFASTINT (end));
if (PT < XFASTINT (start))
@@ -3259,6 +3265,7 @@
SET_PT (XFASTINT (end));
/* Changing the buffer bounds invalidates any recorded current column. */
invalidate_current_column ();
+ }
return Qnil;
}
@@ -3327,8 +3334,6 @@
clip_to_bounds (beg->charpos, pt, end->charpos),
clip_to_bounds (beg->bytepos, BUF_PT_BYTE (buf),
end->bytepos));
-
- buf->clip_changed = 1; /* Remember that the narrowing changed. */
}
}
else
@@ -3340,8 +3345,6 @@
{
SET_BUF_BEGV_BOTH (buf, BUF_BEG (buf), BUF_BEG_BYTE (buf));
SET_BUF_ZV_BOTH (buf, BUF_Z (buf), BUF_Z_BYTE (buf));
-
- buf->clip_changed = 1; /* Remember that the narrowing changed. */
}
}
[-- Attachment #4: xdisp-jumpscroll-0.diff --]
[-- Type: application/octet-stream, Size: 822 bytes --]
=== modified file 'src/xdisp.c'
--- trunk/src/xdisp.c 2010-06-01 02:34:49 +0000
+++ patched/src/xdisp.c 2010-06-17 04:14:21 +0000
@@ -11716,7 +11716,11 @@
&& w->current_matrix->buffer == b
&& w->current_matrix->zv == BUF_ZV (b)
&& w->current_matrix->begv == BUF_BEGV (b))
+ {
b->clip_changed = 0;
+ b->clip_begv = b->begv;
+ b->clip_zv = b->zv;
+ }
/* If display wasn't paused, and W is not a tool bar window, see if
point has been moved into or out of a composition. In that case,
@@ -14055,6 +14059,9 @@
int last_line_misfit = 0;
int beg_unchanged, end_unchanged;
+ if ((buffer->clip_begv != buffer->begv) || (buffer->clip_zv != buffer->zv))
+ buffer->clip_changed = 1;
+
SET_TEXT_POS (lpoint, PT, PT_BYTE);
opoint = lpoint;
next prev parent reply other threads:[~2010-06-17 4:55 UTC|newest]
Thread overview: 196+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-06-15 20:37 The unwarranted scrolling assumption Lennart Borgman
2010-06-15 21:39 ` Juri Linkov
2010-06-15 22:41 ` Juanma Barranquero
2010-06-15 23:00 ` Lennart Borgman
2010-06-15 23:24 ` Sean Sieger
2010-06-15 23:46 ` Juanma Barranquero
2010-06-15 23:59 ` Lennart Borgman
2010-06-16 0:21 ` Juanma Barranquero
2010-06-16 0:29 ` Chad Brown
2010-06-16 0:39 ` Lennart Borgman
2010-06-16 13:45 ` Stefan Monnier
2010-06-16 0:55 ` David De La Harpe Golden
2010-06-16 1:40 ` Lennart Borgman
2010-06-16 9:36 ` Kim F. Storm
2010-06-16 17:35 ` Lennart Borgman
2010-06-16 21:22 ` Eli Zaretskii
2010-06-16 22:17 ` Lennart Borgman
2010-06-17 3:04 ` Eli Zaretskii
2010-06-17 18:44 ` Lennart Borgman
2010-06-17 19:08 ` Eli Zaretskii
2010-06-17 19:14 ` Lennart Borgman
2010-06-17 19:26 ` Eli Zaretskii
2010-06-17 19:35 ` Lennart Borgman
2010-06-18 7:39 ` Eli Zaretskii
2010-06-18 13:30 ` Lennart Borgman
2010-06-18 13:52 ` Eli Zaretskii
2010-06-18 14:07 ` Lennart Borgman
2010-06-18 14:29 ` Eli Zaretskii
2010-06-18 14:37 ` Lennart Borgman
2010-06-18 14:58 ` Eli Zaretskii
2010-06-18 15:08 ` Lennart Borgman
2010-06-18 15:35 ` Eli Zaretskii
2010-06-18 16:39 ` Lennart Borgman
2010-06-18 17:31 ` Lennart Borgman
2010-06-18 19:00 ` Eli Zaretskii
2010-06-18 21:25 ` Lennart Borgman
2010-06-19 0:18 ` Lennart Borgman
2010-06-19 8:44 ` Eli Zaretskii
2010-06-19 15:41 ` Lennart Borgman
2010-06-19 8:36 ` Eli Zaretskii
2010-06-19 14:45 ` Lennart Borgman
2010-06-18 15:22 ` Stefan Monnier
2010-06-18 15:29 ` Lennart Borgman
2010-06-18 15:36 ` Lennart Borgman
2010-06-17 22:16 ` Lennart Borgman
2010-06-17 22:50 ` Lennart Borgman
2010-06-17 23:49 ` Lennart Borgman
2010-06-17 23:59 ` Lennart Borgman
2010-06-18 0:12 ` Lennart Borgman
2010-06-18 7:58 ` Eli Zaretskii
2010-06-18 13:48 ` Lennart Borgman
2010-06-19 13:27 ` Eli Zaretskii
2010-06-19 13:36 ` Lennart Borgman
2010-06-19 14:10 ` Eli Zaretskii
2010-06-19 14:20 ` Lennart Borgman
2010-06-19 16:07 ` Eli Zaretskii
2010-06-19 17:21 ` Lennart Borgman
2010-06-19 18:02 ` Eli Zaretskii
2010-06-19 18:07 ` Lennart Borgman
2010-06-19 18:31 ` Eli Zaretskii
2010-06-19 19:11 ` Lennart Borgman
2010-06-18 7:54 ` Eli Zaretskii
2010-06-18 13:30 ` Stefan Monnier
2010-06-18 14:09 ` Eli Zaretskii
2010-06-18 14:18 ` Lennart Borgman
2010-06-18 15:11 ` Stefan Monnier
2010-06-18 15:46 ` Eli Zaretskii
2010-06-18 18:30 ` Stefan Monnier
2010-06-19 9:51 ` Eli Zaretskii
2010-06-19 11:36 ` Eli Zaretskii
2010-06-19 12:54 ` Eli Zaretskii
2010-06-19 13:00 ` Lennart Borgman
2010-06-19 14:03 ` Eli Zaretskii
2010-06-19 14:11 ` Lennart Borgman
2010-06-19 14:16 ` Eli Zaretskii
2010-06-19 14:20 ` Lennart Borgman
2010-06-19 16:05 ` Eli Zaretskii
2010-06-19 17:22 ` Lennart Borgman
2010-06-19 17:54 ` Eli Zaretskii
2010-06-19 17:58 ` Lennart Borgman
2010-06-19 18:30 ` Eli Zaretskii
2010-06-19 19:10 ` Lennart Borgman
2010-06-19 21:18 ` Eli Zaretskii
2010-06-19 21:58 ` Lennart Borgman
2010-06-20 15:24 ` Eli Zaretskii
2010-06-20 18:17 ` Eli Zaretskii
2010-06-21 1:13 ` Lennart Borgman
2010-06-21 2:55 ` Eli Zaretskii
2010-06-21 9:31 ` Lennart Borgman
2010-06-21 9:59 ` Juanma Barranquero
2010-06-21 10:35 ` Lennart Borgman
2010-06-21 11:09 ` Juanma Barranquero
2010-06-21 11:21 ` Lennart Borgman
2010-06-21 11:29 ` Juanma Barranquero
2010-06-21 11:41 ` Lennart Borgman
2010-06-21 11:48 ` Juanma Barranquero
2010-06-21 17:01 ` Eli Zaretskii
2010-06-21 17:36 ` Lennart Borgman
2010-06-19 20:13 ` David De La Harpe Golden
2010-06-19 20:26 ` Lennart Borgman
2010-06-19 20:30 ` Juanma Barranquero
2010-06-19 20:38 ` Lennart Borgman
2010-06-19 20:52 ` Juanma Barranquero
2010-06-19 21:33 ` Eli Zaretskii
2010-06-19 23:34 ` Lennart Borgman
2010-06-20 16:54 ` Stephen J. Turnbull
2010-06-21 1:04 ` Lennart Borgman
2010-06-21 11:38 ` Stephen J. Turnbull
2010-06-21 11:50 ` Lennart Borgman
2010-06-21 12:11 ` David Engster
2010-06-21 12:23 ` Lennart Borgman
2010-06-21 12:45 ` David Engster
2010-06-21 14:06 ` Lennart Borgman
2010-06-21 16:48 ` Eli Zaretskii
2010-06-22 7:48 ` David Engster
2010-06-22 17:53 ` Eli Zaretskii
2010-06-21 16:55 ` Eli Zaretskii
2010-06-19 21:17 ` Eli Zaretskii
2010-06-19 21:38 ` Eli Zaretskii
2010-06-19 22:19 ` David De La Harpe Golden
2010-06-20 18:13 ` Eli Zaretskii
2010-06-20 21:40 ` David De La Harpe Golden
2010-06-21 2:59 ` Eli Zaretskii
2010-06-21 22:06 ` David De La Harpe Golden
2010-06-21 23:04 ` Lennart Borgman
2010-06-21 23:50 ` David De La Harpe Golden
2010-06-22 18:27 ` Eli Zaretskii
2010-06-22 20:22 ` David De La Harpe Golden
2010-06-23 19:11 ` Eli Zaretskii
2010-06-23 21:11 ` David De La Harpe Golden
2010-06-25 15:15 ` Eli Zaretskii
2010-06-25 19:42 ` David De La Harpe Golden
2010-06-25 21:07 ` Eli Zaretskii
2010-06-25 22:28 ` David De La Harpe Golden
2010-06-23 22:18 ` Stefan Monnier
2010-06-25 10:35 ` Eli Zaretskii
2010-06-19 22:16 ` David De La Harpe Golden
2010-06-19 22:58 ` bug#6471: Arabic display by emacs -Q on HELLO David De La Harpe Golden
2019-08-21 22:57 ` Lars Ingebrigtsen
2019-08-22 14:05 ` Eli Zaretskii
2019-08-23 0:13 ` Lars Ingebrigtsen
2010-06-19 12:00 ` The unwarranted scrolling assumption Eli Zaretskii
2010-06-19 19:13 ` Juanma Barranquero
2010-06-19 21:20 ` Eli Zaretskii
2010-06-19 22:16 ` Juanma Barranquero
2010-06-18 13:45 ` Lennart Borgman
2010-06-16 21:23 ` Eli Zaretskii
2010-06-16 21:31 ` Lennart Borgman
2010-06-16 21:17 ` Eli Zaretskii
2010-06-16 21:27 ` Lennart Borgman
2010-06-17 2:57 ` Eli Zaretskii
2010-06-17 0:54 ` Stefan Monnier
2010-06-17 1:17 ` Lennart Borgman
2010-06-17 3:05 ` Eli Zaretskii
2010-06-17 3:10 ` Lennart Borgman
2010-06-17 3:59 ` Lennart Borgman
2010-06-17 4:55 ` Lennart Borgman [this message]
2010-06-18 13:45 ` Eli Zaretskii
2010-06-18 13:56 ` Lennart Borgman
2010-06-18 14:20 ` Eli Zaretskii
2010-06-18 14:32 ` Lennart Borgman
2010-06-18 15:03 ` Eli Zaretskii
2010-06-17 18:25 ` Eli Zaretskii
2010-06-17 18:32 ` Lennart Borgman
2010-06-17 18:43 ` Eli Zaretskii
2010-06-17 19:10 ` Lennart Borgman
2010-06-17 19:23 ` Eli Zaretskii
2010-06-17 19:31 ` Lennart Borgman
2010-06-18 7:36 ` Eli Zaretskii
2010-06-18 13:22 ` Lennart Borgman
2010-06-17 20:17 ` David Engster
2010-06-17 20:39 ` Chad Brown
2010-06-17 20:58 ` David Engster
2010-06-17 22:30 ` Juanma Barranquero
2010-06-17 22:27 ` Juanma Barranquero
2010-06-18 8:02 ` Eli Zaretskii
2010-06-18 10:15 ` Juanma Barranquero
2010-06-18 13:25 ` Lennart Borgman
2010-06-18 13:29 ` Stefan Monnier
2010-06-18 13:49 ` Eli Zaretskii
2010-06-18 15:05 ` Stefan Monnier
2010-06-18 15:32 ` Eli Zaretskii
2010-06-18 15:15 ` Juanma Barranquero
2010-06-17 19:36 ` David Engster
2010-06-17 19:40 ` Lennart Borgman
2010-06-18 5:25 ` Stefan Monnier
2010-06-16 8:55 ` David Engster
2010-06-15 23:53 ` Lennart Borgman
2010-06-17 20:35 ` Juri Linkov
2010-06-17 22:33 ` Juanma Barranquero
2010-06-18 8:27 ` Juri Linkov
2010-06-18 10:09 ` Juanma Barranquero
-- strict thread matches above, loose matches on Subject: below --
2010-06-18 19:02 grischka
2010-06-26 3:18 grischka
2010-06-26 5:10 ` David De La Harpe Golden
2010-06-26 8:49 ` Eli Zaretskii
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=AANLkTim4llT4SxTOOmB4WOIHYxLw8zCzyMUwNUzGaIuf@mail.gmail.com \
--to=lennart.borgman@gmail.com \
--cc=david@harpegolden.net \
--cc=eliz@gnu.org \
--cc=emacs-devel@gnu.org \
--cc=monnier@iro.umontreal.ca \
--cc=storm@cua.dk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.