Skip to content
Emacs minor mode that monitors and shows a buffer's build status in the mode line.
Emacs Lisp
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


Emacs minor mode that shows a buffer's build status in the mode line.

build-status example running build-status example passing build-status example failing



Run M-x package-install build-status

Manual installation

Add build-status.el's directory to load-path

(require 'build-status)
(put 'build-status-mode-line-string 'risky-local-variable t)


M-x build-status-mode in a buffer that's part of a CI project.

By default the build status will be checked every 5 minutes. To change this set build-status-check-interval to the desired interval, in seconds.

API tokens can be set via the service-specific variable (see below) or via git config:

git config --add build-status.api-token TOKEN

To open the CI service's web page for buffer's build click on the mode's lighter or run M-x build-status-open.

Status Mapping

build-status will try to convert the CI service's status to one of the following:

  • failed
  • passed
  • queued
  • running

This is done via the service's status mapping alist.

If the status is not mapped it's treated as unknown (lighter is "?" and mouseover shows the status as is). You can ignore a status by mapping it to the symbol ignored.

See the Supported Services section below for more information.

Status Mode Line Faces

Each status indicator has an associated face. They're are listed below.

If you'd like to change the color and/or style of an indicator just update the appropriate face.

You can add a face for an unsupported status by creating a face named build-status-STATUS-face where STATUS is the name of the status with non-word characters replaced by "-".


All faces inherit from this face.

Attributes: none


Attributes: :background "red"


Attributes: :background "green"


Attributes: :background "yellow"


Attributes: :background "yellow"


Used when the build status returns an unknown value. For more info see status mapping.

Attributes: none

Supported Services


The buffer's directory or one of its ancestors must contain a circle.yml file or .circleci directory.

To set a token (but also see git config tokens):

(setq build-status-circle-ci-token "YOUR-TOKEN")

Status mapping is controlled via build-status-circle-ci-status-mapping-alist. It defaults to:

'(("infrastructure_fail" . "failed")
  ("not_running" . "queued")
  ("success" . "passed")
  ("scheduled" . "queued")
  ("timedout" . "failed"))

Travis CI

The buffer's directory or one of its ancestors must contain a .travis.yml file.

To set a token (but also see git config tokens):

(setq build-status-travis-ci-token "YOUR-TOKEN")

Status mapping is controlled via build-status-travis-ci-status-mapping-alist. It defaults to:

'(("errored" . "failed")
  ("started" . "running")
  ("created" . "queued"))

By default, the open source Travis CI ( is used. To use the pro or enterprise versions, set the build-status-travis-ci-domain variable to, or the domain of your enterprise instance. If you have projects in both, directory variables are a good way to set up domain and token on a per-project basis.


  • Support for Enterprise GitHub
  • Support for VCS mode hooks
  • Support for AppVeyor

See Also


Skye Shaw [ AT]

You can’t perform that action at this time.