(defun mwheel-scroll (event) (interactive (list last-input-event)) (let ((button (mwheel-event-button event))) (cond ((eq button mouse-wheel-down-event) (undo-tree-undo)) ((eq button mouse-wheel-up-event) (undo-tree-redo))))) ;; ^ global override for all scrollwheel events ;; to do it only for shift+scroll, try: (defun mwheel-scroll-through-time (event) (interactive (list last-input-event)) (let ((button (mwheel-event-button event))) (cond ((eq button mouse-wheel-down-event) (undo-tree-undo)) ((eq button mouse-wheel-up-event) (undo-tree-redo))))) (global-set-key (kbd "") 'mwheel-scroll-through-time) (global-set-key (kbd "") 'mwheel-scroll-through-time)