# HG changeset patch # User Stefan Monnier # Date 1147101266 0 # Node ID c8171c0fa382865912ead8b41154032a1e8d6d7e # Parent 4fc3abab0f1713fed8daf3f2365c3c15e8c65bc2 (mwheel-scroll): Make sure that when scrolling multiple pages at a time, if we signal the end, we should indeed reach that end. diff -r 4fc3abab0f17 -r c8171c0fa382 lisp/ChangeLog --- a/lisp/ChangeLog Mon May 08 15:12:25 2006 +0000 +++ b/lisp/ChangeLog Mon May 08 15:14:26 2006 +0000 @@ -1,3 +1,13 @@ +2006-05-08 Stefan Monnier + + * mwheel.el (mwheel-scroll): Make sure that when scrolling multiple + pages at a time, if we signal the end, we should indeed reach that end. + +2006-05-08 David Reitter + + * emacs-lisp/easy-mmode.el (define-minor-mode): Only preserve messages + output during execution of the body. + 2006-05-08 Kim F. Storm * progmodes/grep.el (lgrep, rgrep): Doc fixes. diff -r 4fc3abab0f17 -r c8171c0fa382 lisp/mwheel.el --- a/lisp/mwheel.el Mon May 08 15:12:25 2006 +0000 +++ b/lisp/mwheel.el Mon May 08 15:14:26 2006 +0000 @@ -204,8 +204,25 @@ (setq amt (* amt (event-click-count event)))) (unwind-protect (let ((button (mwheel-event-button event))) - (cond ((eq button mouse-wheel-down-event) (scroll-down amt)) - ((eq button mouse-wheel-up-event) (scroll-up amt)) + (cond ((eq button mouse-wheel-down-event) + (condition-case nil (scroll-down amt) + ;; Make sure we do indeed scroll to the beginning of + ;; the buffer. + (beginning-of-buffer + (unwind-protect + (scroll-down) + ;; If the first scroll succeeded, then some scrolling + ;; is possible: keep scrolling til the beginning but + ;; do not signal an error. For some reason, we have + ;; to do it even if the first scroll signalled an + ;; error, because otherwise the window is recentered + ;; for a reason that escapes me. This problem seems + ;; to only affect scroll-down. --Stef + (set-window-start (selected-window) (point-min)))))) + ((eq button mouse-wheel-up-event) + (condition-case nil (scroll-up amt) + ;; Make sure we do indeed scroll to the end of the buffer. + (end-of-buffer (while t (scroll-up))))) (t (error "Bad binding in mwheel-scroll")))) (if curwin (select-window curwin)))) (when (and mouse-wheel-click-event mouse-wheel-inhibit-click-time)