[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#43568: Horizontal mouse wheel scrolling
From: |
Juri Linkov |
Subject: |
bug#43568: Horizontal mouse wheel scrolling |
Date: |
Tue, 22 Sep 2020 21:40:49 +0300 |
As promised in
https://lists.gnu.org/archive/html/emacs-devel/2020-09/msg01598.html
and mentioned in https://debbugs.gnu.org/28182#58
this patch finally provides horizontal scrolling by shifted mouse wheel:
diff --git a/lisp/mwheel.el b/lisp/mwheel.el
index 32fde0dd05..421bebc5f5 100644
--- a/lisp/mwheel.el
+++ b/lisp/mwheel.el
@@ -85,7 +85,7 @@ mouse-wheel-inhibit-click-time
:type 'number)
(defcustom mouse-wheel-scroll-amount
- '(5 ((shift) . 1) ((meta) . nil) ((control) . text-scale))
+ '(1 ((shift) . hscroll) ((meta) . nil) ((control) . text-scale))
"Amount to scroll windows by when spinning the mouse wheel.
This is an alist mapping the modifier key to the amount to scroll when
the wheel is moved with the modifier key depressed.
@@ -97,6 +97,9 @@ mouse-wheel-scroll-amount
a full screen to scroll. A near full screen is `next-screen-context-lines'
less than a full screen.
+If AMOUNT is the symbol 'hscroll', this means that with MODIFIER,
+the mouse wheel will scroll horizontally instead of vertically.
+
If AMOUNT is the symbol text-scale, this means that with
MODIFIER, the mouse wheel will change the face height instead of
scrolling."
@@ -123,6 +126,7 @@ mouse-wheel-scroll-amount
(const :tag "Scroll full screen" :value nil)
(integer :tag "Scroll specific # of lines")
(float :tag "Scroll fraction of window")
+ (const :tag "Scroll horizontally" :value hscroll)
(const :tag "Change face size" :value text-scale)))))
:set 'mouse-wheel-change-button
:version "27.1")
@@ -270,7 +274,11 @@ mwheel-scroll
(condition-case nil
(unwind-protect
(let ((button (mwheel-event-button event)))
- (cond ((eq button mouse-wheel-down-event)
+ (cond ((and (eq amt 'hscroll) (eq button mouse-wheel-down-event))
+ (funcall (if mouse-wheel-flip-direction
+ mwheel-scroll-left-function
+ mwheel-scroll-right-function) 1))
+ ((eq button mouse-wheel-down-event)
(condition-case nil (funcall mwheel-scroll-down-function
amt)
;; Make sure we do indeed scroll to the beginning of
;; the buffer.
@@ -285,7 +293,11 @@ mwheel-scroll
;; 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)
+ ((and (eq amt 'hscroll) (eq button mouse-wheel-up-event))
+ (funcall (if mouse-wheel-flip-direction
+ mwheel-scroll-right-function
+ mwheel-scroll-left-function) 1))
+ ((eq button mouse-wheel-up-event)
(condition-case nil (funcall mwheel-scroll-up-function
amt)
;; Make sure we do indeed scroll to the end of the
buffer.
(end-of-buffer (while t (funcall
mwheel-scroll-up-function)))))
- bug#43568: Horizontal mouse wheel scrolling,
Juri Linkov <=