improve
[dotfiles.git] / emacs.d / elisp / my-mode-line.el
index 525aecb..98ad7a9 100644 (file)
 
 ;; 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
@@ -64,7 +87,7 @@ window type."
        (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)
 
@@ -87,7 +110,7 @@ window type."
   (let ((l)
        (selected-name (my-get-selected-ws-name))
        (name-list (my-get-ws-name-list)))
-    (setq l (list (powerline-raw " workspace " lface)))
+    (setq l (list (powerline-raw " WS " lface)))
     (if (string= selected-name (car name-list))
        (progn
          (nconc l (list (funcall separator lface 'my-powerline-hl-ws)
@@ -107,18 +130,16 @@ window type."
 
 (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 sd/powerline-center-theme_revised-2 ()
   "Setup a mode-line with major and minor modes centered."
@@ -130,6 +151,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))))
@@ -140,24 +162,28 @@ window type."
                                      (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