Subject: bug#53776: Modeline indicator when using define-minor-mode

From: Michael Heerdegen <[email-masked]>
Date: Mon, 07 Feb 2022 01:51:25 +0100

Stephen Berman <[email-masked]> writes:

> Since I don't have mouse-4 and mouse-5

These are the "keys" associated with the mouse wheel.  In case you want
to scroll with the mouse wheel.

> I just tried evaluating that sexp with integral values (1, 0, -1) for
>ml-scroll-amnt, and only got truncation.  Maybe I don't understand what
>you mean by "let mouse-4 and mouse-5 over the mode-line de- and
>increase `ml-scroll-amnt'".  Can you show me bindings I can try with a
>3-button mouse, or just with the keyboard?

I dunno how you want to scroll.  Drag with mouse-1, scroll with a wheel
or a key, something else?

The code

#+begin_src emacs-lisp
(defvar ml-scroll-amnt 0)

(setq-default
 mode-line-format
 `(:eval (substring (format-mode-line ',mode-line-format)
                    ml-scroll-amnt)))
#+end_src

has to be evaluated once.  Mode-line looks like before.

(setq ml-scroll-amnt 3) scrolls the mode-line three chars to the left.
(setq ml-scroll-amnt 0) to scroll back.  Changing `ml-scroll-amnt'
changes the scroll amount.

How you implement changing the binding of `ml-scroll-amnt' is up to you,
depends on how you want it to be.

Scrolling to the right would only prepend space to the beginning, so I
didn't handle negative `ml-scroll-amnt' values.

Michael.