diff lisp/paren.el @ 90813:e6fdae9180d4

Merge from emacs--devo--0 Patches applied: * emacs--devo--0 (patch 698-710) - Update from CVS - Merge from gnus--rel--5.10 * gnus--rel--5.10 (patch 216) - Update from CVS Revision: emacs@sv.gnu.org/emacs--unicode--0--patch-196
author Miles Bader <miles@gnu.org>
date Tue, 24 Apr 2007 21:56:25 +0000
parents 95d0cdf160ea 97456f440211
children 31beec9ee600
line wrap: on
line diff
--- a/lisp/paren.el	Tue Apr 24 11:35:23 2007 +0000
+++ b/lisp/paren.el	Tue Apr 24 21:56:25 2007 +0000
@@ -143,6 +143,7 @@
       (let ((oldpos (point))
 	    (dir (cond ((eq (syntax-class (syntax-after (1- (point)))) 5) -1)
                        ((eq (syntax-class (syntax-after (point)))      4) 1)))
+	    (window-start (window-start))
 	    pos mismatch face)
 	;;
 	;; Find the other end of the sexp.
@@ -247,7 +248,13 @@
 	  ;;
 	  ;; Always set the overlay face, since it varies.
 	  (overlay-put show-paren-overlay 'priority show-paren-priority)
-	  (overlay-put show-paren-overlay 'face face)))
+	  (overlay-put show-paren-overlay 'face face))
+	;; If there are continued lines, the above operations can
+	;; force redisplay to recenter the window (since there is no
+	;; way for it to know that the overlay changes to the buffer
+	;; are harmless).  So reset the window-start.
+	(unless (window-minibuffer-p)
+	  (set-window-start (selected-window) window-start)))
     ;; show-paren-mode is nil in this buffer.
     (and show-paren-overlay
 	 (delete-overlay show-paren-overlay))