| @ -1,91 +0,0 @@ | |||
| ;;; powerline-autoloads.el --- automatically extracted autoloads | |||
| ;; | |||
| ;;; Code: | |||
| (add-to-list 'load-path (or (file-name-directory #$) (car load-path))) | |||
| ;;;### (autoloads nil "powerline" "powerline.el" (21569 53234 0 0)) | |||
| ;;; Generated autoloads from powerline.el | |||
| (autoload 'powerline-hud "powerline" "\ | |||
| Return an XPM of relative buffer location using FACE1 and FACE2 of optional WIDTH. | |||
| \(fn FACE1 FACE2 &optional WIDTH)" nil nil) | |||
| (autoload 'powerline-mouse "powerline" "\ | |||
| Return mouse handler for CLICK-GROUP given CLICK-TYPE and STRING. | |||
| \(fn CLICK-GROUP CLICK-TYPE STRING)" nil nil) | |||
| (autoload 'powerline-concat "powerline" "\ | |||
| Concatonate STRINGS and pad sides by spaces. | |||
| \(fn &rest STRINGS)" nil nil) | |||
| (autoload 'defpowerline "powerline" "\ | |||
| Create function NAME by wrapping BODY with powerline padding an propetization. | |||
| \(fn NAME BODY)" nil t) | |||
| (autoload 'powerline-raw "powerline" "\ | |||
| Render STR as mode-line data using FACE and optionally PAD import on left (l) or right (r). | |||
| \(fn STR &optional FACE PAD)" nil nil) | |||
| (autoload 'powerline-fill "powerline" "\ | |||
| Return empty space using FACE and leaving RESERVE space on the right. | |||
| \(fn FACE RESERVE)" nil nil) | |||
| (defpowerline powerline-major-mode (propertize (format-mode-line mode-name) 'mouse-face 'mode-line-highlight 'help-echo "Major mode\nmouse-1: Display major mode menu\nmouse-2: Show help for major mode\nmouse-3: Toggle minor modes" 'local-map (let ((map (make-sparse-keymap))) (define-key map [mode-line down-mouse-1] `(menu-item ,(purecopy "Menu Bar") ignore :filter (lambda (_) (mouse-menu-major-mode-map)))) (define-key map [mode-line mouse-2] 'describe-mode) (define-key map [mode-line down-mouse-3] mode-line-mode-menu) map))) | |||
| (defpowerline powerline-minor-modes (mapconcat (lambda (mm) (propertize mm 'mouse-face 'mode-line-highlight 'help-echo "Minor mode\n mouse-1: Display minor mode menu\n mouse-2: Show help for minor mode\n mouse-3: Toggle minor modes" 'local-map (let ((map (make-sparse-keymap))) (define-key map [mode-line down-mouse-1] (powerline-mouse 'minor 'menu mm)) (define-key map [mode-line mouse-2] (powerline-mouse 'minor 'help mm)) (define-key map [mode-line down-mouse-3] (powerline-mouse 'minor 'menu mm)) (define-key map [header-line down-mouse-3] (powerline-mouse 'minor 'menu mm)) map))) (split-string (format-mode-line minor-mode-alist)) (propertize " " 'face face))) | |||
| (defpowerline powerline-narrow (let (real-point-min real-point-max) (save-excursion (save-restriction (widen) (setq real-point-min (point-min) real-point-max (point-max)))) (when (or (/= real-point-min (point-min)) (/= real-point-max (point-max))) (propertize "Narrow" 'mouse-face 'mode-line-highlight 'help-echo "mouse-1: Remove narrowing from the current buffer" 'local-map (make-mode-line-mouse-map 'mouse-1 'mode-line-widen))))) | |||
| (defpowerline powerline-vc (when (and (buffer-file-name (current-buffer)) vc-mode) (format-mode-line '(vc-mode vc-mode)))) | |||
| (defpowerline powerline-buffer-size (propertize (if powerline-buffer-size-suffix "%I" "%i") 'mouse-face 'mode-line-highlight 'local-map (make-mode-line-mouse-map 'mouse-1 (lambda nil (interactive) (setq powerline-buffer-size-suffix (not powerline-buffer-size-suffix)) (force-mode-line-update))))) | |||
| (defpowerline powerline-buffer-id (format-mode-line mode-line-buffer-identification)) | |||
| (defpowerline powerline-process (cond ((symbolp mode-line-process) (symbol-value mode-line-process)) ((listp mode-line-process) (format-mode-line mode-line-process)) (t mode-line-process))) | |||
| ;;;*** | |||
| ;;;### (autoloads nil "powerline-themes" "powerline-themes.el" (21569 | |||
| ;;;;;; 53234 0 0)) | |||
| ;;; Generated autoloads from powerline-themes.el | |||
| (autoload 'powerline-default-theme "powerline-themes" "\ | |||
| Setup the default mode-line. | |||
| \(fn)" t nil) | |||
| (autoload 'powerline-center-theme "powerline-themes" "\ | |||
| Setup a mode-line with major and minor modes centered. | |||
| \(fn)" t nil) | |||
| (autoload 'powerline-vim-theme "powerline-themes" "\ | |||
| Setup a Vim-like mode-line. | |||
| \(fn)" t nil) | |||
| (autoload 'powerline-nano-theme "powerline-themes" "\ | |||
| Setup a nano-like mode-line. | |||
| \(fn)" t nil) | |||
| ;;;*** | |||
| ;;;### (autoloads nil nil ("powerline-pkg.el" "powerline-separators.el") | |||
| ;;;;;; (21569 53234 965340 0)) | |||
| ;;;*** | |||
| ;; Local Variables: | |||
| ;; version-control: never | |||
| ;; no-byte-compile: t | |||
| ;; no-update-autoloads: t | |||
| ;; End: | |||
| ;;; powerline-autoloads.el ends here | |||
| @ -1,7 +0,0 @@ | |||
| (define-package "powerline" "20140516.2128" "Rewrite of Powerline" | |||
| '((cl-lib "0.2")) | |||
| :url "http://github.com/milkypostman/powerline/" :keywords | |||
| '("mode-line")) | |||
| ;; Local Variables: | |||
| ;; no-byte-compile: t | |||
| ;; End: | |||
| @ -1,320 +0,0 @@ | |||
| ;;; powerline-separators.el --- Separators for Powerline | |||
| ;; Copyright (C) 2012-2013 Donald Ephraim Curtis | |||
| ;; Copyright (C) 2013 Jason Milkins | |||
| ;; Copyright (C) 2012 Nicolas Rougier | |||
| ;; Author: Donald Ephraim Curtis <dcurtis@milkbox.net> | |||
| ;; URL: http://github.com/milkypostman/powerline/ | |||
| ;; Version: 2.0 | |||
| ;; Keywords: mode-line | |||
| ;;; Commentary: | |||
| ;; | |||
| ;; Separators for Powerline. | |||
| ;; Included separators: alternate, arrow, arrow-fade, bar, box, brace, butt, | |||
| ;; chamfer, contour, curve, rounded, roundstub, slant, wave, zigzag, and nil. | |||
| ;; | |||
| ;;; Code: | |||
| (require 'cl-lib) | |||
| (require 'color) | |||
| (defun pl/interpolate (color1 color2) | |||
| "Interpolate between COLOR1 and COLOR2. | |||
| COLOR1 and COLOR2 must be supplied as hex strings with a leading #." | |||
| (let* ((c1 (color-name-to-rgb color1)) | |||
| (c2 (color-name-to-rgb color2)) | |||
| (red (/ (+ (nth 0 c1) (nth 0 c2)) 2)) | |||
| (green (/ (+ (nth 1 c1) (nth 1 c2)) 2)) | |||
| (blue (/ (+ (nth 2 c1) (nth 2 c2)) 2))) | |||
| (color-rgb-to-hex red green blue))) | |||
| (defun pl/hex-color (color) | |||
| "Get the hexadecimal value of COLOR." | |||
| (when color | |||
| (apply 'color-rgb-to-hex (color-name-to-rgb color)))) | |||
| (defun pl/pattern (lst) | |||
| "Turn LST into an infinite pattern." | |||
| (when lst | |||
| (let ((pattern (cl-copy-list lst))) | |||
| (setcdr (last pattern) pattern)))) | |||
| (defun pl/pattern-to-string (pattern) | |||
| "Convert a PATTERN into a string that can be used in an XPM." | |||
| (concat "\"" (mapconcat 'number-to-string pattern "") "\",")) | |||
| (defun pl/reverse-pattern (pattern) | |||
| "Reverse each line in PATTERN." | |||
| (mapcar 'reverse pattern)) | |||
| (defun pl/row-pattern (fill total &optional fade) | |||
| "Make a list that has FILL 0s out of TOTAL 1s with FADE 2s to the right of the fill." | |||
| (unless fade | |||
| (setq fade 0)) | |||
| (let ((fill (min fill total)) | |||
| (fade (min fade (max (- total fill) 0)))) | |||
| (append (make-list fill 0) | |||
| (make-list fade 2) | |||
| (make-list (- total fill fade) 1)))) | |||
| (defun pl/pattern-defun (name dir width &rest patterns) | |||
| "Create a powerline function of NAME in DIR with WIDTH for PATTERNS. | |||
| PATTERNS is of the form (PATTERN HEADER FOOTER SECOND-PATTERN CENTER). | |||
| PATTERN is required, all other components are optional. | |||
| All generated functions generate the form: | |||
| HEADER | |||
| PATTERN ... | |||
| CENTER | |||
| SECOND-PATTERN ... | |||
| FOOTER | |||
| PATTERN and SECOND-PATTERN repeat infinitely to fill the space needed to generate a full height XPM. | |||
| PATTERN, HEADER, FOOTER, SECOND-PATTERN, CENTER are of the form ((COLOR ...) (COLOR ...) ...). | |||
| COLOR can be one of 0, 1, or 2, where 0 is the source color, 1 is the | |||
| destination color, and 2 is the interpolated color between 0 and 1." | |||
| (when (eq dir 'right) | |||
| (setq patterns (mapcar 'pl/reverse-pattern patterns))) | |||
| (let* ((pattern (pl/pattern (mapcar 'pl/pattern-to-string (car patterns)))) | |||
| (header (mapcar 'pl/pattern-to-string (nth 1 patterns))) | |||
| (footer (mapcar 'pl/pattern-to-string (nth 2 patterns))) | |||
| (second-pattern (pl/pattern (mapcar 'pl/pattern-to-string (nth 3 patterns)))) | |||
| (center (mapcar 'pl/pattern-to-string (nth 4 patterns))) | |||
| (reserve (+ (length header) (length footer) (length center)))) | |||
| (pl/wrap-defun name dir width | |||
| `((pattern-height (max (- height ,reserve) 0)) | |||
| (second-pattern-height (/ pattern-height 2)) | |||
| (pattern-height ,(if second-pattern '(ceiling pattern-height 2) 'pattern-height))) | |||
| `((mapconcat 'identity ',header "") | |||
| (mapconcat 'identity (cl-subseq ',pattern 0 pattern-height) "") | |||
| (mapconcat 'identity ',center "") | |||
| (mapconcat 'identity (cl-subseq ',second-pattern 0 second-pattern-height) "") | |||
| (mapconcat 'identity ',footer ""))))) | |||
| (defun pl/wrap-defun (name dir width let-vars body) | |||
| "Generate a powerline function of NAME in DIR with WIDTH using LET-VARS and BODY." | |||
| (let* ((src-face (if (eq dir 'left) 'face1 'face2)) | |||
| (dst-face (if (eq dir 'left) 'face2 'face1))) | |||
| `(defun ,(intern (format "powerline-%s-%s" name (symbol-name dir))) | |||
| (face1 face2 &optional height) | |||
| (when window-system | |||
| (unless height | |||
| (setq height (pl/separator-height))) | |||
| (let* ,(append `((color1 (when ,src-face | |||
| (pl/hex-color (face-background ,src-face)))) | |||
| (color2 (when ,dst-face | |||
| (pl/hex-color (face-background ,dst-face)))) | |||
| (colori (when (and color1 color2) (pl/interpolate color1 color2))) | |||
| (color1 (or color1 "None")) | |||
| (color2 (or color2 "None")) | |||
| (colori (or colori "None"))) | |||
| let-vars) | |||
| (create-image ,(append `(concat (format "/* XPM */ static char * %s_%s[] = { \"%s %s 3 1\", \"0 c %s\", \"1 c %s\", \"2 c %s\"," | |||
| ,(replace-regexp-in-string "-" "_" name) | |||
| (symbol-name ',dir) | |||
| ,width | |||
| height | |||
| color1 | |||
| color2 | |||
| colori)) | |||
| body | |||
| '("};")) | |||
| 'xpm t | |||
| :ascent 'center | |||
| :face (when (and face1 face2) | |||
| ,dst-face))))))) | |||
| (defmacro pl/alternate (dir) | |||
| "Generate an alternating pattern XPM function for DIR." | |||
| (pl/pattern-defun "alternate" dir 4 | |||
| '((2 2 1 1) | |||
| (0 0 2 2)))) | |||
| (defmacro pl/arrow (dir) | |||
| "Generate an arrow XPM function for DIR." | |||
| (let ((row-modifier (if (eq dir 'left) 'identity 'reverse))) | |||
| (pl/wrap-defun "arrow" dir 'middle-width | |||
| '((width (1- (/ height 2))) | |||
| (middle-width (1- (ceiling height 2)))) | |||
| `((cl-loop for i from 0 to width | |||
| concat (pl/pattern-to-string (,row-modifier (pl/row-pattern i middle-width)))) | |||
| (when (cl-oddp height) | |||
| (pl/pattern-to-string (make-list middle-width 0))) | |||
| (cl-loop for i from width downto 0 | |||
| concat (pl/pattern-to-string (,row-modifier (pl/row-pattern i middle-width)))))))) | |||
| (defmacro pl/arrow-fade (dir) | |||
| "Generate an arrow-fade XPM function for DIR." | |||
| (let* ((row-modifier (if (eq dir 'left) 'identity 'reverse))) | |||
| (pl/wrap-defun "arrow-fade" dir 'middle-width | |||
| '((width (1- (/ height 2))) | |||
| (middle-width (1+ (ceiling height 2)))) | |||
| `((cl-loop for i from 0 to width | |||
| concat (pl/pattern-to-string (,row-modifier (pl/row-pattern i middle-width 2)))) | |||
| (when (cl-oddp height) | |||
| (pl/pattern-to-string (,row-modifier (pl/row-pattern (1+ width) middle-width 2)))) | |||
| (cl-loop for i from width downto 0 | |||
| concat (pl/pattern-to-string (,row-modifier (pl/row-pattern i middle-width 2)))))))) | |||
| (defmacro pl/bar (dir) | |||
| "Generate a bar XPM function for DIR." | |||
| (pl/pattern-defun "bar" dir 2 | |||
| '((2 2)))) | |||
| (defmacro pl/box (dir) | |||
| "Generate a box XPM function for DIR." | |||
| (pl/pattern-defun "box" dir 2 | |||
| '((0 0) | |||
| (0 0) | |||
| (1 1) | |||
| (1 1)))) | |||
| (defmacro pl/brace (dir) | |||
| "Generate a brace XPM function for DIR." | |||
| (pl/pattern-defun "brace" dir 4 | |||
| '((0 1 1 1)) | |||
| '((1 1 1 1) | |||
| (2 1 1 1)) | |||
| '((2 1 1 1) | |||
| (1 1 1 1)) | |||
| '((0 1 1 1)) | |||
| '((0 2 1 1) | |||
| (0 2 1 1) | |||
| (0 0 2 1) | |||
| (0 0 0 0) | |||
| (0 0 2 1) | |||
| (0 2 1 1) | |||
| (0 2 1 1)))) | |||
| (defmacro pl/butt (dir) | |||
| "Generate a butt XPM function for DIR." | |||
| (pl/pattern-defun "butt" dir 3 | |||
| '((0 0 0)) | |||
| '((1 1 1) | |||
| (0 1 1) | |||
| (0 0 1)) | |||
| '((0 0 1) | |||
| (0 1 1) | |||
| (1 1 1)))) | |||
| (defmacro pl/chamfer (dir) | |||
| "Generate a chamfer XPM function for DIR." | |||
| (pl/pattern-defun "chamfer" dir 3 | |||
| '((0 0 0)) | |||
| '((1 1 1) | |||
| (0 1 1) | |||
| (0 0 1)))) | |||
| (defmacro pl/contour (dir) | |||
| "Generate a contour XPM function for DIR." | |||
| (pl/pattern-defun "contour" dir 10 | |||
| '((0 0 0 0 0 1 1 1 1 1)) | |||
| '((1 1 1 1 1 1 1 1 1 1) | |||
| (0 2 1 1 1 1 1 1 1 1) | |||
| (0 0 2 1 1 1 1 1 1 1) | |||
| (0 0 0 2 1 1 1 1 1 1) | |||
| (0 0 0 0 1 1 1 1 1 1) | |||
| (0 0 0 0 2 1 1 1 1 1)) | |||
| '((0 0 0 0 0 2 1 1 1 1) | |||
| (0 0 0 0 0 0 1 1 1 1) | |||
| (0 0 0 0 0 0 2 1 1 1) | |||
| (0 0 0 0 0 0 0 2 1 1) | |||
| (0 0 0 0 0 0 0 0 0 0)))) | |||
| (defmacro pl/curve (dir) | |||
| "Generate a curve XPM function for DIR." | |||
| (pl/pattern-defun "curve" dir 4 | |||
| '((0 0 0 0)) | |||
| '((1 1 1 1) | |||
| (2 1 1 1) | |||
| (0 0 1 1) | |||
| (0 0 2 1) | |||
| (0 0 0 1) | |||
| (0 0 0 2)) | |||
| '((0 0 0 2) | |||
| (0 0 0 1) | |||
| (0 0 2 1) | |||
| (0 0 1 1) | |||
| (2 1 1 1) | |||
| (1 1 1 1)))) | |||
| (defmacro pl/rounded (dir) | |||
| "Generate a rounded XPM function for DIR." | |||
| (pl/pattern-defun "rounded" dir 6 | |||
| '((0 0 0 0 0 0)) | |||
| '((2 1 1 1 1 1) | |||
| (0 0 2 1 1 1) | |||
| (0 0 0 0 1 1) | |||
| (0 0 0 0 2 1) | |||
| (0 0 0 0 0 1) | |||
| (0 0 0 0 0 2)))) | |||
| (defmacro pl/roundstub (dir) | |||
| "Generate a roundstub XPM function for DIR." | |||
| (pl/pattern-defun "roundstub" dir 3 | |||
| '((0 0 0)) | |||
| '((1 1 1) | |||
| (0 0 1) | |||
| (0 0 2)) | |||
| '((0 0 2) | |||
| (0 0 1) | |||
| (1 1 1)))) | |||
| (defmacro pl/slant (dir) | |||
| "Generate a slant XPM function for DIR." | |||
| (let* ((row-modifier (if (eq dir 'left) 'identity 'reverse))) | |||
| (pl/wrap-defun "slant" dir 'width | |||
| '((width (1- (ceiling height 2)))) | |||
| `((cl-loop for i from 0 to height | |||
| concat (pl/pattern-to-string (,row-modifier (pl/row-pattern (/ i 2) width)))))))) | |||
| (defmacro pl/wave (dir) | |||
| "Generate a wave XPM function for DIR." | |||
| (pl/pattern-defun "wave" dir 11 | |||
| '((0 0 0 0 0 0 1 1 1 1 1)) | |||
| '((2 1 1 1 1 1 1 1 1 1 1) | |||
| (0 0 1 1 1 1 1 1 1 1 1) | |||
| (0 0 0 1 1 1 1 1 1 1 1) | |||
| (0 0 0 2 1 1 1 1 1 1 1) | |||
| (0 0 0 0 1 1 1 1 1 1 1) | |||
| (0 0 0 0 2 1 1 1 1 1 1) | |||
| (0 0 0 0 0 1 1 1 1 1 1) | |||
| (0 0 0 0 0 1 1 1 1 1 1) | |||
| (0 0 0 0 0 2 1 1 1 1 1)) | |||
| '((0 0 0 0 0 0 2 1 1 1 1) | |||
| (0 0 0 0 0 0 0 1 1 1 1) | |||
| (0 0 0 0 0 0 0 1 1 1 1) | |||
| (0 0 0 0 0 0 0 2 1 1 1) | |||
| (0 0 0 0 0 0 0 0 1 1 1) | |||
| (0 0 0 0 0 0 0 0 2 1 1) | |||
| (0 0 0 0 0 0 0 0 0 0 2)))) | |||
| (defmacro pl/zigzag (dir) | |||
| "Generate a zigzag pattern XPM function for DIR." | |||
| (pl/pattern-defun "zigzag" dir 3 | |||
| '((1 1 1) | |||
| (0 1 1) | |||
| (0 0 1) | |||
| (0 0 0) | |||
| (0 0 1) | |||
| (0 1 1)))) | |||
| (defmacro pl/nil (dir) | |||
| "Generate a XPM function that returns nil for DIR." | |||
| `(defun ,(intern (format "powerline-nil-%s" (symbol-name dir))) | |||
| (face1 face2 &optional height) | |||
| nil)) | |||
| (provide 'powerline-separators) | |||
| ;;; powerline-separators.el ends here | |||
| @ -1,248 +0,0 @@ | |||
| ;;; powerline-themes.el --- Themes for Powerline | |||
| ;; Copyright (C) 2012-2013 Donald Ephraim Curtis | |||
| ;; Copyright (C) 2013 Jason Milkins | |||
| ;; Copyright (C) 2012 Nicolas Rougier | |||
| ;; Author: Donald Ephraim Curtis <dcurtis@milkbox.net> | |||
| ;; URL: http://github.com/milkypostman/powerline/ | |||
| ;; Version: 2.0 | |||
| ;; Keywords: mode-line | |||
| ;;; Commentary: | |||
| ;; | |||
| ;; Themes for Powerline. | |||
| ;; Included themes: default, center, center-evil, vim, and nano. | |||
| ;; | |||
| ;;; Code: | |||
| ;;;###autoload | |||
| (defun powerline-default-theme () | |||
| "Setup the default mode-line." | |||
| (interactive) | |||
| (setq-default mode-line-format | |||
| '("%e" | |||
| (:eval | |||
| (let* ((active (powerline-selected-window-active)) | |||
| (mode-line (if active 'mode-line 'mode-line-inactive)) | |||
| (face1 (if active 'powerline-active1 'powerline-inactive1)) | |||
| (face2 (if active 'powerline-active2 'powerline-inactive2)) | |||
| (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 (powerline-raw "%*" nil 'l) | |||
| (powerline-buffer-size nil 'l) | |||
| (powerline-raw mode-line-mule-info nil 'l) | |||
| (powerline-buffer-id nil 'l) | |||
| (when (and (boundp 'which-func-mode) which-func-mode) | |||
| (powerline-raw which-func-format nil 'l)) | |||
| (powerline-raw " ") | |||
| (funcall separator-left mode-line face1) | |||
| (when (boundp 'erc-modified-channels-object) | |||
| (powerline-raw erc-modified-channels-object face1 'l)) | |||
| (powerline-major-mode face1 'l) | |||
| (powerline-process face1) | |||
| (powerline-minor-modes face1 'l) | |||
| (powerline-narrow face1 'l) | |||
| (powerline-raw " " face1) | |||
| (funcall separator-left face1 face2) | |||
| (powerline-vc face2 'r))) | |||
| (rhs (list (powerline-raw global-mode-string face2 'r) | |||
| (funcall separator-right face2 face1) | |||
| (powerline-raw "%4l" face1 'l) | |||
| (powerline-raw ":" face1 'l) | |||
| (powerline-raw "%3c" face1 'r) | |||
| (funcall separator-right face1 mode-line) | |||
| (powerline-raw " ") | |||
| (powerline-raw "%6p" nil 'r) | |||
| (powerline-hud face2 face1)))) | |||
| (concat (powerline-render lhs) | |||
| (powerline-fill face2 (powerline-width rhs)) | |||
| (powerline-render rhs))))))) | |||
| ;;;###autoload | |||
| (defun powerline-center-theme () | |||
| "Setup a mode-line with major and minor modes centered." | |||
| (interactive) | |||
| (setq-default mode-line-format | |||
| '("%e" | |||
| (:eval | |||
| (let* ((active (powerline-selected-window-active)) | |||
| (mode-line (if active 'mode-line 'mode-line-inactive)) | |||
| (face1 (if active 'powerline-active1 'powerline-inactive1)) | |||
| (face2 (if active 'powerline-active2 'powerline-inactive2)) | |||
| (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 (powerline-raw "%*" nil 'l) | |||
| (powerline-buffer-size nil 'l) | |||
| (powerline-buffer-id nil 'l) | |||
| (powerline-raw " ") | |||
| (funcall separator-left mode-line face1) | |||
| (powerline-narrow face1 'l) | |||
| (powerline-vc face1))) | |||
| (rhs (list (powerline-raw global-mode-string face1 'r) | |||
| (powerline-raw "%4l" face1 'r) | |||
| (powerline-raw ":" face1) | |||
| (powerline-raw "%3c" face1 'r) | |||
| (funcall separator-right face1 mode-line) | |||
| (powerline-raw " ") | |||
| (powerline-raw "%6p" nil 'r) | |||
| (powerline-hud face2 face1))) | |||
| (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-minor-modes face2 'l) | |||
| (powerline-raw " " face2) | |||
| (funcall separator-right face2 face1)))) | |||
| (concat (powerline-render lhs) | |||
| (powerline-fill-center face1 (/ (powerline-width center) 2.0)) | |||
| (powerline-render center) | |||
| (powerline-fill face1 (powerline-width rhs)) | |||
| (powerline-render rhs))))))) | |||
| (defun powerline-center-evil-theme () | |||
| "Setup a mode-line with major, evil, and minor modes centered." | |||
| (interactive) | |||
| (setq-default mode-line-format | |||
| '("%e" | |||
| (:eval | |||
| (let* ((active (powerline-selected-window-active)) | |||
| (mode-line (if active 'mode-line 'mode-line-inactive)) | |||
| (face1 (if active 'powerline-active1 'powerline-inactive1)) | |||
| (face2 (if active 'powerline-active2 'powerline-inactive2)) | |||
| (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 (powerline-raw "%*" nil 'l) | |||
| (powerline-buffer-size nil 'l) | |||
| (powerline-buffer-id nil 'l) | |||
| (powerline-raw " ") | |||
| (funcall separator-left mode-line face1) | |||
| (powerline-narrow face1 'l) | |||
| (powerline-vc face1))) | |||
| (rhs (list (powerline-raw global-mode-string face1 'r) | |||
| (powerline-raw "%4l" face1 'r) | |||
| (powerline-raw ":" face1) | |||
| (powerline-raw "%3c" face1 'r) | |||
| (funcall separator-right face1 mode-line) | |||
| (powerline-raw " ") | |||
| (powerline-raw "%6p" nil 'r) | |||
| (powerline-hud face2 face1))) | |||
| (center (append (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)) | |||
| (if (split-string (format-mode-line minor-mode-alist)) | |||
| (append (if evil-mode | |||
| (list (funcall separator-right face2 face1) | |||
| (powerline-raw evil-mode-line-tag face1 'l) | |||
| (powerline-raw " " face1) | |||
| (funcall separator-left face1 face2))) | |||
| (list (powerline-minor-modes face2 'l) | |||
| (powerline-raw " " face2) | |||
| (funcall separator-right face2 face1))) | |||
| (list (powerline-raw evil-mode-line-tag face2) | |||
| (funcall separator-right face2 face1)))))) | |||
| (concat (powerline-render lhs) | |||
| (powerline-fill-center face1 (/ (powerline-width center) 2.0)) | |||
| (powerline-render center) | |||
| (powerline-fill face1 (powerline-width rhs)) | |||
| (powerline-render rhs))))))) | |||
| ;;;###autoload | |||
| (defun powerline-vim-theme () | |||
| "Setup a Vim-like mode-line." | |||
| (interactive) | |||
| (setq-default mode-line-format | |||
| '("%e" | |||
| (:eval | |||
| (let* ((active (powerline-selected-window-active)) | |||
| (mode-line (if active 'mode-line 'mode-line-inactive)) | |||
| (face1 (if active 'powerline-active1 'powerline-inactive1)) | |||
| (face2 (if active 'powerline-active2 'powerline-inactive2)) | |||
| (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 (powerline-buffer-id `(mode-line-buffer-id ,mode-line) 'l) | |||
| (powerline-raw "[" mode-line 'l) | |||
| (powerline-major-mode mode-line) | |||
| (powerline-process mode-line) | |||
| (powerline-raw "]" mode-line) | |||
| (when (buffer-modified-p) | |||
| (powerline-raw "[+]" mode-line)) | |||
| (when buffer-read-only | |||
| (powerline-raw "[RO]" mode-line)) | |||
| (powerline-raw "[%z]" mode-line) | |||
| ;; (powerline-raw (concat "[" (mode-line-eol-desc) "]") mode-line) | |||
| (when (and (boundp 'which-func-mode) which-func-mode) | |||
| (powerline-raw which-func-format nil 'l)) | |||
| (when (boundp 'erc-modified-channels-object) | |||
| (powerline-raw erc-modified-channels-object face1 'l)) | |||
| (powerline-raw "[" mode-line 'l) | |||
| (powerline-minor-modes mode-line) | |||
| (powerline-raw "%n" mode-line) | |||
| (powerline-raw "]" mode-line) | |||
| (when (and vc-mode buffer-file-name) | |||
| (let ((backend (vc-backend buffer-file-name))) | |||
| (when backend | |||
| (concat (powerline-raw "[" mode-line 'l) | |||
| (powerline-raw (format "%s / %s" backend (vc-working-revision buffer-file-name backend))) | |||
| (powerline-raw "]" mode-line))))))) | |||
| (rhs (list (powerline-raw '(10 "%i")) | |||
| (powerline-raw global-mode-string mode-line 'r) | |||
| (powerline-raw "%l," mode-line 'l) | |||
| (powerline-raw (format-mode-line '(10 "%c"))) | |||
| (powerline-raw (replace-regexp-in-string "%" "%%" (format-mode-line '(-3 "%p"))) mode-line 'r)))) | |||
| (concat (powerline-render lhs) | |||
| (powerline-fill mode-line (powerline-width rhs)) | |||
| (powerline-render rhs))))))) | |||
| ;;;###autoload | |||
| (defun powerline-nano-theme () | |||
| "Setup a nano-like mode-line." | |||
| (interactive) | |||
| (setq-default mode-line-format | |||
| '("%e" | |||
| (:eval | |||
| (let* ((active (powerline-selected-window-active)) | |||
| (lhs (list (powerline-raw (concat "GNU Emacs " | |||
| (number-to-string | |||
| emacs-major-version) | |||
| "." | |||
| (number-to-string | |||
| emacs-minor-version)) | |||
| nil 'l))) | |||
| (rhs (list (if (buffer-modified-p) (powerline-raw "Modified" nil 'r)))) | |||
| (center (list (powerline-raw "%b" nil)))) | |||
| (concat (powerline-render lhs) | |||
| (powerline-fill-center nil (/ (powerline-width center) 2.0)) | |||
| (powerline-render center) | |||
| (powerline-fill nil (powerline-width rhs)) | |||
| (powerline-render rhs))))))) | |||
| (provide 'powerline-themes) | |||
| ;;; powerline-themes.el ends here | |||
| @ -1,497 +0,0 @@ | |||
| ;;; powerline.el --- Rewrite of Powerline | |||
| ;; Copyright (C) 2012-2013 Donald Ephraim Curtis | |||
| ;; Copyright (C) 2013 Jason Milkins | |||
| ;; Copyright (C) 2012 Nicolas Rougier | |||
| ;; Author: Donald Ephraim Curtis <dcurtis@milkbox.net> | |||
| ;; URL: http://github.com/milkypostman/powerline/ | |||
| ;; Version: 2.3 | |||
| ;; Keywords: mode-line | |||
| ;; Package-Requires: ((cl-lib "0.2")) | |||
| ;;; Commentary: | |||
| ;; | |||
| ;; Powerline is a library for customizing the mode-line that is based on the Vim | |||
| ;; Powerline. A collection of predefined themes comes with the package. | |||
| ;; | |||
| ;;; Code: | |||
| (require 'powerline-themes) | |||
| (require 'powerline-separators) | |||
| (require 'cl-lib) | |||
| (defface powerline-active1 '((t (:background "grey22" :inherit mode-line))) | |||
| "Powerline face 1." | |||
| :group 'powerline) | |||
| (defface powerline-active2 '((t (:background "grey40" :inherit mode-line))) | |||
| "Powerline face 2." | |||
| :group 'powerline) | |||
| (defface powerline-inactive1 | |||
| '((t (:background "grey11" :inherit mode-line-inactive))) | |||
| "Powerline face 1." | |||
| :group 'powerline) | |||
| (defface powerline-inactive2 | |||
| '((t (:background "grey20" :inherit mode-line-inactive))) | |||
| "Powerline face 2." | |||
| :group 'powerline) | |||
| (defcustom powerline-default-separator 'arrow | |||
| "The separator to use for the default theme. | |||
| Valid Values: arrow, slant, chamfer, wave, brace, roundstub, | |||
| zigzag, butt, rounded, contour, curve" | |||
| :group 'powerline | |||
| :type '(choice (const alternate) | |||
| (const arrow) | |||
| (const arrow-fade) | |||
| (const bar) | |||
| (const box) | |||
| (const brace) | |||
| (const butt) | |||
| (const chamfer) | |||
| (const contour) | |||
| (const curve) | |||
| (const rounded) | |||
| (const roundstub) | |||
| (const slant) | |||
| (const wave) | |||
| (const zigzag) | |||
| (const nil))) | |||
| (defcustom powerline-default-separator-dir '(left . right) | |||
| "The separator direction to use for the default theme. | |||
| CONS of the form (DIR . DIR) denoting the lean of the | |||
| separators for the left and right side of the powerline. | |||
| DIR must be one of: left, right" | |||
| :group 'powerline | |||
| :type '(cons (choice :tag "Left Hand Side" (const left) (const right)) | |||
| (choice :tag "Right Hand Side" (const left) (const right)))) | |||
| (defcustom powerline-height nil | |||
| "Override the mode-line height." | |||
| :group 'powerline | |||
| :type '(choice integer (const nil))) | |||
| (defcustom powerline-text-scale-factor nil | |||
| "Scale of mode-line font size to default text size. | |||
| Smaller mode-line fonts will be a float value less that 1. | |||
| Larger mode-line fonts require a float value greater than 1. | |||
| This is needed to make sure that text is properly aligned." | |||
| :group 'powerline | |||
| :type '(choice float integer (const nil))) | |||
| (defcustom powerline-buffer-size-suffix t | |||
| "Display the buffer size suffix." | |||
| :group 'powerline | |||
| :type 'boolean) | |||
| (defun pl/create-or-get-cache () | |||
| "Return a frame-local hash table that acts as a memoization cache for powerline. Create one if the frame doesn't have one yet." | |||
| (or (frame-parameter nil 'powerline-cache) | |||
| (pl/reset-cache))) | |||
| (defun pl/reset-cache () | |||
| "Reset and return the frame-local hash table used for a memoization cache." | |||
| (let ((table (make-hash-table :test 'equal))) | |||
| ;; Store it as a frame-local variable | |||
| (modify-frame-parameters nil `((powerline-cache . ,table))) | |||
| table)) | |||
| ;; from memoize.el @ http://nullprogram.com/blog/2010/07/26/ | |||
| (defun pl/memoize (func) | |||
| "Memoize FUNC. | |||
| If argument is a symbol then install the memoized function over | |||
| the original function. Use frame-local memoization." | |||
| (cl-typecase func | |||
| (symbol (fset func (pl/memoize-wrap-frame-local (symbol-function func))) func) | |||
| (function (pl/memoize-wrap-frame-local func)))) | |||
| (defun pl/memoize-wrap-frame-local (func) | |||
| "Return the memoized version of FUNC. | |||
| The memoization cache is frame-local." | |||
| (let ((funcid (cl-gensym))) | |||
| `(lambda (&rest args) | |||
| ,(concat (documentation func) (format "\n(memoized function %s)" funcid)) | |||
| (let* ((cache (pl/create-or-get-cache)) | |||
| (key (cons ',funcid args)) | |||
| (val (gethash key cache))) | |||
| (if val | |||
| val | |||
| (puthash key (apply ,func args) cache)))))) | |||
| (defun pl/separator-height () | |||
| "Get default height for rendering separators." | |||
| (or powerline-height (frame-char-height))) | |||
| (defun powerline-reset () | |||
| "Reset memoized functions." | |||
| (interactive) | |||
| (pl/memoize (pl/alternate left)) | |||
| (pl/memoize (pl/alternate right)) | |||
| (pl/memoize (pl/arrow left)) | |||
| (pl/memoize (pl/arrow right)) | |||
| (pl/memoize (pl/arrow-fade left)) | |||
| (pl/memoize (pl/arrow-fade right)) | |||
| (pl/memoize (pl/bar left)) | |||
| (pl/memoize (pl/bar right)) | |||
| (pl/memoize (pl/box left)) | |||
| (pl/memoize (pl/box right)) | |||
| (pl/memoize (pl/brace left)) | |||
| (pl/memoize (pl/brace right)) | |||
| (pl/memoize (pl/butt left)) | |||
| (pl/memoize (pl/butt right)) | |||
| (pl/memoize (pl/chamfer left)) | |||
| (pl/memoize (pl/chamfer right)) | |||
| (pl/memoize (pl/contour left)) | |||
| (pl/memoize (pl/contour right)) | |||
| (pl/memoize (pl/curve left)) | |||
| (pl/memoize (pl/curve right)) | |||
| (pl/memoize (pl/rounded left)) | |||
| (pl/memoize (pl/rounded right)) | |||
| (pl/memoize (pl/roundstub left)) | |||
| (pl/memoize (pl/roundstub right)) | |||
| (pl/memoize (pl/slant left)) | |||
| (pl/memoize (pl/slant right)) | |||
| (pl/memoize (pl/wave left)) | |||
| (pl/memoize (pl/wave right)) | |||
| (pl/memoize (pl/zigzag left)) | |||
| (pl/memoize (pl/zigzag right)) | |||
| (pl/memoize (pl/nil left)) | |||
| (pl/memoize (pl/nil right)) | |||
| (pl/reset-cache)) | |||
| (powerline-reset) | |||
| (defun pl/make-xpm (name color1 color2 data) | |||
| "Return an XPM image with NAME using COLOR1 for enabled and COLOR2 for disabled bits specified in DATA." | |||
| (when window-system | |||
| (create-image | |||
| (concat | |||
| (format "/* XPM */ | |||
| static char * %s[] = { | |||
| \"%i %i 2 1\", | |||
| \". c %s\", | |||
| \" c %s\", | |||
| " | |||
| (downcase (replace-regexp-in-string " " "_" name)) | |||
| (length (car data)) | |||
| (length data) | |||
| (or (pl/hex-color color1) "None") | |||
| (or (pl/hex-color color2) "None")) | |||
| (let ((len (length data)) | |||
| (idx 0)) | |||
| (apply 'concat | |||
| (mapcar #'(lambda (dl) | |||
| (setq idx (+ idx 1)) | |||
| (concat | |||
| "\"" | |||
| (concat | |||
| (mapcar #'(lambda (d) | |||
| (if (eq d 0) | |||
| (string-to-char " ") | |||
| (string-to-char "."))) | |||
| dl)) | |||
| (if (eq idx len) | |||
| "\"};" | |||
| "\",\n"))) | |||
| data)))) | |||
| 'xpm t :ascent 'center))) | |||
| (defun pl/percent-xpm | |||
| (height pmax pmin winend winstart width color1 color2) | |||
| "Generate percentage xpm of HEIGHT for PMAX to PMIN given WINEND and WINSTART with WIDTH and COLOR1 and COLOR2." | |||
| (let* ((height- (1- height)) | |||
| (fillstart (round (* height- (/ (float winstart) (float pmax))))) | |||
| (fillend (round (* height- (/ (float winend) (float pmax))))) | |||
| (data nil) | |||
| (i 0)) | |||
| (while (< i height) | |||
| (setq data (cons | |||
| (if (and (<= fillstart i) | |||
| (<= i fillend)) | |||
| (append (make-list width 1)) | |||
| (append (make-list width 0))) | |||
| data)) | |||
| (setq i (+ i 1))) | |||
| (pl/make-xpm "percent" color1 color2 (reverse data)))) | |||
| (pl/memoize 'pl/percent-xpm) | |||
| ;;;###autoload | |||
| (defun powerline-hud (face1 face2 &optional width) | |||
| "Return an XPM of relative buffer location using FACE1 and FACE2 of optional WIDTH." | |||
| (unless width (setq width 2)) | |||
| (let ((color1 (if face1 (face-background face1) "None")) | |||
| (color2 (if face2 (face-background face2) "None")) | |||
| (height (or powerline-height (frame-char-height))) | |||
| pmax | |||
| pmin | |||
| (ws (window-start)) | |||
| (we (window-end))) | |||
| (save-restriction | |||
| (widen) | |||
| (setq pmax (point-max)) | |||
| (setq pmin (point-min))) | |||
| (pl/percent-xpm height pmax pmin we ws | |||
| (* (frame-char-width) width) color1 color2))) | |||
| ;;;###autoload | |||
| (defun powerline-mouse (click-group click-type string) | |||
| "Return mouse handler for CLICK-GROUP given CLICK-TYPE and STRING." | |||
| (cond ((eq click-group 'minor) | |||
| (cond ((eq click-type 'menu) | |||
| `(lambda (event) | |||
| (interactive "@e") | |||
| (minor-mode-menu-from-indicator ,string))) | |||
| ((eq click-type 'help) | |||
| `(lambda (event) | |||
| (interactive "@e") | |||
| (describe-minor-mode-from-indicator ,string))) | |||
| (t | |||
| `(lambda (event) | |||
| (interactive "@e") | |||
| nil)))) | |||
| (t | |||
| `(lambda (event) | |||
| (interactive "@e") | |||
| nil)))) | |||
| ;;;###autoload | |||
| (defun powerline-concat (&rest strings) | |||
| "Concatonate STRINGS and pad sides by spaces." | |||
| (concat | |||
| " " | |||
| (mapconcat 'identity (delq nil strings) " ") | |||
| " ")) | |||
| ;;;###autoload | |||
| (defmacro defpowerline (name body) | |||
| "Create function NAME by wrapping BODY with powerline padding an propetization." | |||
| `(defun ,name | |||
| (&optional face pad) | |||
| (powerline-raw ,body face pad))) | |||
| (defun pl/property-substrings (str prop) | |||
| "Return a list of substrings of STR when PROP change." | |||
| (let ((beg 0) (end 0) | |||
| (len (length str)) | |||
| (out)) | |||
| (while (< end (length str)) | |||
| (setq end (or (next-single-property-change beg prop str) len)) | |||
| (setq out (append out (list (substring str beg (setq beg end)))))) | |||
| out)) | |||
| (defun pl/assure-list (item) | |||
| "Assure that ITEM is a list." | |||
| (if (listp item) | |||
| item | |||
| (list item))) | |||
| (defun pl/add-text-property (str prop val) | |||
| (mapconcat | |||
| (lambda (mm) | |||
| (let ((cur (pl/assure-list (get-text-property 0 'face mm)))) | |||
| (propertize mm 'face (append cur (list val))))) | |||
| (pl/property-substrings str prop) | |||
| "")) | |||
| ;;;###autoload | |||
| (defun powerline-raw (str &optional face pad) | |||
| "Render STR as mode-line data using FACE and optionally PAD import on left (l) or right (r)." | |||
| (when str | |||
| (let* ((rendered-str (format-mode-line str)) | |||
| (padded-str (concat | |||
| (when (and (> (length rendered-str) 0) (eq pad 'l)) " ") | |||
| (if (listp str) rendered-str str) | |||
| (when (and (> (length rendered-str) 0) (eq pad 'r)) " ")))) | |||
| (if face | |||
| (pl/add-text-property padded-str 'face face) | |||
| padded-str)))) | |||
| ;;;###autoload | |||
| (defun powerline-fill (face reserve) | |||
| "Return empty space using FACE and leaving RESERVE space on the right." | |||
| (unless reserve | |||
| (setq reserve 20)) | |||
| (when powerline-text-scale-factor | |||
| (setq reserve (* powerline-text-scale-factor reserve))) | |||
| (when (and window-system (eq 'right (get-scroll-bar-mode))) | |||
| (setq reserve (- reserve 3))) | |||
| (propertize " " | |||
| 'display `((space :align-to (- (+ right right-fringe right-margin) ,reserve))) | |||
| 'face face)) | |||
| (defun powerline-fill-center (face reserve) | |||
| "Return empty space using FACE to the center of remaining space leaving RESERVE space on the right." | |||
| (unless reserve | |||
| (setq reserve 20)) | |||
| (when powerline-text-scale-factor | |||
| (setq reserve (* powerline-text-scale-factor reserve))) | |||
| (propertize " " | |||
| 'display `((space :align-to (- (+ center (.5 . right-margin)) ,reserve | |||
| (.5 . left-margin)))) | |||
| 'face face)) | |||
| ;;;###autoload | |||
| (defpowerline powerline-major-mode | |||
| (propertize (format-mode-line mode-name) | |||
| 'mouse-face 'mode-line-highlight | |||
| 'help-echo "Major mode\n\ mouse-1: Display major mode menu\n\ mouse-2: Show help for major mode\n\ mouse-3: Toggle minor modes" | |||
| 'local-map (let ((map (make-sparse-keymap))) | |||
| (define-key map [mode-line down-mouse-1] | |||
| `(menu-item ,(purecopy "Menu Bar") ignore | |||
| :filter (lambda (_) (mouse-menu-major-mode-map)))) | |||
| (define-key map [mode-line mouse-2] 'describe-mode) | |||
| (define-key map [mode-line down-mouse-3] mode-line-mode-menu) | |||
| map))) | |||
| ;;;###autoload | |||
| (defpowerline powerline-minor-modes | |||
| (mapconcat (lambda (mm) | |||
| (propertize mm | |||
| 'mouse-face 'mode-line-highlight | |||
| 'help-echo "Minor mode\n mouse-1: Display minor mode menu\n mouse-2: Show help for minor mode\n mouse-3: Toggle minor modes" | |||
| 'local-map (let ((map (make-sparse-keymap))) | |||
| (define-key map | |||
| [mode-line down-mouse-1] | |||
| (powerline-mouse 'minor 'menu mm)) | |||
| (define-key map | |||
| [mode-line mouse-2] | |||
| (powerline-mouse 'minor 'help mm)) | |||
| (define-key map | |||
| [mode-line down-mouse-3] | |||
| (powerline-mouse 'minor 'menu mm)) | |||
| (define-key map | |||
| [header-line down-mouse-3] | |||
| (powerline-mouse 'minor 'menu mm)) | |||
| map))) | |||
| (split-string (format-mode-line minor-mode-alist)) | |||
| (propertize " " 'face face))) | |||
| ;;;###autoload | |||
| (defpowerline powerline-narrow | |||
| (let (real-point-min real-point-max) | |||
| (save-excursion | |||
| (save-restriction | |||
| (widen) | |||
| (setq real-point-min (point-min) real-point-max (point-max)))) | |||
| (when (or (/= real-point-min (point-min)) | |||
| (/= real-point-max (point-max))) | |||
| (propertize "Narrow" | |||
| 'mouse-face 'mode-line-highlight | |||
| 'help-echo "mouse-1: Remove narrowing from the current buffer" | |||
| 'local-map (make-mode-line-mouse-map | |||
| 'mouse-1 'mode-line-widen))))) | |||
| ;;;###autoload | |||
| (defpowerline powerline-vc | |||
| (when (and (buffer-file-name (current-buffer)) | |||
| vc-mode) | |||
| (format-mode-line '(vc-mode vc-mode)))) | |||
| ;;;###autoload | |||
| (defpowerline powerline-buffer-size | |||
| (propertize | |||
| (if powerline-buffer-size-suffix | |||
| "%I" | |||
| "%i") | |||
| 'mouse-face 'mode-line-highlight | |||
| 'local-map (make-mode-line-mouse-map | |||
| 'mouse-1 (lambda () (interactive) | |||
| (setq powerline-buffer-size-suffix | |||
| (not powerline-buffer-size-suffix)) | |||
| (force-mode-line-update))))) | |||
| ;;;###autoload | |||
| (defpowerline powerline-buffer-id | |||
| (format-mode-line mode-line-buffer-identification)) | |||
| ;;;###autoload | |||
| (defpowerline powerline-process | |||
| (cond | |||
| ((symbolp mode-line-process) (symbol-value mode-line-process)) | |||
| ((listp mode-line-process) (format-mode-line mode-line-process)) | |||
| (t mode-line-process))) | |||
| (defvar pl/default-mode-line mode-line-format) | |||
| (defvar pl/minibuffer-selected-window-list '()) | |||
| (defun pl/minibuffer-selected-window () | |||
| "Return the selected window when entereing the minibuffer." | |||
| (when pl/minibuffer-selected-window-list | |||
| (car pl/minibuffer-selected-window-list))) | |||
| (defun pl/minibuffer-setup () | |||
| "Save the `minibuffer-selected-window' to `pl/minibuffer-selected-window'." | |||
| (push (minibuffer-selected-window) pl/minibuffer-selected-window-list)) | |||
| (add-hook 'minibuffer-setup-hook 'pl/minibuffer-setup) | |||
| (defun pl/minibuffer-exit () | |||
| "Set `pl/minibuffer-selected-window' to nil." | |||
| (pop pl/minibuffer-selected-window-list)) | |||
| (add-hook 'minibuffer-exit-hook 'pl/minibuffer-exit) | |||
| (defun powerline-set-selected-window () | |||
| "sets the variable `powerline-selected-window` appropriately" | |||
| (when (not (minibuffer-window-active-p (frame-selected-window))) | |||
| (setq powerline-selected-window (frame-selected-window)))) | |||
| (add-hook 'window-configuration-change-hook 'powerline-set-selected-window) | |||
| (add-hook 'focus-in-hook 'powerline-set-selected-window) | |||
| (add-hook 'focus-out-hook 'powerline-set-selected-window) | |||
| (defadvice select-window (after powerline-select-window activate) | |||
| "makes powerline aware of window changes" | |||
| (powerline-set-selected-window)) | |||
| (defun powerline-selected-window-active () | |||
| "Return whether the current window is active." | |||
| (eq powerline-selected-window (selected-window))) | |||
| (defun powerline-revert () | |||
| "Revert to the default Emacs mode-line." | |||
| (interactive) | |||
| (setq-default mode-line-format pl/default-mode-line)) | |||
| (defun pl/render (item) | |||
| "Render a powerline ITEM." | |||
| (cond | |||
| ((and (listp item) (eq 'image (car item))) | |||
| (propertize " " 'display item | |||
| 'face (plist-get (cdr item) :face))) | |||
| (item item))) | |||
| (defun powerline-render (values) | |||
| "Render a list of powerline VALUES." | |||
| (mapconcat 'pl/render values "")) | |||
| (defun powerline-width (values) | |||
| "Get the length of VALUES." | |||
| (if values | |||
| (let ((val (car values))) | |||
| (+ (cond | |||
| ((stringp val) (length (format-mode-line val))) | |||
| ((and (listp val) (eq 'image (car val))) | |||
| (car (image-size val))) | |||
| (t 0)) | |||
| (powerline-width (cdr values)))) | |||
| 0)) | |||
| (provide 'powerline) | |||
| ;;; powerline.el ends here | |||