 ;; Bars
 ;;
 
+(defvar +modeline-bar-start nil "TODO")
+(put '+modeline-bar-start 'risky-local-variable t)
+(defvar +modeline-bar-end nil "TODO")
+(put '+modeline-bar-end 'risky-local-variable t)
+
 (defvar +modeline-bar-active nil "TODO")
 (defvar +modeline-bar-inactive nil "TODO")
 (defun +modeline|setup-bars ()
   (setq +modeline-bar-active
-        (+modeline--make-xpm +modeline-width +modeline-height (face-background 'doom-modeline-bar))
+        (+modeline--make-xpm +modeline-width +modeline-height
+                             (unless +modeline-bar-invisible
+                               (face-background 'doom-modeline-bar nil t)))
         +modeline-bar-inactive
-        (+modeline--make-xpm +modeline-width +modeline-height)))
+        (+modeline--make-xpm +modeline-width +modeline-height))
+  (setq +modeline-bar-start nil
+        +modeline-bar-end nil)
+  (if +modeline-bar-at-end
+      (setq +modeline-bar-end '+modeline-bar)
+    (setq +modeline-bar-start '+modeline-bar)))
 (add-hook 'doom-load-theme-hook #'+modeline|setup-bars)
 
 (defun +modeline|setup-bars-after-change (sym val op _where)

(defvar +modeline-height 21
  "How tall the mode-line should be (only respected in GUI emacs).")

(defvar +modeline-buffer-path-function #'+modeline-file-path
  "The function that returns the buffer name display for file-visiting
buffers.")

(defvar-local +modeline-format-right () "TODO")
(put '+modeline-format-left  'risky-local-variable t)
(put '+modeline-format-right 'risky-local-variable t)

;;
(defvar +modeline--vspc (propertize " " 'face 'variable-pitch))

;; externs
(defvar anzu--state nil)
