GitHub - Malabarba/spinner.el: Emacs mode-line spinner for operations in progres...
source link: https://github.com/Malabarba/spinner.el
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
README.org
spinner.el
Add spinners and progress-bars to the mode-line for ongoing operations.
Usage
First of all, don’t forget to add (spinner "VERSION")
to your package’s dependencies.
Major-modes
- Just call
(spinner-start)
and a spinner will be added to the mode-line. - Call
(spinner-stop)
on the same buffer when you want to remove it.
The default spinner is a line drawing that rotates. You can pass an
argument to spinner-start
to specify which spinner you want. All
possibilities are listed in the spinner-types
variable, but here are
a few examples for you to try:
(spinner-start 'vertical-breathing 10)
(spinner-start 'minibox)
(spinner-start 'moon)
(spinner-start 'triangle)
You can also define your own as a vector of strings (see the examples
in spinner-types
).
Minor-modes
Minor-modes can create a spinner with spinner-create
and then add it
to their mode-line lighter. They can then start the spinner by setting
a variable and calling spinner-start-timer
. Finally, they can stop
the spinner (and the timer) by just setting the same variable to nil.
Here’s an example for a minor-mode named foo
. Assuming that
foo--lighter
is used as the mode-line lighter, the following code
will add an inactive global spinner to the mode-line.
(defvar foo--spinner (spinner-create 'rotating-line)) (defconst foo--lighter '(" foo" (:eval (spinner-print foo--spinner))))
- To activate the spinner, just call
(spinner-start foo--spinner)
. It will show up on the mode-line and start animating. - To get rid of it, call
(spinner-stop foo--spinner)
. It will then disappear again.
Some minor-modes will need spinners to be buffer-local. To achieve
that, just make the foo--spinner
variable buffer-local and use the
third argument of the spinner-create
function. The snippet below is an example.
(defvar-local foo--spinner nil) (defconst foo--lighter '(" foo" (:eval (spinner-print foo--spinner)))) (defun foo--start-spinner () "Create and start a spinner on this buffer." (unless foo--spinner (setq foo--spinner (spinner-create 'moon t))) (spinner-start foo--spinner))
- To activate the spinner, just call
(foo--start-spinner)
. - To get rid of it, call
(spinner-stop foo--spinner)
.
This will use the moon
spinner, but you can use any of the names
defined in the spinner-types
variable or even define your own.
Extra options
Both spinner-start
and spinner-create
take extra options to configure the spinner, these are:
FPS
: The number of frames to display per second. Defaults tospinner-frames-per-second
.DELAY
: After startin a spinner, it still won’t be displayed for this many seconds.
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK