From: Eli Zaretskii Date: Fri, 26 Aug 2011 10:07:06 +0000 (+0300) Subject: Fix bug #9324 with unwarranted repositioning of point. X-Git-Tag: emacs-pretest-24.0.90~104^2~152^2~66^2~3 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=c11821d4e12c2346668ded2353f4fac050af817f;p=emacs.git Fix bug #9324 with unwarranted repositioning of point. src/xdisp.c (redisplay_window): Don't force window start if point will be invisible in the resulting window. --- diff --git a/lisp/emacs-lisp/cl-loaddefs.el b/lisp/emacs-lisp/cl-loaddefs.el index 7beb4d4b4cc..d6512306ad1 100644 --- a/lisp/emacs-lisp/cl-loaddefs.el +++ b/lisp/emacs-lisp/cl-loaddefs.el @@ -282,7 +282,7 @@ Not documented ;;;;;; flet progv psetq do-all-symbols do-symbols dotimes dolist ;;;;;; do* do loop return-from return block etypecase typecase ecase ;;;;;; case load-time-value eval-when destructuring-bind function* -;;;;;; defmacro* defun* gentemp gensym) "cl-macs" "cl-macs.el" "0907093f7720996444ededb4edfe8072") +;;;;;; defmacro* defun* gentemp gensym) "cl-macs" "cl-macs.el" "cc8cbd8c86e2facbe61986e992e6c508") ;;; Generated autoloads from cl-macs.el (autoload 'gensym "cl-macs" "\ diff --git a/src/ChangeLog b/src/ChangeLog index 149753a6749..9429064f371 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2011-08-26 Eli Zaretskii + + * xdisp.c (redisplay_window): Don't force window start if point + will be invisible in the resulting window. (Bug#9324) + 2011-08-25 Eli Zaretskii * xdisp.c (compute_display_string_pos): Return 2 in DISP_PROP when diff --git a/src/xdisp.c b/src/xdisp.c index beb161f4ce4..08e14d71263 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -15099,6 +15099,7 @@ redisplay_window (Lisp_Object window, int just_this_one_p) || (XFASTINT (w->last_modified) >= MODIFF && XFASTINT (w->last_overlay_modified) >= OVERLAY_MODIFF))) { + int d1, d2, d3, d4, d5, d6; /* If first window line is a continuation line, and window start is inside the modified region, but the first change is before @@ -15120,7 +15121,14 @@ redisplay_window (Lisp_Object window, int just_this_one_p) compute_window_start_on_continuation_line. (See also bug#197). */ && XMARKER (w->start)->buffer == current_buffer - && compute_window_start_on_continuation_line (w)) + && compute_window_start_on_continuation_line (w) + /* It doesn't make sense to force the window start like we + do at label force_start if it is already known that point + will not be visible in the resulting window, because + doing so will move point from its correct position + instead of scrolling the window to bring point into view. + See bug#9324. */ + && pos_visible_p (w, PT, &d1, &d2, &d3, &d4, &d5, &d6)) { w->force_start = Qt; SET_TEXT_POS_FROM_MARKER (startp, w->start);