Skip to content

Instantly share code, notes, and snippets.

@fhdhsni
Created May 24, 2017 17:31
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save fhdhsni/990cba7794b4b6918afea94af0b30d66 to your computer and use it in GitHub Desktop.
Save fhdhsni/990cba7794b4b6918afea94af0b30d66 to your computer and use it in GitHub Desktop.
my emacs mode line config
(defun mode-line-fill-right (face reserve)
"Return empty space using FACE and leaving RESERVE space on the right."
(unless reserve
(setq reserve 20))
(when (and window-system (eq 'right (get-scroll-bar-mode)))
(setq reserve (- reserve 3)))
(propertize " "
'display `((space :align-to (- (+ right right-fringe right-margin) ,reserve)))
'face face))
(defun mode-line-fill-center (face reserve)
"Return empty space using FACE to the center of remaining space leaving RESERVE space on the right."
(unless reserve
(setq reserve 20))
(when (and window-system (eq 'right (get-scroll-bar-mode)))
(setq reserve (- reserve 3)))
(propertize " "
'display `((space :align-to (- (+ center (.5 . right-margin)) ,reserve
(.5 . left-margin))))
'face face))
(defconst RIGHT_PADDING 1)
(defun reserve-left/middle ()
(/ (length (format-mode-line mode-line-align-middle)) 2))
(defun reserve-middle/right ()
(+ RIGHT_PADDING (length (format-mode-line mode-line-align-right))))
(setq mode-line-align-left
'(""
"%2 "
(:eval (format "%s" exwm-workspace-current-index))
"%2 "
(:eval
(cond
((string= major-mode "emacs-lisp-mode") "")
((string= major-mode "lisp-mode") "")
((string= major-mode "dired-mode") "")
((string= major-mode "elixir-mode") (propertize " " 'face '(:family "all-the-icons")))
((string= major-mode "text-mode") (propertize "" 'face '(:family "file-icons")))
((string= major-mode "org-mode") "")
;; ((string= major-mode "erc-mode") "")
((string= major-mode "erc-mode") (propertize "" 'face '(:family "icomoon")))
((string= major-mode "eshell-mode") (propertize "" 'face '(:family "all-the-icons")))
((string= major-mode "sh-mode") (propertize "" 'face '(:family "all-the-icons")))
((string= major-mode "js2-mode") "")
((string= major-mode "js-mode") "")
((string= major-mode "typescript-mode") "")
((string= major-mode "exwm-mode") "")
((string= major-mode "vue-mode") "")
((string= major-mode "html-mode") "")
((string= major-mode "css-mode") "")
((string= major-mode "java-mode") "")
((string= major-mode "xml-mode") (propertize "" 'face '(:family "all-the-icons")))
((string= major-mode "erlang-mode") "")
((string= major-mode "python-mode") "")
((string= major-mode "ruby-mode") "")
((string= major-mode "c++-mode") (propertize "" 'face '(:family "font-mfizz")))
((string= major-mode "scss-mode") (propertize "" 'face '(:family "all-the-icons")))
((string= major-mode "php-mode") )
((string= major-mode "go-mode") (propertize "" 'face '(:family "font-mfizz")))
((string= major-mode "haskell-mode") "")
((string= major-mode "scale-mode") "")
((string= major-mode "lua-mode") "")
((string= major-mode "clojure-mode") "")
((string= major-mode "c-mode") "")
((string= major-mode "rust-mode") (propertize "" 'face '(:family "font-mfizz")))
(t (format "%s" major-mode))))
"%2 "
(:propertize "%b" face mode-line-buffer-id)
"%2 "
(:eval (when (bound-and-true-p flycheck-mode) (flycheck-mode-line-status-text)))
" "))
(setq mode-line-align-middle
'(""
(vc-mode vc-mode)
"%3 "
;; (:propertize "%b" face mode-line-buffer-id)
(:eval
(when (eql (buffer-modified-p) t)
;; propertize adds metadata to text, so you can add colours and formatting, amongst other things
(propertize "" 'face '(:foreground "white"))))
" "
(:eval
(when (eql buffer-read-only t)
(propertize "" 'face '(:foreground "pink"))))
""))
(setq mode-line-align-right
'(""
mode-line-misc-info
"%2 "
(:eval (format "%%l/%d : %%c " (line-number-at-pos (point-max))))))
(setq-default mode-line-format
(list
mode-line-align-left
'(:eval (mode-line-fill-center 'mode-line
(reserve-left/middle)))
mode-line-align-middle
'(:eval
(mode-line-fill-right 'mode-line
(reserve-middle/right)))
mode-line-align-right))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment