A fancy and fast mode-line inspired by minimalism design.
Find a file
Vincent Zhang f2f7aaf392 Fix hang issue in fetching github notifications.
If there is no github access token, ghub requires to create and save from
minibuffer, thus will cause hang in async process. Just ignore it if no token.
2019-01-08 02:29:46 +08:00
.github/ISSUE_TEMPLATE Update issue templates 2019-01-02 16:39:35 +08:00
test Bump copyright years. 2019-01-02 16:52:28 +08:00
.gitignore Update git ignore. 2018-08-23 16:41:09 +08:00
.travis.yml Add cask package task in CI. 2018-12-25 04:53:44 +08:00
_config.yml Set theme jekyll-theme-cayman 2018-07-05 15:29:34 +08:00
Cask Add cask package task in CI. 2018-12-25 04:53:44 +08:00
doom-modeline.el Fix hang issue in fetching github notifications. 2019-01-08 02:29:46 +08:00
LICENSE Initial commit 2018-06-11 23:20:04 +08:00
README.md [Docs] FAQ: Why doesn't change of branch reflect in modeline. 2019-01-04 01:01:40 +08:00

doom-modeline

Build Status MELPA MELPA Stable License

A fancy and fast mode-line which was from DOOM Emacs, but it's more powerful and much faster.

It's integrated into Centaur Emacs by default.

Feature

The doom-modeline was designed for minimalism, and offers:

  • A match count panel (for anzu, iedit, multiple-cursors, symbol-overlay, evil-search and evil-substitute)
  • An indicator for recording a macro
  • Local python/ruby/perl/go/elixir version in the major-mode
  • A customizable mode-line height (see doom-modeline-height)
  • A minor modes segment which is compatible with minions
  • An error/warning count segment for flymake/flycheck
  • A workspace number segment for eyebrowse
  • A perspective name segment for persp-mode
  • A window number segment for ace-window, winum and window-numbering
  • An indicator for evil state
  • An indicator for god state
  • An indicator for ryo-modal state
  • An indicator for xah-fly-keys state
  • An indicator for remote host
  • An indicator for debug state
  • An indicator for current input method
  • An indicator for LSP state
  • An indicator for github notifications
  • An indicator for buffer position which is compatible with nyan-mode
  • Truncated file name, file icon, buffer state and project name in buffer information segment, which is compatible with projectile and project

Screenshots

modeline

search_replace

macro

color_icon_cpp

color_icon_java

color_icon_elisp

evil_normal_state

evil_insert_state

lsp_version

perspective

github_notifications

minions

debug

Install

Manual

From melpa, M-x package-install RET doom-modeline RET.

In init.el,

(require 'doom-modeline)
(doom-modeline-init)

Use-package

(use-package doom-modeline
      :ensure t
      :defer t
      :hook (after-init . doom-modeline-init))

This package requires the fonts included with all-the-icons to be installed. Run M-x all-the-icons-install-fonts to do so.

Strongly recommend to use doom-themes at the same time.

Customize

;; How tall the mode-line should be (only respected in GUI Emacs).
(setq doom-modeline-height 25)

;; How wide the mode-line bar should be (only respected in GUI Emacs).
(setq doom-modeline-bar-width 3)

;; Determines the style used by `doom-modeline-buffer-file-name'.
;;
;; Given ~/Projects/FOSS/emacs/lisp/comint.el
;;   truncate-upto-project => ~/P/F/emacs/lisp/comint.el
;;   truncate-from-project => ~/Projects/FOSS/emacs/l/comint.el
;;   truncate-with-project => emacs/l/comint.el
;;   truncate-except-project => ~/P/F/emacs/l/comint.el
;;   truncate-upto-root => ~/P/F/e/lisp/comint.el
;;   truncate-all => ~/P/F/e/l/comint.el
;;   relative-from-project => emacs/lisp/comint.el
;;   relative-to-project => lisp/comint.el
;;   file-name => comint.el
;;   buffer-name => comint.el<2> (uniquify buffer name)
;;
;; If you are expereicing the laggy issue, especially while editing remote files
;; with tramp, please try `file-name' style.
;; Please refer to https://github.com/bbatsov/projectile/issues/657.
(setq doom-modeline-buffer-file-name-style 'truncate-upto-project)

;; What executable of Python will be used (if nil nothing will be showed).
(setq doom-modeline-python-executable "python")

;; Whether show `all-the-icons' or not (if nil nothing will be showed).
;; The icons may not be showed correctly on Windows. Disable to make it work.
(setq doom-modeline-icon t)

;; Whether show the icon for major mode. It respects `doom-modeline-icon'.
(setq doom-modeline-major-mode-icon t)

;; Display color icons for `major-mode'. It respects `all-the-icons-color-icons'.
(setq doom-modeline-major-mode-color-icon nil)

;; Whether display minor modes or not. Non-nil to display in mode-line.
(setq doom-modeline-minor-modes nil)

;; Whether display perspective name or not. Non-nil to display in mode-line.
(setq doom-modeline-persp-name t)

;; Whether display `lsp' state or not. Non-nil to display in mode-line.
(setq doom-modeline-lsp t)

;; Whether display github notifications or not. Requires `ghub` package.
(setq doom-modeline-github nil)

;; The interval of checking github.
(setq doom-modeline-github-interval (* 30 60))

;; Whether display environment version or not.
(setq doom-modeline-version t)

FAQ

  1. I am experiencing the laggy issue on Windows, how to resolve it?

    You need to add this configuration into your init file.

    ;; Dont compact font caches during GC.
    (setq inhibit-compacting-font-caches t)
    
  2. A ridiculous path is displayed on mode-line while visiting a symbolink.

    It's the default behaviors of Vanilla Emacs. If you want to display the real names, please put this into your init file.

    (setq find-file-visit-truename t)
    

    If the file is controlled by vc, refer to the documentation of vc-follow-symlinks.

  3. Can I add my mode-line segments myself? How to do that?

    Of course. Just add the segments into global-mode-string.

  4. Why doesn't change of branch reflect in modeline?

    Actually it's related to magit and vc-mode.