Git Product home page Git Product logo

spinner.el's Introduction

spinner.el

Add spinners and progress-bars to the mode-line for ongoing operations.

some-spinners.gif

all-spinners.gif

Usage

First of all, don’t forget to add (spinner "VERSION") to your package’s dependencies.

Major-modes

  1. Just call (spinner-start) and a spinner will be added to the mode-line.
  2. 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))))
  1. To activate the spinner, just call (spinner-start foo--spinner). It will show up on the mode-line and start animating.
  2. 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))
  1. To activate the spinner, just call (foo--start-spinner).
  2. 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 to spinner-frames-per-second.
  • DELAY: After startin a spinner, it still won’t be displayed for this many seconds.

spinner.el's People

Contributors

malabarba avatar

Watchers

Tadeusz Kurpiel avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.