;(setq display-time-day-and-date t) ;(display-time-mode t) (setq ns-use-srgb-colorspace nil) (require 'color-theme) (load-theme 'cyberpunk t) (require 'evil) (require 'powerline) ;(require 'powerline-evil) ;(set-face-attribute 'mode-line nil :font "Source Code Pro for Powerline-10") ;;; this variable should equal as height in mode-line (custom-set-variables '(powerline-height 14) '(powerline-text-scale-factor 0.85)) ;; 100/140 (custom-set-faces ;;; '(mode-line ((t (:foreground "#030303" :background "#bdbdbd" :box nil :height 0.8 )))) ;;; '(mode-line-inactive ((t (:foreground "#f9f9f9" :background "#666666" :box nil :height 0.8))))) '(mode-line ((t (:foreground "#030303" :background "#bdbdbd" :box nil :family "Source Code Pro for Powerline" :height 100)))) ;; '(mode-line ((t (:foreground "#030303" :background "#bdbdbd" :box nil :family "Source Code Pro for Powerline" :height 80)))) '(mode-line-inactive ((t (:foreground "#f9f9f9" :background "#666666" :box nil :family "Source Code Pro for Powerline" :height 100))))) (defface powerline-active00 '((t (:foreground "#030303" :background "#bdbdbd" :box nil :inherit mode-line))) "Powerline face 1." :group 'powerline) (defface powerline-inactive00 '((t (:foreground "#f9f9f9" :background "#666666" :box nil :inherit mode-line))) "Powerline face 1." :group 'powerline) (defface powerline-active11 '((t (:background "grey22" :inherit mode-line))) "Powerline face 1." :group 'powerline) (defface powerline-active22 '((t (:background "grey40" :inherit mode-line))) "Powerline face 2." :group 'powerline) (defface powerline-inactive11 '((t (:background "grey11" :inherit mode-line))) "Powerline face 1." :group 'powerline) (defface powerline-inactive22 '((t (:background "grey20" :inherit mode-line))) "Powerline face 2." :group 'powerline) ;(defface powerline-active-yel '((t (:background "yellow" :inherit mode-line))) (defface powerline-active-yel '((t (:background "yellow" :inherit mode-line))) "Powerline face 1." :group 'powerline) (defface powerline-active-blue '((t (:background "blue" :inherit mode-line))) "Powerline face 1." :group 'powerline) ;;;---------------- evil powerline ; https://github.com/raugturi/powerline-evil/blob/master/powerline-evil.el ; ;https://github.com/laynor/emacs-conf/blob/master/packages/sm-package-powerline.el ;(defface powerline-evil-base-face '((t (:foreground "white" :inherit mode-line))) ;(defface powerline-evil-base-face '((t (:foreground "black" :weight bold ))) (defface powerline-evil-base-face '((t (:foreground "black" :weight bold :inherit mode-line))) "Base face for powerline evil faces." :group 'powerline) (defface powerline-evil-normal-face '((t (:background "green" :inherit powerline-evil-base-face))) "Powerline face for evil NORMAL state." :group 'powerline) (defface powerline-evil-insert-face '((t (:background "blue" :inherit powerline-evil-base-face))) "Powerline face for evil INSERT state." :group 'powerline) (defface powerline-evil-visual-face '((t (:background "orange" :inherit powerline-evil-base-face))) "Powerline face for evil VISUAL state." :group 'powerline) (defface powerline-evil-operator-face '((t (:background "cyan" :inherit powerline-evil-base-face))) "Powerline face for evil OPERATOR state." :group 'powerline) (defface powerline-evil-replace-face '((t (:background "red" :inherit powerline-evil-base-face))) "Powerline face for evil REPLACE state." :group 'powerline) (defface powerline-evil-motion-face '((t (:background "magenta" :inherit powerline-evil-base-face))) "Powerline face for evil MOTION state." :group 'powerline) (defface powerline-evil-emacs-face '((t (:background "violet" :inherit powerline-evil-base-face))) "Powerline face for evil EMACS state." :group 'powerline) (defun powerline-evil-face () "Function to select appropriate face based on `evil-state'." (let* ((face (intern (concat "powerline-evil-" (symbol-name evil-state) "-face")))) (if (facep face) face nil))) (defun powerline-evil-face (active) (let ((face (intern (concat "powerline-evil-" (symbol-name evil-state) "-face")))) (cond ((and active (facep face)) face) (active 'powerline-active22) (t 'powerline-inactive22)))) (defun powerline-evil-face-22 (active) (if (equal (symbol-name evil-state) "normal") (let ((face (intern (concat "powerline-evil-emacs-face")))) face) (let ((face (intern (concat "powerline-evil-normal-face")))) face) ;; (cond ((and active (facep face)) ;; face) ;; (active 'powerline-active22) ;; (t 'powerline-inactive22))) ;;;; (let ((face (intern (concat "powerline-evil-" (symbol-name evil-state) "-face")))) ;;;; (cond ((and active (facep face)) ;;;; face) ;;;; (active 'powerline-active22) ;;;; (t 'powerline-inactive22))) ) ) (defpowerline powerline-evil-tag (concat " " (replace-regexp-in-string "[<> ]" "" (eval (evil-state-property evil-state :tag))) " ")) ;; ;;http://emacser.com/mode-line.htm (defun get-lines-4-mode-line () (let ((lines (count-lines (point-min) (point-max)))) (concat (propertize (format "%d" lines) 'mouse-face 'mode-line-highlight 'face 'mode-line-lines-face 'help-echo (format "%d lines" lines)) " "))) (defun powerline-simpler-vc-mode (s) (if s (replace-regexp-in-string "Git:" "" s) s)) (defun powerline-simpler-minor-display (s) (replace-regexp-in-string (concat " " (mapconcat 'identity '("Undo-Tree" "GitGutter" "Projectile" "Abbrev" "ColorIds" "MRev" "ElDoc" "Paredit" "+1" "+2" "FlyC" "Fly" ;; ":1/0" "Fill" "AC" "FIC") "\\|")) "" s)) (defun powerline-format-default-directory (s) (if s (replace-regexp-in-string "/Users/peli3/" "~/" s) s)) (defun powerline-evil-tag-new () (concat (replace-regexp-in-string "[<>]" "" (powerline-evil-tag)) " ") ) ;; ----------------------------------------------------------------------------- ;; ----------------------------------------------------------------------------- ;; |evil| buffer_name | major-mode | vc | | position | pwd | time | ;; ----------------------------------------------------------------------------- ;; ;; ToDo: ;; position and pwd only shows in some mode, such as programming mode ;; using workgroup instead of pwd ;; some other modes such as eshell, package, help, don't need the posittion and ;; pwd ;; ;; ----------------------------------------------------------------------------- (defun powerline-ha-theme () "A powerline theme that removes many minor-modes that don't serve much purpose on the mode-line." (interactive) (setq-default mode-line-format '("%e" (:eval (let* ((active (powerline-selected-window-active)) (mode-line (if active 'powerline-active00 'powerline-inactive00)) (face1 (if active 'powerline-active11 'powerline-inactive11)) (face2 (if active 'powerline-active22 'powerline-inactive22)) (face-yel (if active 'powerline-active-yel 'powerline-inactive22)) (face-blue (if active 'powerline-active-blue 'powerline-inactive22)) (pl-evil-face (ignore-errors (powerline-evil-face active))) (pppp-face (intern (concat "powerline-evil-" (symbol-name evil-state) "-face"))) (face-yel22 (if active 'powerline-active-yel 'powerline-inactive22)) (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)))) (lhs (list ;; (let ((evil-face (powerline-evil-face))) ;; (if evil-mode ;; (powerline-raw (powerline-evil-tag) evil-face) ;; ) ;; ;; ) (if evil-mode (powerline-raw (powerline-evil-tag) pl-evil-face)) ;;; (and evil-mode (funcall separator-left pppp-face face-yel)) ;;;;;; (funcall separator-left pppp-face pppp-face) ;;;; (powerline-raw (powerline-evil-tag) pppp-face face-yel) ;; (funcall separator-left (powerline-evil-face) face-yel) (powerline-raw "%*" face-yel 'l) (powerline-buffer-id face-yel 'l) (powerline-raw " " face-yel) (funcall separator-left face-yel face-blue ) (powerline-raw " " face-blue) (powerline-major-mode face-blue 'r) (funcall separator-left face-blue mode-line) (powerline-narrow mode-line 'l) ; (powerline-vc mode-line 'r) (powerline-simpler-vc-mode (powerline-vc mode-line 'r)) (funcall separator-left mode-line face1))) ; (powerline-simpler-vc-mode (powerline-vc face2)))) (rhs (list (funcall separator-right face1 mode-line) ;; position ;; (powerline-raw (concat " [" (powerline-format-default-directory default-directory) "] ") mode-line) (powerline-raw (format " P:[%s] " (projectile-project-name)) mode-line) (funcall separator-right mode-line face-blue) ;; pwd/workgroups (powerline-raw (concat "%3c, %l/" (format "%d" (count-lines (point-min) (point-max))) " %4p ") face-blue) ; (funcall separator-right face-blue face1) ;; date and time ;;; (powerline-raw (format-time-string " %m-%d") face1 'r) (funcall separator-right face-blue face-yel) (powerline-raw (format-time-string " %I:%M %p %m-%d %a ") face-yel 'r))) (center (list (powerline-raw " " face1) (funcall separator-left face1 face2) (when (boundp 'erc-modified-channels-object) (powerline-raw erc-modified-channels-object face2 'l)) (powerline-major-mode face2 'l) (powerline-process face2) (powerline-raw " :" face2) (powerline-simpler-minor-display (powerline-minor-modes face2 'l)) (powerline-raw " " face2) (funcall separator-right face2 face1)))) (concat (powerline-render lhs) (powerline-fill face1 (powerline-width rhs)) (powerline-render rhs)) ); let ); :eval ); '( ); setq ); defun (powerline-ha-theme) ;;(let ((faces '(mode-line ;; powerline-active00 ;; powerline-active11 ;; powerline-active22 ;; powerline-active-yel ;; powerline-active-blue ;; mode-line-buffer-id ;; mode-line-emphasis ;; mode-line-highlight ;; mode-line-inactive))) ;; (mapc ;;; (lambda (face) (set-face-attribute face nil :font "Source Code Pro for Powerline-10")) ;; (lambda (face) (set-face-attribute face nil :font "Courier")) ;; faces)) (provide 'init-color-theme) ;; TODO ;; 1. change color when buffer is modified ;; 2. ;; show date and time in the right below minibuffer