2015-11-09 15:25:20 +09:00
;;; boon-powerline.el --- An Ergonomic Command Mode -*- lexical-binding: t -*-
2015-10-10 22:31:10 +02:00
;;; Commentary:
;; This module gives an example setup for powerline using boon.
;;; Code:
( require 'powerline )
( require 'boon-core )
2016-10-31 21:48:48 +01:00
( defface boon-modeline-cmd ' ( ( ( ( background light ) ) :background " dodger blue " ) ( ( ( background dark ) ) :background " blue " ) ) " Face for modeline indicator of boon command state " :group 'boon )
( defface boon-modeline-ins ' ( ( ( ( background light ) ) :background " indian red " ) ( ( ( background dark ) ) :background " red " ) ) " Face for modeline indicator of boon insert state " :group 'boon )
2015-10-10 22:31:10 +02:00
( defface boon-modeline-off ' ( ( t ( :background " orange " ) ) ) " Face for modeline indicator of boon off state " :group 'boon )
2016-10-31 21:48:48 +01:00
( defface boon-modeline-spc ' ( ( ( ( background light ) ) :background " spring green " ) ( ( ( background dark ) ) :background " dark green " ) ) " Face for modeline indicator of boon special state " :group 'boon )
2015-10-10 22:31:10 +02:00
( defun boon-state-face ( )
" Return a face appropriate for a powerline-style entry in the modeline. "
( cond
( boon-command-state 'boon-modeline-cmd )
( boon-insert-state 'boon-modeline-ins )
2015-12-07 08:36:41 +01:00
( boon-special-state 'boon-modeline-spc )
2016-09-08 21:58:23 +02:00
( t 'boon-modeline-off ) ) )
2015-10-10 22:31:10 +02:00
( defun boon-powerline-theme ( )
" Set up a powerline based on powerline-default-theme which also displays boon-state. "
( interactive )
( setq-default mode-line-format
' ( " %e "
( :eval
2015-10-10 22:36:02 +02:00
( let* ( ( active ( powerline-selected-window-active ) )
2015-10-10 22:31:10 +02:00
( mode-line ( if active 'mode-line 'mode-line-inactive ) )
2016-11-03 23:27:54 +01:00
( face0 ( if active ( boon-state-face ) 'modeline-inactive ) )
2015-10-10 22:31:10 +02:00
( face1 ( if active 'powerline-active1 'powerline-inactive1 ) )
( face2 ( if active 'powerline-active2 'powerline-inactive2 ) )
( separator-left ( intern ( format " powerline-%s-%s "
powerline-default-separator
( car powerline-default-separator-dir ) ) ) )
( separator-right ( intern ( format " powerline-%s-%s "
powerline-default-separator
( cdr powerline-default-separator-dir ) ) ) )
( boon ( when ( bound-and-true-p boon-mode )
( list
( powerline-raw " " face0 )
( powerline-raw ( boon-state-string ) face0 'r )
2016-11-03 23:27:54 +01:00
( funcall separator-left face0 mode-line )
2015-10-10 22:31:10 +02:00
) ) )
( lhs ( list
2016-11-03 23:27:54 +01:00
( powerline-raw ( if ( buffer-modified-p ) " * " " - " ) mode-line 'l )
( powerline-raw mode-line-mule-info mode-line )
( powerline-buffer-id mode-line 'l )
2015-10-10 22:31:10 +02:00
( when ( and ( boundp 'which-func-mode ) which-func-mode )
2016-11-03 23:27:54 +01:00
( powerline-raw which-func-format mode-line 'l ) )
( powerline-raw " " mode-line )
2015-10-10 22:31:10 +02:00
( funcall separator-left mode-line face1 )
( when ( boundp 'erc-modified-channels-object )
( powerline-raw erc-modified-channels-object face1 'l ) )
( powerline-major-mode face1 'l )
( powerline-process face1 )
( powerline-minor-modes face1 'l )
( powerline-narrow face1 'l )
( powerline-raw " " face1 )
( funcall separator-left face1 face2 )
( powerline-vc face2 'r ) ) )
( rhs ( list ( powerline-raw global-mode-string face2 'r )
( funcall separator-right face2 face1 )
( powerline-raw " %l " face1 'l )
( powerline-raw " : " face1 )
( powerline-raw " %c " face1 'r )
( funcall separator-right face1 mode-line )
2016-11-03 23:27:54 +01:00
( powerline-raw " " mode-line )
( powerline-raw " %p " mode-line )
( powerline-raw " " mode-line )
( powerline-buffer-size mode-line nil )
( powerline-raw " " mode-line )
( powerline-hud mode-line face1 )
2015-10-10 22:31:10 +02:00
) ) )
( concat ( powerline-render boon )
( powerline-render lhs )
( powerline-fill face2 ( powerline-width rhs ) )
2016-07-25 19:59:08 +02:00
( powerline-render rhs ) ) ) ) ) ) )
2015-10-10 22:31:10 +02:00
( provide 'boon-powerline )
2015-11-09 15:25:20 +09:00
;;; boon-powerline.el ends here