;;; packages.el --- Spacemacs Mode-line Visual Layer packages File ;; ;; Copyright (c) 2012-2018 Sylvain Benner & Contributors ;; ;; Author: Sylvain Benner ;; URL: https://github.com/syl20bnr/spacemacs ;; ;; This file is not part of GNU Emacs. ;; ;;; License: GPLv3 (setq spacemacs-modeline-packages '( anzu fancy-battery neotree spaceline spaceline-all-the-icons symon (vim-powerline :location local) )) (defun spacemacs-modeline/post-init-anzu () (when (eq 'all-the-icons dotspacemacs-mode-line-theme) (spaceline-all-the-icons--setup-anzu))) (defun spacemacs-modeline/init-fancy-battery () (use-package fancy-battery :defer t :init (progn (spacemacs|add-toggle mode-line-battery :mode fancy-battery-mode :documentation "Display battery info in mode-line." :evil-leader "tmb") (setq-default fancy-battery-show-percentage t)))) (defun spacemacs-modeline/post-init-neotree () (when (eq 'all-the-icons dotspacemacs-mode-line-theme) (spaceline-all-the-icons--setup-neotree))) (defun spacemacs-modeline/init-spaceline () (use-package spaceline-config :if (memq dotspacemacs-mode-line-theme '(spacemacs all-the-icons custom)) :init (progn (add-hook 'spacemacs-post-user-config-hook 'spaceline-compile) (add-hook 'spacemacs-post-theme-change-hook 'spacemacs/customize-powerline-faces) (add-hook 'spacemacs-post-theme-change-hook 'powerline-reset) (setq-default powerline-default-separator 'utf-8) (spacemacs|do-after-display-system-init (when (and (eq 'utf-8 powerline-default-separator)) (setq-default powerline-default-separator 'wave)) ;; seems to be needed to avoid weird graphical artefacts with the ;; first graphical client (require 'spaceline) (spaceline-compile))) :config (progn (spacemacs/customize-powerline-faces) (setq spaceline-org-clock-p nil spaceline-highlight-face-func 'spacemacs//evil-state-face) ;; Segment toggles (dolist (spec '((minor-modes "tmm") (major-mode "tmM") (version-control "tmv") (new-version "tmV") (point-position "tmp") (org-clock "tmc"))) (let* ((segment (car spec)) (status-var (intern (format "spaceline-%S-p" segment)))) (eval `(spacemacs|add-toggle ,(intern (format "mode-line-%S" segment)) :status ,status-var :on (setq ,status-var t) :off (setq ,status-var nil) :documentation ,(format "Show %s in the mode-line." (replace-regexp-in-string "-" " " (format "%S" segment))) :evil-leader ,(cadr spec))))) ;; unicode (let ((unicodep (dotspacemacs|symbol-value dotspacemacs-mode-line-unicode-symbols))) (setq spaceline-window-numbers-unicode unicodep spaceline-workspace-numbers-unicode unicodep)) (add-hook 'spaceline-pre-hook 'spacemacs//prepare-diminish) ;; New spacemacs version segment (defpowerline spacemacs-powerline-new-version (propertize spacemacs-version-check-lighter 'mouse-face 'mode-line-highlight 'help-echo (format "New version %s | Click with mouse-1 to update" spacemacs-new-version) 'local-map (let ((map (make-sparse-keymap))) (define-key map [mode-line down-mouse-1] (lambda (event) (interactive "@e") (if (yes-or-no-p (format (concat "Do you want to update to the newest " "version %s ?") spacemacs-new-version)) (progn (spacemacs/switch-to-version spacemacs-new-version)) (message "Update aborted.")))) map))) (spaceline-define-segment new-version (when spacemacs-new-version (spacemacs-powerline-new-version (spacemacs/get-new-version-lighter-face spacemacs-version spacemacs-new-version)))) (let ((theme (intern (format "spaceline-%S-theme" dotspacemacs-mode-line-theme)))) (apply theme spacemacs-spaceline-additional-segments)) ;; Additional spacelines (when (package-installed-p 'helm) (spaceline-helm-mode t)) (when (configuration-layer/package-used-p 'info+) (spaceline-info-mode t)) ;; Enable spaceline for buffers created before the configuration of ;; spaceline (spacemacs//set-powerline-for-startup-buffers)))) (defun spacemacs-modeline/pre-init-spaceline-all-the-icons () (when (eq 'all-the-icons dotspacemacs-mode-line-theme) (spacemacs|use-package-add-hook spaceline-config :pre-config (progn (require 'spaceline-all-the-icons) (spaceline-all-the-icons--setup-git-ahead))))) (defun spacemacs-modeline/init-spaceline-all-the-icons () (use-package spaceline-all-the-icons :defer t :init (setq spaceline-all-the-icons-separator-type 'cup))) (defun spacemacs-modeline/init-symon () (use-package symon :defer t :init (progn (setq symon-delay 0 symon-refresh-rate 2) (spacemacs|add-toggle minibuffer-system-monitor :mode symon-mode :evil-leader "tms")))) (defun spacemacs-modeline/init-vim-powerline () (when (eq 'vim-powerline dotspacemacs-mode-line-theme) (require 'powerline) (if (display-graphic-p) (setq powerline-default-separator 'arrow) (setq powerline-default-separator 'utf-8)) (defun powerline-raw (str &optional face pad) "Render STR as mode-line data using FACE and optionally PAD import on left (l) or right (r) or left-right (lr)." (when str (let* ((rendered-str (format-mode-line str)) (padded-str (concat (when (and (> (length rendered-str) 0) (or (eq pad 'l) (eq pad 'lr))) " ") (if (listp str) rendered-str str) (when (and (> (length rendered-str) 0) (or (eq pad 'r) (eq pad 'lr))) " ")))) (if face (pl/add-text-property padded-str 'face face) padded-str)))) (require 'vim-powerline-theme) (powerline-vimish-theme) (add-hook 'emacs-startup-hook 'spacemacs//set-vimish-powerline-for-startup-buffers)))