;; A windows may have six kinds different mode-line
;; type = 1.
+;; Left - workspace list
+;; Right - Showing Time
+;; Center - buffer , as no windows in its left or right.
;; -----------------------------
;; |>>> O <<<|
;; -----------------------------
+;; type = 2.
+;; -----------------------------
+;; |>>> O|
+;; -----------------------------
+;; type = 3.
+;; -----------------------------
+;; |O <<<|
+;; -----------------------------
+;; type = 4.
+;; -----------------------------
+;; | O |
+;; -----------------------------
+;; type = 5.
+;; -----------------------------
+;; | O|
+;; -----------------------------
+;; type = 6.
+;; -----------------------------
+;; |O |
+;; -----------------------------
(defun my-below-winow-has-effect-window ()
"Return true when its below has no active window or
(t
4)))
-(defface my-powerline-hl-ws '((t (:background "red" :foreground "black" :inherit mode-line)))
+(defface my-powerline-hl-ws '((t (:background "blue" :foreground "black" :inherit mode-line)))
"My Powerline face 1 based on powerline-active1."
:group 'powerline)
"My Powerline face 1 based on powerline-active1."
:group 'powerline)
+
+(defface my-evil-mode-tag '((t (:foreground "black" :inherit mode-line)))
+ "My evil mode line"
+ :group 'powerline)
+
+(defface my-powerline-evil-normal '((t (:background "green" :foreground "black" :inherit mode-line)))
+ "My Powerline face 1 based on powerline-active1."
+ :group 'powerline)
+
+(defface my-powerline-evil-emacs '((t (:background "red" :foreground "black" :inherit mode-line)))
+ "My Powerline face 1 based on powerline-active1."
+ :group 'powerline)
+
+(defface my-powerline-evil-insert '((t (:background "orange" :foreground "black" :inherit mode-line)))
+ "My Powerline face 1 based on powerline-active1."
+ :group 'powerline)
+
+(defface my-powerline-evil-visual '((t (:background "orange" :foreground "black" :inherit mode-line)))
+ "My Powerline face 1 based on powerline-active1."
+ :group 'powerline)
+
(defun my-get-ws-name-list ()
"Return the name list of workspaces gotten from `perspeen-modestring' without the properties."
(split-string (substring-no-properties (cadr perspeen-modestring)) "|"))
'face)
(setq ret (substring-no-properties i))))))
+
(defun my-build-left-below-mode-line (separator lface face1)
(let ((l)
(selected-name (my-get-selected-ws-name))
(name-list (my-get-ws-name-list)))
- (setq l (list (powerline-raw " workspace " lface)))
(if (string= selected-name (car name-list))
(progn
- (nconc l (list (funcall separator lface 'my-powerline-hl-ws)
- (powerline-raw (car name-list) 'my-powerline-hl-ws)
- (funcall separator 'my-powerline-hl-ws face1)))
+ (setq l (list (funcall separator lface 'my-powerline-hl-ws)
+ (powerline-raw (car name-list) 'my-powerline-hl-ws)
+ (funcall separator 'my-powerline-hl-ws face1)))
(dolist (i (cdr name-list))
(nconc l (list (powerline-raw i face1)
(funcall separator face1 face1)))))
- (nconc l (list (funcall separator lface face1)))
+ (setq l (list (funcall separator lface face1)))
(while name-list
(let ((current-selected (string= selected-name (car name-list)))
(next-selected (string= selected-name (cadr name-list))))
(defun my-is-special-buffer ()
;; suppose all buffer name started with a star is a special buffer.
- (string-match "\*" (buffer-name))
- ;; (or (string-match "*scratch*" (buffer-name))
- ;; (string-match "*Message*" (buffer-name))
- ;; (equal major-mode 'eshell-mode))
- )
-
-(defun my-get-buffer-name-face (active-face)
- (cond (buffer-read-only
- 'sd/buffer-view-active1)
- ((and (buffer-modified-p) (not (my-is-special-buffer)))
- 'sd/buffer-modified-active1)
- (t active-face)))
+ (string-match "\*" (buffer-name)))
+
+(defun my-get-buffer-name-face (orignal-face)
+ (cond
+ ((not (powerline-selected-window-active)) orignal-face)
+ (buffer-read-only
+ 'sd/buffer-view-active1)
+ ((and (buffer-modified-p) (not (my-is-special-buffer)))
+ 'sd/buffer-modified-active1)
+ (t orignal-face)))
+
+(defun get-active-window-evil-tag ()
+ (dolist (i (window-list) ret)
+ (with-selected-window i
+ (when (powerline-selected-window-active)
+ (setq ret (with-current-buffer (window-buffer)
+ evil-mode-line-tag))))))
(defun sd/powerline-center-theme_revised-2 ()
"Setup a mode-line with major and minor modes centered."
(active (powerline-selected-window-active))
(my-face1 'sd/powerline-active1 )
(face1 'powerline-active1)
+ ;; (face1 'mode-line-inactive)
(face2 'powerline-active2)
(separator-left (intern (format "powerline-%s-%s" (powerline-current-separator) (car powerline-default-separator-dir))))
(separator-right (intern (format "powerline-%s-%s" (powerline-current-separator) (cdr powerline-default-separator-dir))))
(cface (if active my-face1 face2))
(rface (if (and (not active) (or (= window-type 2) (= window-type 5))) face2 my-face1))
(lhs (cond ((or (= window-type 1) (= window-type 2))
- (my-build-left-below-mode-line separator-left lface face1))
+ (append (list (powerline-raw (when evil-mode (get-active-window-evil-tag)) 'my-powerline-evil-normal)
+ (powerline-raw " WS " lface))
+ (append
+ (my-build-left-below-mode-line separator-left lface face1))))
((or (= window-type 3) (= window-type 6))
(list (powerline-buffer-id (my-get-buffer-name-face lface) 'l)
- (powerline-raw "%* " (my-get-buffer-name-face lface))
+ (unless (my-is-special-buffer)
+ (powerline-raw "%* " (my-get-buffer-name-face lface)))
(funcall separator-left (my-get-buffer-name-face lface) face1 )))
(t
nil)))
(center (cond ((or (= window-type 1) (= window-type 4))
(list (powerline-raw " " face1)
(funcall separator-right face1 (my-get-buffer-name-face cface))
- (powerline-raw "%*" (my-get-buffer-name-face cface))
+ (unless (my-is-special-buffer)
+ (powerline-raw "%*" (my-get-buffer-name-face cface)))
(powerline-buffer-id (my-get-buffer-name-face cface) 'r)
(funcall separator-left (my-get-buffer-name-face cface) face1)))
(t
nil)))
(rhs (cond ((or (= window-type 1) (= window-type 3))
- (list (funcall separator-right face1 rface)
+ (list (powerline-raw (format-time-string "%Y-%m-%d %a") face1 'r)
+ (funcall separator-right face1 rface)
(powerline-raw (format-time-string " %I:%M %p ") rface 'r)))
((or (= window-type 2) (= window-type 5))
(list (funcall separator-right face1 (my-get-buffer-name-face rface))
- (powerline-raw "%*" (my-get-buffer-name-face rface))
+ (unless (my-is-special-buffer)
+ (powerline-raw "%*" (my-get-buffer-name-face rface)))
(powerline-buffer-id (my-get-buffer-name-face rface) 'r)
(powerline-raw " " (my-get-buffer-name-face rface))))
(t