init-powerline.el 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. ;; Source: https://github.com/aaronbieber/dotfiles
  2. ;; init-powerline.el --- Powerline configuration
  3. ;;; Commentary:
  4. ;;; Code:
  5. (defface my-pl-segment1-active
  6. '((t (:foreground "#000000" :background "#E1B61A")))
  7. "Powerline first segment active face.")
  8. (defface my-pl-segment1-inactive
  9. '((t (:foreground "#CEBFF3" :background "#3A2E58")))
  10. "Powerline first segment inactive face.")
  11. (defface my-pl-segment2-active
  12. '((t (:foreground "#F5E39F" :background "#8A7119")))
  13. "Powerline second segment active face.")
  14. (defface my-pl-segment2-inactive
  15. '((t (:foreground "#CEBFF3" :background "#3A2E58")))
  16. "Powerline second segment inactive face.")
  17. (defface my-pl-segment3-active
  18. ;'((t (:foreground "#CEBFF3" :background "#3A2E58")))
  19. '((t (:foreground "#CEBFF3" :background "#3A2E80")))
  20. "Powerline third segment active face.")
  21. (defface my-pl-segment3-inactive
  22. '((t (:foreground "#CEBFF3" :background "#3A2E58")))
  23. "Powerline third segment inactive face.")
  24. (defun air--powerline-default-theme ()
  25. "Set up my custom Powerline with Evil indicators."
  26. (setq-default mode-line-format
  27. '("%e"
  28. (:eval
  29. (let* ((active (powerline-selected-window-active))
  30. (seg1 (if active 'my-pl-segment1-active 'my-pl-segment1-inactive))
  31. (seg2 (if active 'my-pl-segment2-active 'my-pl-segment2-inactive))
  32. (seg3 (if active 'my-pl-segment3-active 'my-pl-segment3-inactive))
  33. (separator-left (intern (format "powerline-%s-%s"
  34. (powerline-current-separator)
  35. (car powerline-default-separator-dir))))
  36. (separator-right (intern (format "powerline-%s-%s"
  37. (powerline-current-separator)
  38. (cdr powerline-default-separator-dir))))
  39. (lhs (list (let ((evil-face (powerline-evil-face)))
  40. (if evil-mode
  41. (powerline-raw (powerline-evil-tag) evil-face)
  42. ))
  43. (if evil-mode
  44. (funcall separator-left (powerline-evil-face) seg1))
  45. (powerline-buffer-id seg1 'l)
  46. (powerline-raw "[%*]" seg1 'l)
  47. (when (and (boundp 'which-func-mode) which-func-mode)
  48. (powerline-raw which-func-format seg1 'l))
  49. (powerline-raw " " seg1)
  50. (funcall separator-left seg1 seg2)
  51. (when (boundp 'erc-modified-channels-object)
  52. (powerline-raw erc-modified-channels-object seg2 'l))
  53. (powerline-major-mode seg2 'l)
  54. (powerline-process seg2)
  55. (powerline-minor-modes seg2 'l)
  56. (powerline-narrow seg2 'l)
  57. (powerline-raw " " seg2)
  58. (funcall separator-left seg2 seg3)
  59. (powerline-vc seg3 'r)
  60. (when (bound-and-true-p nyan-mode)
  61. (powerline-raw (list (nyan-create)) seg3 'l))))
  62. (rhs (list (powerline-raw global-mode-string seg3 'r)
  63. (funcall separator-right seg3 seg2)
  64. (unless window-system
  65. (powerline-raw (char-to-string #xe0a1) seg2 'l))
  66. (powerline-raw "%4l" seg2 'l)
  67. (powerline-raw ":" seg2 'l)
  68. (powerline-raw "%3c" seg2 'r)
  69. (funcall separator-right seg2 seg1)
  70. (powerline-raw " " seg1)
  71. (powerline-raw "%6p" seg1 'r)
  72. (when powerline-display-hud
  73. (powerline-hud seg1 seg3)))))
  74. (concat (powerline-render lhs)
  75. (powerline-fill seg3 (powerline-width rhs))
  76. (powerline-render rhs)))))))
  77. (use-package powerline
  78. :ensure t
  79. :config
  80. (setq powerline-default-separator (if (display-graphic-p) 'arrow
  81. nil))
  82. (air--powerline-default-theme))
  83. (use-package powerline-evil
  84. :ensure t)
  85. (provide 'init-powerline)
  86. ;;; init-powerline.el ends here