From: Lennart Borgman <lennart.borgman@gmail.com>
To: Eli Zaretskii <eliz@gnu.org>, Stefan Monnier <monnier@iro.umontreal.ca>
Cc: emacs-devel@gnu.org
Subject: Re: The unwarranted scrolling assumption
Date: Fri, 18 Jun 2010 19:31:30 +0200 [thread overview]
Message-ID: <AANLkTimc0rBVRW2xnZp_LCj6Wa2qDbP0uNGceeo4wIBw@mail.gmail.com> (raw)
In-Reply-To: <AANLkTint74899At5uz12nELZXXZbM9jZdWB8LAGWl7rK@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 1227 bytes --]
On Fri, Jun 18, 2010 at 6:39 PM, Lennart Borgman
<lennart.borgman@gmail.com> wrote:
> On Fri, Jun 18, 2010 at 5:35 PM, Eli Zaretskii <eliz@gnu.org> wrote:
>>> From: Lennart Borgman <lennart.borgman@gmail.com>
>>> Date: Fri, 18 Jun 2010 17:08:18 +0200
>>> Cc: emacs-devel@gnu.org
>>>
>>> You are looking for the reason why reconsider_clip_changes does not do
>>> its job. I have said (though maybe not explicitly enough, I don't
>>> know) that it can't because it does not have the information it needs.
>>>
>>> It does not have that information because narrow_to_region has erased
>>> it by setting clip_changed to 1.
>>
>> The information is not erased, it is still present in
>> w->current_matrix->zv and w->current_matrix->begv. You will see that
>> reconsider_clip_changes uses those to decide whether to reset the
>> clip_changed flag.
>
>
> Oh, fine, I missed that. Then we do not need the new variables I introduced.
I have switched to using those variables instead. Seems to work just
as well as my old patch.
I have attached the patches for the current version of xdisp.c I am
using now. Beside using those variable I have moved the check into
reconsider_clip_changes where it belongs.
[-- Attachment #2: xdisp-jumpscroll-1.diff --]
[-- Type: text/x-patch, Size: 5826 bytes --]
=== modified file 'src/xdisp.c'
--- trunk/src/xdisp.c 2010-06-01 02:34:49 +0000
+++ patched/src/xdisp.c 2010-06-18 17:21:15 +0000
@@ -11711,12 +11711,33 @@
struct window *w;
struct buffer *b;
{
+ /* if ((b->clip_begv != b->begv) || (b->clip_zv != b->zv)) */
+ /* b->clip_changed = 1; */
+
+ if ((w->current_matrix->begv != b->begv) || (w->current_matrix->zv != b->zv))
+ b->clip_changed = 1;
+
+ if (b->clip_changed
+ && !(!NILP (w->window_end_valid)
+ && w->current_matrix->buffer == b
+ && w->current_matrix->zv == BUF_ZV (b)
+ && w->current_matrix->begv == BUF_BEGV (b)))
+ DebPrint (("+++reconsider: end_valid=%d, b=%d, ZV=%d, BEGV=%d",
+ !NILP (w->window_end_valid),
+ w->current_matrix->buffer == b,
+ w->current_matrix->zv == BUF_ZV (b),
+ w->current_matrix->begv == BUF_BEGV (b)));
+
if (b->clip_changed
&& !NILP (w->window_end_valid)
&& 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,
@@ -13443,7 +13464,10 @@
dy = line_bottom_y (&it) - y0;
if (dy > scroll_max)
+ {
+ DebPrint (("try_scrolling SCROLLING_FAILED dy > scroll_max A"));
return SCROLLING_FAILED;
+ }
scroll_down_p = 1;
}
@@ -13475,7 +13499,10 @@
}
if (amount_to_scroll <= 0)
+ {
+ DebPrint (("try_scrolling SCROLLING_FAILED amount_to_scroll <= 0 A"));
return SCROLLING_FAILED;
+ }
start_display (&it, w, startp);
move_it_vertically (&it, amount_to_scroll);
@@ -13515,7 +13542,10 @@
MOVE_TO_POS | MOVE_TO_X | MOVE_TO_Y);
dy = it.current_y - y0;
if (dy > scroll_max)
+ {
+ DebPrint (("try_scrolling SCROLLING_FAILED dy > scroll_max B"));
return SCROLLING_FAILED;
+ }
/* Compute new window start. */
start_display (&it, w, startp);
@@ -13539,7 +13569,10 @@
}
if (amount_to_scroll <= 0)
+ {
+ DebPrint (("try_scrolling SCROLLING_FAILED amount_to_scroll <= 0 B"));
return SCROLLING_FAILED;
+ }
move_it_vertically_backward (&it, amount_to_scroll);
startp = it.current.pos;
@@ -13556,6 +13589,7 @@
else if (w->cursor.vpos < 0)
{
clear_glyph_matrix (w->desired_matrix);
+ DebPrint (("try_scrolling SCROLLING_FAILED clear_glyph"));
rc = SCROLLING_FAILED;
}
else
@@ -14235,7 +14269,10 @@
/* If window-start is screwed up, choose a new one. */
if (XMARKER (w->start)->buffer != current_buffer)
+ {
+ DebPrint (("redisplay_window.recenter window-start screwed up"));
goto recenter;
+ }
SET_TEXT_POS_FROM_MARKER (startp, w->start);
@@ -14389,6 +14426,7 @@
#if GLYPH_DEBUG
debug_method_add (w, "recenter 1");
#endif
+ DebPrint (("redisplay_window.recenter orig beg of line, but not now"));
goto recenter;
}
@@ -14515,6 +14553,14 @@
&& CHARPOS (startp) >= BEGV
&& CHARPOS (startp) <= ZV)
{
+ DebPrint (("redisplay_window b try_scr, clip_changed=%d, >= BEGV: %d, <= ZV: %d, jtop=%d, llmf=%d",
+ current_buffer->clip_changed,
+ CHARPOS (startp) >= BEGV,
+ CHARPOS (startp) <= ZV,
+ just_this_one_p,
+ last_line_misfit
+ ));
+
/* The function returns -1 if new fonts were loaded, 1 if
successful, 0 if not successful. */
int rc = try_scrolling (window, just_this_one_p,
@@ -14530,6 +14576,7 @@
goto need_larger_matrices;
case SCROLLING_FAILED:
+ DebPrint (("redisplay_window.SCROLLING_FAILED"));
break;
default:
@@ -14539,6 +14586,7 @@
/* Finally, just choose place to start which centers point */
+ DebPrint (("redisplay_window.recenter centering_position=%d", centering_position));
recenter:
if (centering_position < 0)
centering_position = window_box_height (w) / 2;
@@ -14644,6 +14692,7 @@
{
w->vscroll = 0;
clear_glyph_matrix (w->desired_matrix);
+ DebPrint (("redisplay_window.recenter disable vscroll and try again"));
goto recenter;
}
@@ -14655,6 +14704,7 @@
clear_glyph_matrix (w->desired_matrix);
centering_position = 0;
+ DebPrint (("redisplay_window.recenter failed to make whole line visible"));
goto recenter;
}
@@ -14852,8 +14902,11 @@
if (display_line (&it))
last_text_row = it.glyph_row - 1;
if (fonts_changed_p && !(flags & TRY_WINDOW_IGNORE_FONTS_CHANGE))
+ {
+ DebPrint (("try_window: fonts_changed_p=%d", fonts_changed_p));
return 0;
}
+ }
/* Don't let the cursor end in the scroll margins. */
if ((flags & TRY_WINDOW_CHECK_MARGINS)
@@ -14881,6 +14934,7 @@
{
w->cursor.vpos = -1;
clear_glyph_matrix (w->desired_matrix);
+ DebPrint (("try_window returning -1"));
return -1;
}
}
@@ -26279,7 +26333,8 @@
recenters point as usual.
A value of zero means always recenter point if it moves off screen. */);
- scroll_conservatively = 0;
+ // scroll_conservatively = Vmost_positive_fixnum;
+ scroll_conservatively = make_number (MOST_POSITIVE_FIXNUM);
DEFVAR_INT ("scroll-margin", &scroll_margin,
doc: /* *Number of lines of margin at the top and bottom of a window.
next prev parent reply other threads:[~2010-06-18 17:31 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 [this message]
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
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=AANLkTimc0rBVRW2xnZp_LCj6Wa2qDbP0uNGceeo4wIBw@mail.gmail.com \
--to=lennart.borgman@gmail.com \
--cc=eliz@gnu.org \
--cc=emacs-devel@gnu.org \
--cc=monnier@iro.umontreal.ca \
/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.