X-Git-Url: http://47.100.26.94:8080/?a=blobdiff_plain;f=emacs.d%2Felisp%2Fmy-mode-line.el;h=aeaeb8aa15e8012b92acc2a108aea5b09df640ac;hb=33ae631ee61dac5ec34c09ab63ea735ae68c62b8;hp=6c528ce6fada5e70e7d90379ad72e85ae6bf609f;hpb=41b08d2b3e7d178c3523529d7249d80e7a4fae3a;p=dotfiles.git diff --git a/emacs.d/elisp/my-mode-line.el b/emacs.d/elisp/my-mode-line.el index 6c528ce..aeaeb8a 100644 --- a/emacs.d/elisp/my-mode-line.el +++ b/emacs.d/elisp/my-mode-line.el @@ -26,9 +26,32 @@ ;; 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 @@ -72,6 +95,27 @@ window type." "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)) "|")) @@ -83,20 +127,20 @@ window type." '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)))) @@ -109,15 +153,22 @@ window type." ;; suppose all buffer name started with a star is a special buffer. (string-match "\*" (buffer-name))) -(defun my-get-buffer-name-face (orignal-face &optional active) +(defun my-get-buffer-name-face (orignal-face) (cond - ((not active) orignal-face) + ((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." (interactive) @@ -128,6 +179,7 @@ window type." (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)))) @@ -135,21 +187,24 @@ window type." (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 active) 'l) + (list (powerline-buffer-id (my-get-buffer-name-face lface) 'l) (unless (my-is-special-buffer) - (powerline-raw "%* " (my-get-buffer-name-face lface active))) - (funcall separator-left (my-get-buffer-name-face lface active) face1 ))) + (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 active)) + (funcall separator-right face1 (my-get-buffer-name-face cface)) (unless (my-is-special-buffer) - (powerline-raw "%*" (my-get-buffer-name-face cface active))) - (powerline-buffer-id (my-get-buffer-name-face cface active) 'r) - (funcall separator-left (my-get-buffer-name-face cface active) face1))) + (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)) @@ -157,11 +212,11 @@ window type." (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 active)) + (list (funcall separator-right face1 (my-get-buffer-name-face rface)) (unless (my-is-special-buffer) - (powerline-raw "%*" (my-get-buffer-name-face rface active))) - (powerline-buffer-id (my-get-buffer-name-face rface active) 'r) - (powerline-raw " " (my-get-buffer-name-face rface active)))) + (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 nil)))) (concat (powerline-render lhs)