spacemacs/layers/+spacemacs/spacemacs-modeline/packages.el
syl20bnr ebe4c60264 Revert "Defer packages by default using use-package-always-defer"
This reverts commit 29c78ce841 and all other fixes
that have been made afterwards.

The motivation is that use-package is seen by many as a replacement for
`require`. Is use-package always defer the loading of packages then is breaks
this use case, this does not respect POLA so even if it was making Spacemacs
loading faster (up to 3s faster on some startup on my machine) we just cannot
use it, it would be irresponsible. Spacemacs should be easy to use, loading
performance will come with time but it is not a priority.
2018-03-03 23:40:10 -05:00

207 lines
8.4 KiB
EmacsLisp

;;; packages.el --- Spacemacs Mode-line Visual Layer packages File
;;
;; Copyright (c) 2012-2018 Sylvain Benner & Contributors
;;
;; Author: Sylvain Benner <sylvain.benner@gmail.com>
;; URL: https://github.com/syl20bnr/spacemacs
;;
;; This file is not part of GNU Emacs.
;;
;;; License: GPLv3
(setq spacemacs-modeline-packages
'(
anzu
fancy-battery
;; dependency of spaceline-all-the-icons which came from
;; the emacs wiki, we fetch it from Emacs Mirror for now.
;; TODO eventually remove this if font-lock+ is available
;; in an ELPA repository.
(font-lock+ :step pre
:location (recipe :fetcher github
:repo emacsmirror/font-lock-plus))
neotree
spaceline
spaceline-all-the-icons
symon
(vim-powerline :location local)
))
(defun spacemacs-modeline/post-init-anzu ()
(when (eq 'all-the-icons (spacemacs/get-mode-line-theme-name))
(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/init-font-lock+ ())
(defun spacemacs-modeline/post-init-neotree ()
(when (eq 'all-the-icons (spacemacs/get-mode-line-theme-name))
(spaceline-all-the-icons--setup-neotree)))
(defun spacemacs-modeline/init-spaceline ()
(use-package spaceline-config
:if (memq (spacemacs/get-mode-line-theme-name) '(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)
(spacemacs|add-toggle mode-line-responsive
:status spaceline-responsive
:on (progn (setq spaceline-responsive t)
(powerline-reset))
:off (progn (setq spaceline-responsive nil)
;; seems necessary to recompile when turning off
(spaceline-compile))
:documentation "Make the mode-line responsive."
:evil-leader "tmr")
(setq powerline-default-separator
(or (and (memq (spacemacs/get-mode-line-theme-name)
'(spacemacs custom))
(spacemacs/mode-line-separator))
'wave)
powerline-image-apple-rgb (spacemacs/system-is-mac)
powerline-scale (or (spacemacs/mode-line-separator-scale) 1.5)
powerline-height (spacemacs/compute-mode-line-height))
(spacemacs|do-after-display-system-init
;; 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"
(spacemacs/get-mode-line-theme-name)))))
(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 (spacemacs/get-mode-line-theme-name))
(spacemacs|use-package-add-hook spaceline-config
:pre-config
(progn
(require 'spaceline-all-the-icons)
;; responsivness does not play well with all-the-icons theme
;; let's disable it for now
;; https://github.com/domtronn/spaceline-all-the-icons.el/issues/51#issuecomment-316686790
(setq spaceline-responsive nil)
(spaceline-all-the-icons--setup-git-ahead)))))
(defun spacemacs-modeline/init-spaceline-all-the-icons ()
(use-package spaceline-all-the-icons
:defer t
:init
(progn
(setq
spaceline-all-the-icons-separator-type
(or (spacemacs/mode-line-separator) 'wave)
spaceline-all-the-icons-separator-scale
(or (spacemacs/mode-line-separator-scale) 1.6)))))
(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 (spacemacs/get-mode-line-theme-name))
(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)))