summaryrefslogtreecommitdiff
path: root/elpa/powerline-20200105.2053
diff options
context:
space:
mode:
authorBlendoit <blendoit@gmail.com>2020-08-01 15:18:40 -0700
committerBlendoit <blendoit@gmail.com>2020-08-01 15:18:40 -0700
commit374ae3de24187512adddf01a56e5eb52c79db65f (patch)
tree847adf6824b56394f5a040ba45863e2dbdceac70 /elpa/powerline-20200105.2053
parent54fbf6576cf2dd94ef5af332a6075723a9dfa8b3 (diff)
Include contents of elpa/ sources + theme update.
Diffstat (limited to 'elpa/powerline-20200105.2053')
-rw-r--r--elpa/powerline-20200105.2053/powerline-autoloads.el101
-rw-r--r--elpa/powerline-20200105.2053/powerline-pkg.el12
-rw-r--r--elpa/powerline-20200105.2053/powerline-separators.el635
-rw-r--r--elpa/powerline-20200105.2053/powerline-themes.el294
-rw-r--r--elpa/powerline-20200105.2053/powerline.el617
5 files changed, 1659 insertions, 0 deletions
diff --git a/elpa/powerline-20200105.2053/powerline-autoloads.el b/elpa/powerline-20200105.2053/powerline-autoloads.el
new file mode 100644
index 0000000..8053204
--- /dev/null
+++ b/elpa/powerline-20200105.2053/powerline-autoloads.el
@@ -0,0 +1,101 @@
+;;; powerline-autoloads.el --- automatically extracted autoloads
+;;
+;;; Code:
+
+(add-to-list 'load-path (directory-file-name
+ (or (file-name-directory #$) (car load-path))))
+
+
+;;;### (autoloads nil "powerline" "powerline.el" (0 0 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)
+ (autoload 'powerline-major-mode "powerline")
+ (autoload 'powerline-minor-modes "powerline")
+ (autoload 'powerline-narrow "powerline")
+ (autoload 'powerline-vc "powerline")
+ (autoload 'powerline-encoding "powerline")
+ (autoload 'powerline-buffer-size "powerline")
+ (autoload 'powerline-buffer-id "powerline")
+ (autoload 'powerline-process "powerline")
+ (autoload 'powerline-selected-window-active "powerline")
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "powerline" '("pl/" "powerline-")))
+
+;;;***
+
+;;;### (autoloads nil "powerline-separators" "powerline-separators.el"
+;;;;;; (0 0 0 0))
+;;; Generated autoloads from powerline-separators.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "powerline-separators" '("powerline-image-apple-rgb" "pl/")))
+
+;;;***
+
+;;;### (autoloads nil "powerline-themes" "powerline-themes.el" (0
+;;;;;; 0 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)
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "powerline-themes" '("powerline-")))
+
+;;;***
+
+;;;### (autoloads nil nil ("powerline-pkg.el") (0 0 0 0))
+
+;;;***
+
+;; Local Variables:
+;; version-control: never
+;; no-byte-compile: t
+;; no-update-autoloads: t
+;; coding: utf-8
+;; End:
+;;; powerline-autoloads.el ends here
diff --git a/elpa/powerline-20200105.2053/powerline-pkg.el b/elpa/powerline-20200105.2053/powerline-pkg.el
new file mode 100644
index 0000000..c685d29
--- /dev/null
+++ b/elpa/powerline-20200105.2053/powerline-pkg.el
@@ -0,0 +1,12 @@
+(define-package "powerline" "20200105.2053" "Rewrite of Powerline"
+ '((cl-lib "0.2"))
+ :commit "edbb464eef680efc9d408730288c716cd4cac404" :keywords
+ '("mode-line")
+ :authors
+ '(("Donald Ephraim Curtis" . "dcurtis@milkbox.net"))
+ :maintainer
+ '("Donald Ephraim Curtis" . "dcurtis@milkbox.net")
+ :url "http://github.com/milkypostman/powerline/")
+;; Local Variables:
+;; no-byte-compile: t
+;; End:
diff --git a/elpa/powerline-20200105.2053/powerline-separators.el b/elpa/powerline-20200105.2053/powerline-separators.el
new file mode 100644
index 0000000..ee560d4
--- /dev/null
+++ b/elpa/powerline-20200105.2053/powerline-separators.el
@@ -0,0 +1,635 @@
+;;; powerline-separators.el --- Separators for Powerline
+
+;; Copyright (C) 2012-2013 Donald Ephraim Curtis
+;; Copyright (C) 2013 Jason Milkins
+;; Copyright (C) 2012 Nicolas Rougier
+
+;; This file is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+
+;; This file is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+;;; 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)
+
+(defvar powerline-image-apple-rgb
+ (and (eq (window-system) 'ns)
+ ns-use-srgb-colorspace
+ (< 11
+ (string-to-number
+ (and (string-match "darwin\\([0-9]+\\)" system-configuration)
+ (match-string-no-properties 1 system-configuration)))))
+ "Boolean variable to determine whether to use Apple RGB colorspace to render images.
+
+t on macOS 10.7+ and `ns-use-srgb-colorspace' is t, nil otherwise.
+
+This variable is automatically set, there's no need to modify it.")
+
+(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/color-xyz-to-apple-rgb (X Y Z)
+ "Convert CIE X Y Z colors to Apple RGB color space."
+ (let ((r (+ (* 3.2404542 X) (* -1.5371385 Y) (* -0.4985314 Z)))
+ (g (+ (* -0.9692660 X) (* 1.8760108 Y) (* 0.0415560 Z)))
+ (b (+ (* 0.0556434 X) (* -0.2040259 Y) (* 1.0572252 Z))))
+ (list (expt r (/ 1.8)) (expt g (/ 1.8)) (expt b (/ 1.8)))))
+
+(defun pl/color-srgb-to-apple-rgb (red green blue)
+ "Convert RED GREEN BLUE colors from sRGB color space to Apple RGB.
+RED, GREEN and BLUE should be between 0.0 and 1.0, inclusive."
+ (apply 'pl/color-xyz-to-apple-rgb (color-srgb-to-xyz red green blue)))
+
+(defun pl/hex-color (color)
+ "Get the hexadecimal value of COLOR."
+ (when color
+ (let ((srgb-color (color-name-to-rgb color)))
+ (if powerline-image-apple-rgb
+ (apply 'color-rgb-to-hex (apply 'pl/color-srgb-to-apple-rgb srgb-color))
+ (apply 'color-rgb-to-hex srgb-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-bindings-body (patterns height-exp pattern-height-sym
+ second-pattern-height-sym)
+ "Create let-var bindings and a function body from PATTERNS.
+The `car' and `cdr' parts of the result can be passed to the
+function `pl/wrap-defun' as its `let-vars' and `body' arguments,
+respectively. HEIGHT-EXP is an expression calculating the image
+height and it should contain a free variable `height'.
+PATTERN-HEIGHT-SYM and SECOND-PATTERN-HEIGHT-SYM are symbols used
+for let-var binding variables."
+ (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))))
+ (when pattern
+ (cons `((,pattern-height-sym (max (- ,height-exp ,reserve) 0))
+ (,second-pattern-height-sym (/ ,pattern-height-sym 2))
+ (,pattern-height-sym ,(if second-pattern `(ceiling ,pattern-height-sym 2) `,pattern-height-sym)))
+ (list (when header `(mapconcat 'identity ',header ""))
+ `(mapconcat 'identity
+ (cl-subseq ',pattern 0 ,pattern-height-sym) "")
+ (when center `(mapconcat 'identity ',center ""))
+ (when second-pattern
+ `(mapconcat 'identity
+ (cl-subseq ',second-pattern
+ 0 ,second-pattern-height-sym) ""))
+ (when footer `(mapconcat 'identity ',footer "")))))))
+
+(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-2X HEADER-2X FOOTER-2X SECOND-PATTERN-2X CENTER-2X).
+PATTERN is required, all other components are optional.
+The first 5 components are for the standard resolution image.
+The remaining ones are for the high resolution image where both
+width and height are doubled. If PATTERN-2X is nil or not given,
+then the remaining components are ignored and the standard
+resolution image with magnification and interpolation will be
+used in high resolution environments
+
+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 ((bindings-body (pl/pattern-bindings-body patterns
+ 'height
+ 'pattern-height
+ 'second-pattern-height))
+ (bindings-body-2x (pl/pattern-bindings-body (nthcdr 5 patterns)
+ '(* height 2)
+ 'pattern-height-2x
+ 'second-pattern-height-2x)))
+ (pl/wrap-defun name dir width
+ (append (car bindings-body) (car bindings-body-2x))
+ (cdr bindings-body) (cdr bindings-body-2x))))
+
+(defun pl/background-color (face)
+ (face-attribute face
+ (if (face-attribute face :inverse-video nil 'default)
+ :foreground
+ :background)
+ nil
+ 'default))
+
+(defun pl/wrap-defun (name dir width let-vars body &optional body-2x)
+ "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 (pl/background-color ,src-face))))
+ (color2 (when ,dst-face
+ (pl/hex-color (pl/background-color ,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)
+ (apply '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)
+ ,(and body-2x
+ `(and (featurep 'mac)
+ (list :data-2x
+ ,(append `(concat (format "/* XPM */ static char * %s_%s_2x[] = { \"%s %s 3 1\", \"0 c %s\", \"1 c %s\", \"2 c %s\","
+ ,(replace-regexp-in-string "-" "_" name)
+ (symbol-name ',dir)
+ (* ,width 2)
+ (* height 2)
+ color1
+ color2
+ colori))
+ body-2x
+ '("};")))))))))))
+
+(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))
+ nil nil nil nil
+ ;; 2x
+ '((2 2 2 2 1 1 1 1)
+ (2 2 2 2 1 1 1 1)
+ (0 0 0 0 2 2 2 2)
+ (0 0 0 0 2 2 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)))))
+ `((when (cl-evenp height)
+ (pl/pattern-to-string (make-list (* middle-width 2) 1)))
+ (cl-loop for i from 0 to (* middle-width 2)
+ concat (pl/pattern-to-string (,row-modifier (pl/row-pattern i (* middle-width 2)))))
+ (cl-loop for i from (* middle-width 2) downto 0
+ concat (pl/pattern-to-string (,row-modifier (pl/row-pattern i (* middle-width 2)))))
+ (when (cl-evenp height)
+ (pl/pattern-to-string (make-list (* middle-width 2) 1)))))))
+
+(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)))))
+ `((when (cl-evenp height)
+ (pl/pattern-to-string (,row-modifier (pl/row-pattern 0 (* middle-width 2) (* 2 2)))))
+ (cl-loop for i from 0 to (* (- middle-width 2) 2)
+ concat (pl/pattern-to-string (,row-modifier (pl/row-pattern i (* middle-width 2) (* 2 2)))))
+ (cl-loop for i from (* (- middle-width 2) 2) downto 0
+ concat (pl/pattern-to-string (,row-modifier (pl/row-pattern i (* middle-width 2) (* 2 2)))))
+ (when (cl-evenp height)
+ (pl/pattern-to-string (,row-modifier (pl/row-pattern 0 (* middle-width 2) (* 2 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))
+ nil nil nil nil
+ ;; 2x
+ '((0 0 0 0)
+ (0 0 0 0)
+ (0 0 0 0)
+ (0 0 0 0)
+ (1 1 1 1)
+ (1 1 1 1)
+ (1 1 1 1)
+ (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))
+ ;; 2x
+ '((0 0 1 1 1 1 1 1))
+ '((1 1 1 1 1 1 1 1)
+ (1 1 1 1 1 1 1 1)
+ (2 1 1 1 1 1 1 1)
+ (0 2 1 1 1 1 1 1))
+ '((0 2 1 1 1 1 1 1)
+ (2 1 1 1 1 1 1 1)
+ (1 1 1 1 1 1 1 1)
+ (1 1 1 1 1 1 1 1))
+ '((0 0 1 1 1 1 1 1))
+ '((0 0 2 1 1 1 1 1)
+ (0 0 0 1 1 1 1 1)
+ (0 0 0 2 1 1 1 1)
+ (0 0 0 0 1 1 1 1)
+ (0 0 0 0 2 1 1 1)
+ (0 0 0 0 0 2 1 1)
+ (0 0 0 0 0 0 0 2)
+ (0 0 0 0 0 0 0 2)
+ (0 0 0 0 0 2 1 1)
+ (0 0 0 0 2 1 1 1)
+ (0 0 0 0 1 1 1 1)
+ (0 0 0 2 1 1 1 1)
+ (0 0 0 1 1 1 1 1)
+ (0 0 2 1 1 1 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))
+ nil nil
+ ;; 2x
+ '((0 0 0 0 0 0))
+ '((1 1 1 1 1 1)
+ (0 1 1 1 1 1)
+ (0 0 1 1 1 1)
+ (0 0 0 1 1 1)
+ (0 0 0 0 1 1)
+ (0 0 0 0 0 1))
+ '((0 0 0 0 0 1)
+ (0 0 0 0 1 1)
+ (0 0 0 1 1 1)
+ (0 0 1 1 1 1)
+ (0 1 1 1 1 1)
+ (1 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))
+ nil nil nil
+ ;; 2x
+ '((0 0 0 0 0 0))
+ '((1 1 1 1 1 1)
+ (0 1 1 1 1 1)
+ (0 0 1 1 1 1)
+ (0 0 0 1 1 1)
+ (0 0 0 0 1 1)
+ (0 0 0 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))
+ nil nil
+ ;; 2x
+ '((0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1))
+ '((1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)
+ (1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)
+ (0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)
+ (0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)
+ (0 0 0 0 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)
+ (0 0 0 0 0 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1)
+ (0 0 0 0 0 0 2 1 1 1 1 1 1 1 1 1 1 1 1 1)
+ (0 0 0 0 0 0 0 2 1 1 1 1 1 1 1 1 1 1 1 1)
+ (0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1)
+ (0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1)
+ (0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1)
+ (0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1))
+ '((0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1)
+ (0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1)
+ (0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1)
+ (0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1)
+ (0 0 0 0 0 0 0 0 0 0 0 0 2 1 1 1 1 1 1 1)
+ (0 0 0 0 0 0 0 0 0 0 0 0 0 2 1 1 1 1 1 1)
+ (0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1)
+ (0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1)
+ (0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)
+ (0 0 0 0 0 0 0 0 0 0 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))
+ nil nil
+ ;; 2x
+ '((0 0 0 0 0 0 0 0))
+ '((1 1 1 1 1 1 1 1)
+ (1 1 1 1 1 1 1 1)
+ (1 1 1 1 1 1 1 1)
+ (0 0 1 1 1 1 1 1)
+ (0 0 0 2 1 1 1 1)
+ (0 0 0 0 2 1 1 1)
+ (0 0 0 0 0 2 1 1)
+ (0 0 0 0 0 0 1 1)
+ (0 0 0 0 0 0 1 1)
+ (0 0 0 0 0 0 0 1)
+ (0 0 0 0 0 0 0 1)
+ (0 0 0 0 0 0 0 1))
+ '((0 0 0 0 0 0 0 1)
+ (0 0 0 0 0 0 0 1)
+ (0 0 0 0 0 0 0 1)
+ (0 0 0 0 0 0 1 1)
+ (0 0 0 0 0 0 1 1)
+ (0 0 0 0 0 2 1 1)
+ (0 0 0 0 2 1 1 1)
+ (0 0 0 2 1 1 1 1)
+ (0 0 1 1 1 1 1 1)
+ (1 1 1 1 1 1 1 1)
+ (1 1 1 1 1 1 1 1)
+ (1 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))
+ nil nil nil
+ ;; 2x
+ '((0 0 0 0 0 0 0 0 0 0 0 0))
+ '((1 1 1 1 1 1 1 1 1 1 1 1)
+ (0 0 2 1 1 1 1 1 1 1 1 1)
+ (0 0 0 0 1 1 1 1 1 1 1 1)
+ (0 0 0 0 0 0 1 1 1 1 1 1)
+ (0 0 0 0 0 0 0 2 1 1 1 1)
+ (0 0 0 0 0 0 0 0 1 1 1 1)
+ (0 0 0 0 0 0 0 0 0 1 1 1)
+ (0 0 0 0 0 0 0 0 0 0 1 1)
+ (0 0 0 0 0 0 0 0 0 0 1 1)
+ (0 0 0 0 0 0 0 0 0 0 2 1)
+ (0 0 0 0 0 0 0 0 0 0 0 1)
+ (0 0 0 0 0 0 0 0 0 0 0 1))))
+
+(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))
+ nil nil
+ ;; 2x
+ '((0 0 0 0 0 0))
+ '((1 1 1 1 1 1)
+ (2 1 1 1 1 1)
+ (0 0 0 2 1 1)
+ (0 0 0 0 1 1)
+ (0 0 0 0 0 1)
+ (0 0 0 0 0 1))
+ '((0 0 0 0 0 1)
+ (0 0 0 0 0 1)
+ (0 0 0 0 1 1)
+ (0 0 0 2 1 1)
+ (2 1 1 1 1 1)
+ (1 1 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 (1- height)
+ concat (pl/pattern-to-string (,row-modifier (pl/row-pattern (/ i 2) width)))))
+ `((cl-loop for i from 0 to (1- (* height 2))
+ concat (pl/pattern-to-string (,row-modifier (pl/row-pattern (/ i 2) (* width 2)))))))))
+
+(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))
+ nil nil
+ ;; 2x
+ '((0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1))
+ '((1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)
+ (0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)
+ (0 0 0 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)
+ (0 0 0 0 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)
+ (0 0 0 0 0 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)
+ (0 0 0 0 0 0 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)
+ (0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)
+ (0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)
+ (0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1)
+ (0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1)
+ (0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1)
+ (0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1)
+ (0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1)
+ (0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1)
+ (0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1)
+ (0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1)
+ (0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1)
+ (0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1))
+ '((0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1)
+ (0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1)
+ (0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1)
+ (0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1)
+ (0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1)
+ (0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1)
+ (0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1)
+ (0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1)
+ (0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1)
+ (0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1)
+ (0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 1 1 1 1 1)
+ (0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 1 1 1 1)
+ (0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1)
+ (0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))))
+
+(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))
+ nil nil nil nil
+ ;; 2x
+ '((1 1 1 1 1 1)
+ (0 1 1 1 1 1)
+ (0 0 1 1 1 1)
+ (0 0 0 1 1 1)
+ (0 0 0 0 1 1)
+ (0 0 0 0 0 1)
+ (0 0 0 0 0 0)
+ (0 0 0 0 0 1)
+ (0 0 0 0 1 1)
+ (0 0 0 1 1 1)
+ (0 0 1 1 1 1)
+ (0 1 1 1 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))
+
+(defmacro pl/utf-8 (dir)
+ "Generate function that returns raw utf-8 symbols."
+ (let ((dir-name (symbol-name dir))
+ (src-face (if (eq dir 'left) 'face1 'face2))
+ (dst-face (if (eq dir 'left) 'face2 'face1)))
+ `(defun ,(intern (format "powerline-utf-8-%s" dir-name))
+ (face1 face2 &optional height)
+ (powerline-raw
+ (char-to-string ,(intern (format "powerline-utf-8-separator-%s"
+ dir-name)))
+ (list :foreground (pl/background-color ,src-face)
+ :background (pl/background-color ,dst-face)
+ :inverse-video nil)))))
+
+
+(provide 'powerline-separators)
+
+;;; powerline-separators.el ends here
diff --git a/elpa/powerline-20200105.2053/powerline-themes.el b/elpa/powerline-20200105.2053/powerline-themes.el
new file mode 100644
index 0000000..20b43e3
--- /dev/null
+++ b/elpa/powerline-20200105.2053/powerline-themes.el
@@ -0,0 +1,294 @@
+;;; powerline-themes.el --- Themes for Powerline
+
+;; Copyright (C) 2012-2013 Donald Ephraim Curtis
+;; Copyright (C) 2013 Jason Milkins
+;; Copyright (C) 2012 Nicolas Rougier
+
+;; This file is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+
+;; This file is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;
+;; Themes for Powerline.
+;; Included themes: default, center, center-evil, vim, and nano.
+;;
+
+;;; Code:
+
+(defcustom powerline-display-buffer-size t
+ "When non-nil, display the buffer size."
+ :group 'powerline
+ :type 'boolean)
+
+(defcustom powerline-display-mule-info t
+ "When non-nil, display the mule info."
+ :group 'powerline
+ :type 'boolean)
+
+(defcustom powerline-display-hud t
+ "When non-nil, display the hud."
+ :group 'powerline
+ :type 'boolean)
+
+;;;###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-buffer-id (if active 'mode-line-buffer-id 'mode-line-buffer-id-inactive))
+ (mode-line (if active 'mode-line 'mode-line-inactive))
+ (face0 (if active 'powerline-active0 'powerline-inactive0))
+ (face1 (if active 'powerline-active1 'powerline-inactive1))
+ (face2 (if active 'powerline-active2 'powerline-inactive2))
+ (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))))
+ (lhs (list (powerline-raw "%*" face0 'l)
+ (when powerline-display-buffer-size
+ (powerline-buffer-size face0 'l))
+ (when powerline-display-mule-info
+ (powerline-raw mode-line-mule-info face0 'l))
+ (powerline-buffer-id `(mode-line-buffer-id ,face0) 'l)
+ (when (and (boundp 'which-func-mode) which-func-mode)
+ (powerline-raw which-func-format face0 'l))
+ (powerline-raw " " face0)
+ (funcall separator-left face0 face1)
+ (when (and (boundp 'erc-track-minor-mode) erc-track-minor-mode)
+ (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)
+ (when (bound-and-true-p nyan-mode)
+ (powerline-raw (list (nyan-create)) face2 'l))))
+ (rhs (list (powerline-raw global-mode-string face2 'r)
+ (funcall separator-right face2 face1)
+ (unless window-system
+ (powerline-raw (char-to-string #xe0a1) face1 'l))
+ (powerline-raw "%4l" face1 'l)
+ (powerline-raw ":" face1 'l)
+ (powerline-raw "%3c" face1 'r)
+ (funcall separator-right face1 face0)
+ (powerline-raw " " face0)
+ (powerline-raw "%6p" face0 'r)
+ (when powerline-display-hud
+ (powerline-hud face0 face2))
+ (powerline-fill face0 0)
+ )))
+ (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-buffer-id (if active 'mode-line-buffer-id 'mode-line-buffer-id-inactive))
+ (mode-line (if active 'mode-line 'mode-line-inactive))
+ (face0 (if active 'powerline-active0 'powerline-inactive0))
+ (face1 (if active 'powerline-active1 'powerline-inactive1))
+ (face2 (if active 'powerline-active2 'powerline-inactive2))
+ (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))))
+ (lhs (list (powerline-raw "%*" face0 'l)
+ (when powerline-display-buffer-size
+ (powerline-buffer-size face0 'l))
+ (powerline-buffer-id `(mode-line-buffer-id ,face0) 'l)
+ (powerline-raw " " face0)
+ (funcall separator-left face0 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 face0)
+ (powerline-raw " " face0)
+ (powerline-raw "%6p" face0 'r)
+ (when powerline-display-hud
+ (powerline-hud face2 face1))
+ (powerline-fill face0 0)))
+ (center (list (powerline-raw " " face1)
+ (funcall separator-left face1 face2)
+ (when (and (boundp 'erc-track-minor-mode) erc-track-minor-mode)
+ (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-buffer-id (if active 'mode-line-buffer-id 'mode-line-buffer-id-inactive))
+ (mode-line (if active 'mode-line 'mode-line-inactive))
+ (face0 (if active 'powerline-active0 'powerline-inactive0))
+ (face1 (if active 'powerline-active1 'powerline-inactive1))
+ (face2 (if active 'powerline-active2 'powerline-inactive2))
+ (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))))
+ (lhs (list (powerline-raw "%*" face0 'l)
+ (when powerline-display-buffer-size
+ (powerline-buffer-size face0 'l))
+ (powerline-buffer-id `(mode-line-buffer-id ,face0) 'l)
+ (powerline-raw " " face0)
+ (funcall separator-left face0 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 face0)
+ (powerline-raw " " face0)
+ (powerline-raw "%6p" face0 'r)
+ (when powerline-display-hud
+ (powerline-hud face2 face1))))
+ (center (append (list (powerline-raw " " face1)
+ (funcall separator-left face1 face2)
+ (when (and (boundp 'erc-track-minor-mode) erc-track-minor-mode)
+ (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))
+ (face0 (if active 'powerline-active0 'powerline-inactive0))
+ (face1 (if active 'powerline-active1 'powerline-inactive1))
+ (face2 (if active 'powerline-active2 'powerline-inactive2))
+ (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))))
+ (lhs (list (powerline-buffer-id `(mode-line-buffer-id ,face0) 'l)
+ (powerline-raw "[" face0 'l)
+ (powerline-major-mode face0)
+ (powerline-process face0)
+ (powerline-raw "]" face0)
+ (when (buffer-modified-p)
+ (powerline-raw "[+]" face0))
+ (when buffer-read-only
+ (powerline-raw "[RO]" face0))
+ (powerline-raw "[%z]" face0)
+ ;; (powerline-raw (concat "[" (mode-line-eol-desc) "]") face0)
+ (when (and (boundp 'which-func-mode) which-func-mode)
+ (powerline-raw which-func-format nil 'l))
+ (when (and (boundp 'erc-track-minor-mode) erc-track-minor-mode)
+ (powerline-raw erc-modified-channels-object face1 'l))
+ (powerline-raw "[" face0 'l)
+ (powerline-minor-modes face0)
+ (powerline-raw "%n" face0)
+ (powerline-raw "]" face0)
+ (when (and vc-mode buffer-file-name)
+ (let ((backend (vc-backend buffer-file-name)))
+ (when backend
+ (concat (powerline-raw "[" face0 'l)
+ (powerline-raw (format "%s / %s" backend (vc-working-revision buffer-file-name backend)) face0)
+ (powerline-raw "]" face0)))))))
+ (rhs (list (powerline-raw '(10 "%i") face0)
+ (powerline-raw global-mode-string face0 'r)
+ (powerline-raw "%l," face0 'l)
+ (powerline-raw (format-mode-line '(10 "%c")) face0)
+ (powerline-raw (replace-regexp-in-string "%" "%%" (format-mode-line '(-3 "%p"))) face0 'r)
+ (powerline-fill face0 0))))
+ (concat (powerline-render lhs)
+ (powerline-fill face0 (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))
+ (face0 (if active 'powerline-active0 'powerline-inactive0))
+ (lhs (list (powerline-raw (concat "GNU Emacs "
+ (number-to-string
+ emacs-major-version)
+ "."
+ (number-to-string
+ emacs-minor-version))
+ face0 'l)))
+ (rhs (list (if (buffer-modified-p) (powerline-raw "Modified" face0 'r))
+ (powerline-fill face0 0)))
+ (center (list (powerline-raw "%b" face0))))
+ (concat (powerline-render lhs)
+ (powerline-fill-center face0 (/ (powerline-width center) 2.0))
+ (powerline-render center)
+ (powerline-fill face0 (powerline-width rhs))
+ (powerline-render rhs)))))))
+
+
+(provide 'powerline-themes)
+
+;;; powerline-themes.el ends here
diff --git a/elpa/powerline-20200105.2053/powerline.el b/elpa/powerline-20200105.2053/powerline.el
new file mode 100644
index 0000000..7670e5a
--- /dev/null
+++ b/elpa/powerline-20200105.2053/powerline.el
@@ -0,0 +1,617 @@
+;;; 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.4
+;; Keywords: mode-line
+;; Package-Requires: ((cl-lib "0.2"))
+
+;; This file is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+
+;; This file is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+;;; 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:
+
+(eval-and-compile (require 'powerline-themes))
+(eval-and-compile (require 'powerline-separators))
+
+(require 'cl-lib)
+
+(defgroup powerline nil
+ "Powerline, a prettier mode line."
+ :group 'mode-line)
+
+(defface powerline-active0 '((t (:inherit mode-line)))
+ "Powerline face 0."
+ :group 'powerline)
+
+(defface powerline-active1 '((t (:background "grey17" :foreground "white" :inherit mode-line)))
+ "Powerline face 1."
+ :group 'powerline)
+
+(defface powerline-active2 '((t (:background "grey40" :foreground "white" :inherit mode-line)))
+ "Powerline face 2."
+ :group 'powerline)
+
+(defface powerline-inactive0
+ '((t (:inherit mode-line-inactive)))
+ "Powerline face 0."
+ :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)
+
+(defface mode-line-buffer-id-inactive
+ '((t (:inherit mode-line-buffer-id)))
+ "Powerline mode-line face"
+ :group 'powerline)
+
+(defcustom powerline-default-separator 'arrow
+ "The separator to use for the default theme.
+
+Valid Values: alternate, arrow, arrow-fade, bar, box, brace,
+butt, chamfer, contour, curve, rounded, roundstub, wave, zigzag,
+slant, utf-8."
+ :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 utf-8)
+ (const nil)))
+
+(defcustom powerline-utf-8-separator-left #xe0b0
+ "The unicode character number for the left facing separator"
+ :group 'powerline
+ :type '(choice integer (const nil)))
+
+(defcustom powerline-utf-8-separator-right #xe0b2
+ "The unicode character number for the right facing separator"
+ :group 'powerline
+ :type '(choice integer (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)
+
+(defcustom powerline-gui-use-vcs-glyph nil
+ "Display a unicode character to represent a version control system. Not always supported in GUI."
+ :group 'powerline
+ :type 'boolean)
+
+(defcustom powerline-narrowed-indicator "Narrow"
+ "A string to display in the mode-line when the buffer is narrowed."
+ :group 'powerline
+ :type 'string)
+
+(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."
+ (let ((table (frame-parameter nil 'powerline-cache)))
+ (if (hash-table-p table) table (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))
+
+(defun powerline-current-separator ()
+ "Get the current default separator. Always returns utf-8 in non-gui mode."
+ (if window-system
+ powerline-default-separator
+ 'utf-8))
+
+;;
+;; the frame-local powerline cache causes problems if included in a saved desktop,
+;; so delete it before the desktop is saved.
+;;
+;; see https://github.com/milkypostman/powerline/issues/58
+;;
+;; It is better to put the following code into your init file for Emacs 24.4 or later.
+;; (require 'frameset)
+;; (push '(powerline-cache . :never) frameset-filter-alist)
+;;
+(defun powerline-delete-cache (&optional frame)
+ "Set the FRAME cache to nil."
+ (set-frame-parameter frame 'powerline-cache nil))
+
+(defun powerline-desktop-save-delete-cache ()
+ "Set all caches to nil unless `frameset-filter-alist' has :never for powerline-cache."
+ (unless (and (boundp 'frameset-filter-alist)
+ (eq (cdr (assq 'powerline-cache frameset-filter-alist))
+ :never))
+ (dolist (fr (frame-list)) (powerline-delete-cache fr))))
+
+(add-hook 'desktop-save-hook 'powerline-desktop-save-delete-cache)
+
+;; 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/utf-8 left)
+ (pl/utf-8 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 (autoload 'powerline-major-mode "powerline")
+(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 (autoload 'powerline-minor-modes "powerline")
+(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 (autoload 'powerline-narrow "powerline")
+(defpowerline powerline-narrow
+ (when ;; (buffer-narrowed-p) introduced in Emacs 24.3.
+ (/= (- (point-max) (point-min)) (buffer-size))
+ (propertize powerline-narrowed-indicator
+ '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 (autoload 'powerline-vc "powerline")
+(defpowerline powerline-vc
+ (when (and (buffer-file-name (current-buffer)) vc-mode)
+ (if (and window-system (not powerline-gui-use-vcs-glyph))
+ (format-mode-line '(vc-mode vc-mode))
+ (format " %s%s"
+ (char-to-string #xe0a0)
+ (format-mode-line '(vc-mode vc-mode))))))
+
+;;;###autoload (autoload 'powerline-encoding "powerline")
+(defpowerline powerline-encoding
+ (let ((buf-coding (format "%s" buffer-file-coding-system)))
+ (if (string-match "\\(dos\\|unix\\|mac\\)" buf-coding)
+ (match-string 1 buf-coding)
+ buf-coding)))
+
+
+;;;###autoload (autoload 'powerline-buffer-size "powerline")
+(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 (autoload 'powerline-buffer-id "powerline")
+(defun powerline-buffer-id (&optional face pad)
+ (powerline-raw
+ (format-mode-line
+ (concat " " (propertize
+ (format-mode-line mode-line-buffer-identification)
+ 'face face
+ 'mouse-face 'mode-line-highlight
+ 'help-echo "Buffer name\n\ mouse-1: Previous buffer\n\ mouse-3: Next buffer"
+ 'local-map (let ((map (make-sparse-keymap)))
+ (define-key map [mode-line mouse-1] 'mode-line-previous-buffer)
+ (define-key map [mode-line mouse-3] 'mode-line-next-buffer)
+ map))))
+ face pad))
+
+;;;###autoload (autoload 'powerline-process "powerline")
+(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)
+
+(defvar powerline-selected-window (frame-selected-window)
+ "Selected window.")
+
+(defun powerline-set-selected-window ()
+ "Set the variable `powerline-selected-window' appropriately."
+ (when (not (minibuffer-window-active-p (frame-selected-window)))
+ (setq powerline-selected-window (frame-selected-window))
+ (force-mode-line-update)))
+
+(defun powerline-unset-selected-window ()
+ "Unset the variable `powerline-selected-window' and update the mode line."
+ (setq powerline-selected-window nil)
+ (force-mode-line-update))
+
+(add-hook 'window-configuration-change-hook 'powerline-set-selected-window)
+
+;; focus-in-hook was introduced in emacs v24.4.
+;; Gets evaluated in the last frame's environment.
+(add-hook 'focus-in-hook 'powerline-set-selected-window)
+
+;; focus-out-hook was introduced in emacs v24.4.
+(add-hook 'focus-out-hook 'powerline-unset-selected-window)
+
+;; Executes after the window manager requests that the user's events
+;; be directed to a different frame.
+(defadvice handle-switch-frame (after powerline-handle-switch-frame activate)
+ "Call `powerline-set-selected-window'."
+ (powerline-set-selected-window))
+
+(add-hook 'buffer-list-update-hook #'powerline-set-selected-window)
+
+;;;###autoload (autoload 'powerline-selected-window-active "powerline")
+(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) (string-width (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
Copyright 2019--2024 Marius PETER