emacs set font type of mode line
[dotfiles.git] / emacs.d / config / init-color-theme.el
1
2
3 ;(setq display-time-day-and-date t)
4 ;(display-time-mode t)
5
6
7 (setq ns-use-srgb-colorspace nil)
8
9 (require 'color-theme)
10
11 (load-theme 'cyberpunk t)
12
13 (require 'evil)
14 (require 'powerline)
15 ;(require 'powerline-evil)
16
17
18
19 ;(set-face-attribute 'mode-line nil :font "Source Code Pro for Powerline-10")
20
21 ;;; this variable should equal as height in mode-line
22 ;;;;;(custom-set-variables
23 ;;;;; '(powerline-text-scale-factor 0.85))
24
25 (custom-set-faces
26 ;;; '(mode-line ((t (:foreground "#030303" :background "#bdbdbd" :box nil :height 0.8 ))))
27 ;;; '(mode-line-inactive ((t (:foreground "#f9f9f9" :background "#666666" :box nil :height 0.8)))))
28  '(mode-line ((t (:foreground "#030303" :background "#bdbdbd" :box nil  :family "Source Code Pro for Powerline" :height 0.8))))
29  '(mode-line-inactive ((t (:foreground "#f9f9f9" :background "#666666" :box nil :family "Source Code Pro for Powerline" :height 0.8)))))
30
31 (defface powerline-active00 '((t (:foreground "#030303" :background "#bdbdbd" :box nil :inherit mode-line)))
32   "Powerline face 1."
33   :group 'powerline)
34
35 (defface powerline-inactive00 '((t (:foreground "#f9f9f9" :background "#666666" :box nil :inherit mode-line)))
36   "Powerline face 1."
37   :group 'powerline)
38
39 (defface powerline-active11 '((t (:background "grey22" :inherit mode-line)))
40   "Powerline face 1."
41   :group 'powerline)
42
43 (defface powerline-active22 '((t (:background "grey40" :inherit mode-line)))
44   "Powerline face 2."
45   :group 'powerline)
46
47 (defface powerline-inactive11   '((t (:background "grey11" :inherit mode-line)))
48   "Powerline face 1."
49   :group 'powerline)
50
51 (defface powerline-inactive22   '((t (:background "grey20" :inherit mode-line)))
52   "Powerline face 2."
53   :group 'powerline)
54
55
56 ;(defface powerline-active-yel '((t (:background "yellow" :inherit mode-line)))
57 (defface powerline-active-yel '((t (:background "yellow" :inherit mode-line)))
58   "Powerline face 1."
59   :group 'powerline)
60
61 (defface powerline-active-blue '((t (:background "blue" :inherit mode-line)))
62   "Powerline face 1."
63   :group 'powerline)
64
65 ;;;---------------- evil powerline
66 ; https://github.com/raugturi/powerline-evil/blob/master/powerline-evil.el
67 ; ;https://github.com/laynor/emacs-conf/blob/master/packages/sm-package-powerline.el
68 ;(defface powerline-evil-base-face '((t (:foreground "white" :inherit mode-line)))
69 ;(defface powerline-evil-base-face '((t (:foreground "black" :weight bold )))
70 (defface powerline-evil-base-face '((t (:foreground "black" :weight bold :inherit mode-line)))
71   "Base face for powerline evil faces."
72   :group 'powerline)
73
74 (defface powerline-evil-normal-face '((t (:background "green" :inherit powerline-evil-base-face)))
75   "Powerline face for evil NORMAL state."
76   :group 'powerline)
77
78 (defface powerline-evil-insert-face '((t (:background "blue" :inherit powerline-evil-base-face)))
79   "Powerline face for evil INSERT state."
80   :group 'powerline)
81
82 (defface powerline-evil-visual-face '((t (:background "orange" :inherit powerline-evil-base-face)))
83   "Powerline face for evil VISUAL state."
84   :group 'powerline)
85
86 (defface powerline-evil-operator-face   '((t (:background "cyan" :inherit powerline-evil-base-face)))
87   "Powerline face for evil OPERATOR state."
88   :group 'powerline)
89
90 (defface powerline-evil-replace-face    '((t (:background "red" :inherit powerline-evil-base-face)))
91   "Powerline face for evil REPLACE state."
92   :group 'powerline)
93
94 (defface powerline-evil-motion-face '((t (:background "magenta" :inherit powerline-evil-base-face)))
95   "Powerline face for evil MOTION state."
96   :group 'powerline)
97
98 (defface powerline-evil-emacs-face  '((t (:background "violet" :inherit powerline-evil-base-face)))
99   "Powerline face for evil EMACS state."
100   :group 'powerline)
101
102 ;;(defun powerline-evil-face (active)
103 ;;  "Function to select appropriate face based on `evil-state'."
104 ;;  (let* ((face (intern (concat "powerline-evil-" (symbol-name evil-state) "-face"))))
105 ;;    (if (facep face) face nil)))
106 ;;
107
108   (defun powerline-evil-face (active)
109     (let ((face (intern (concat "powerline-evil-" (symbol-name evil-state) "-face"))))
110       (cond ((and active (facep face))
111              face)
112             (active 'powerline-active22)
113             (t 'powerline-inactive22))))
114
115   (defpowerline powerline-evil-tag
116     (concat " " (replace-regexp-in-string "[<> ]" "" (eval (evil-state-property evil-state :tag))) " "))
117
118
119
120
121
122 ;;
123 ;;http://emacser.com/mode-line.htm
124 (defun get-lines-4-mode-line ()
125   (let ((lines (count-lines (point-min) (point-max))))
126     (concat (propertize
127              (format "%d" lines)
128              'mouse-face 'mode-line-highlight
129              'face 'mode-line-lines-face
130              'help-echo (format "%d lines" lines)) " ")))
131
132
133
134 (defun powerline-simpler-vc-mode (s)
135   (if s
136       (replace-regexp-in-string "Git:" "" s)
137     s))
138
139 (defun powerline-simpler-minor-display (s)
140   (replace-regexp-in-string
141    (concat " "
142            (mapconcat 'identity '("Undo-Tree" "GitGutter" "Projectile"
143                                   "Abbrev" "ColorIds" "MRev" "ElDoc" "Paredit"
144                                   "+1" "+2" "FlyC" "Fly" ;; ":1/0"
145                                   "Fill" "AC" "FIC") "\\|")) "" s))
146
147 (defun powerline-format-default-directory (s)
148   (if s
149     (replace-regexp-in-string "/Users/peli3/"  "~/" s)
150     s))
151
152 (defun powerline-evil-tag-new ()
153   (concat (replace-regexp-in-string "[<>]" "" (powerline-evil-tag)) " ")
154   )
155
156 (defun powerline-ha-theme ()
157   "A powerline theme that removes many minor-modes that don't serve much purpose on the mode-line."
158   (interactive)
159   (setq-default mode-line-format
160                 '("%e"
161                   (:eval
162                    (let*
163                        ((active
164                          (powerline-selected-window-active))
165                         (mode-line
166                          (if active 'powerline-active00 'powerline-inactive00))
167                         (face1
168                          (if active 'powerline-active11 'powerline-inactive11))
169                         (face2
170                          (if active 'powerline-active22 'powerline-inactive22))
171                         (face-yel
172                          (if active 'powerline-active-yel 'powerline-inactive22))
173                         (face-blue
174                          (if active 'powerline-active-blue 'powerline-inactive22))
175                          (pl-evil-face (ignore-errors (powerline-evil-face active)))
176                         (separator-left
177                          (intern
178                           (format "powerline-%s-%s" powerline-default-separator
179                                   (car powerline-default-separator-dir))))
180                         (separator-right
181                          (intern
182                           (format "powerline-%s-%s" powerline-default-separator
183                                   (cdr powerline-default-separator-dir))))
184                         (lhs
185                             (list
186 ;;                                (let ((evil-face (powerline-evil-face)))
187 ;;                                    (if evil-mode
188 ;;                                            (powerline-raw (powerline-evil-tag) evil-face)
189 ;;                                    )
190 ;;
191 ;;                                )
192                                 (powerline-raw (powerline-evil-tag) pl-evil-face )
193                                 (and evil-mode (funcall separator-left pl-evil-face face-yel))
194 ;;                                (powerline-raw (powerline-evil-tag) (powerline-evil-face))
195 ;;                                (funcall separator-left (powerline-evil-face) face-yel)
196
197                                 (powerline-raw "%*" face-yel 'l)
198                                 (powerline-buffer-id face-yel 'l)
199                                 (powerline-raw " " face-yel)
200                                 (funcall separator-left face-yel face-blue )
201                                                 (powerline-raw " " face-blue)
202                                 (powerline-major-mode face-blue 'r)
203                                 (funcall separator-left face-blue mode-line)
204                                 (powerline-narrow mode-line 'l)
205 ;                                (powerline-vc mode-line 'r)
206                                 (powerline-simpler-vc-mode (powerline-vc mode-line 'r))
207                                 (funcall separator-left mode-line face1)))
208 ;                                (powerline-simpler-vc-mode (powerline-vc face2))))
209                         
210                         (rhs
211                             (list
212                                 (funcall separator-right face1 mode-line)
213                                 (powerline-raw (concat "%3c, %l/" (format "%d" (count-lines (point-min) (point-max))) " %4p ") mode-line)
214                                                 (funcall separator-right mode-line face-blue)
215                                                 (powerline-raw " [" face-blue)
216                                                 (powerline-raw (powerline-format-default-directory default-directory) face-blue )
217                                                 (powerline-raw "] " face-blue)
218                                                 (funcall separator-right face-blue face1)
219                                             (powerline-raw (format-time-string " %m-%d") face1 'r)
220                                 (funcall separator-right face1 face-yel)
221                                             (powerline-raw (format-time-string " %I:%M %p %a ") face-yel 'r)))
222                         (center
223                             (list
224                                 (powerline-raw " " face1)
225                                 (funcall separator-left face1 face2)
226                                 (when
227                                     (boundp 'erc-modified-channels-object)
228                                 (powerline-raw erc-modified-channels-object face2 'l))
229                                 (powerline-major-mode face2 'l)
230                                 (powerline-process face2)
231                                 (powerline-raw " :" face2)
232
233                                 (powerline-simpler-minor-display (powerline-minor-modes face2 'l))
234
235                                 (powerline-raw " " face2)
236                                 (funcall separator-right face2 face1))))
237
238
239                      (concat
240                       (powerline-render lhs)
241                       (powerline-fill face1
242                                       (powerline-width rhs))
243                       (powerline-render rhs))
244                      ); let
245                    ); :eval
246                   ); '(
247                 ); setq
248   ); defun
249
250
251 (powerline-ha-theme)
252
253
254
255 ;;(let ((faces '(mode-line
256 ;;               powerline-active00
257 ;;               powerline-active11
258 ;;               powerline-active22
259 ;;               powerline-active-yel
260 ;;               powerline-active-blue
261 ;;               mode-line-buffer-id
262 ;;               mode-line-emphasis
263 ;;               mode-line-highlight
264 ;;               mode-line-inactive)))
265 ;;     (mapc
266 ;;;      (lambda (face) (set-face-attribute face nil :font "Source Code Pro for Powerline-10"))
267 ;;      (lambda (face) (set-face-attribute face nil :font "Courier"))
268 ;;      faces))
269
270
271
272 (provide 'init-color-theme)
273
274
275
276 ;; TODO
277 ;; 1. change color when buffer is modified
278 ;; 2. 
279 ;; show date and time in the right below minibuffer
280