doom-modeline no longer errors out, in case a modeline doesn't exist; add doom-set-modeline

This commit is contained in:
Henrik Lissner 2017-04-25 18:25:54 -04:00
parent b006e9d0dc
commit 8e7aa152bb
5 changed files with 25 additions and 15 deletions

View file

@ -59,7 +59,7 @@ is enabled/disabled.'")
;; `doom*delete-popup-window'
;; :autoclose If non-nil, close popup if ESC is pressed from any buffer.
shackle-rules
'(("^ ?\\*doom:.+\\*$" :size 40 :modeline t :regexp t)
'(("^ ?\\*doom:.+\\*$" :size 25 :modeline minimal :regexp t :noesc t)
("^ ?\\*doom .+\\*$" :size 10 :noselect t :regexp t)
("^ *doom message*" :size 10 :noselect t :autokill t)
("*Metahelp*" :size 0.5 :autokill t :autoclose t)
@ -172,8 +172,9 @@ for :align t on every rule."
(doom-hide-modeline-mode +1))
((and (symbolp modeline)
(not (eq modeline 't)))
(let ((doom--mode-line (doom-modeline modeline)))
(doom-hide-modeline-mode +1)))))
(let ((doom--modeline-format (doom-modeline modeline)))
(when doom--modeline-format
(doom-hide-modeline-mode +1))))))
;; show modeline
(when doom-hide-modeline-mode
(doom-hide-modeline-mode -1))))

View file

@ -256,7 +256,7 @@ Example:
(def-modeline! minimal
(bar matches \" \" buffer-info)
(media-info major-mode))
(setq-default mode-line-format (doom-modeline 'minimal))"
(doom-set-modeline 'minimal t)"
(let ((sym (intern (format "doom-modeline-format--%s" name)))
(lhs-forms (doom--prepare-modeline-segments lhs))
(rhs-forms (doom--prepare-modeline-segments rhs)))
@ -278,9 +278,18 @@ Example:
"Returns a mode-line configuration associated with KEY (a symbol). Throws an
error if it doesn't exist."
(let ((fn (intern (format "doom-modeline-format--%s" key))))
(unless (functionp fn)
(error "Modeline format doesn't exist: %s" key))
`(:eval (,fn))))
(when (functionp fn)
`(:eval (,fn)))))
(defun doom-set-modeline (key &optional default)
"Set the modeline format. Does nothing if the modeline KEY doesn't exist. If
DEFAULT is non-nil, set the default mode-line for all buffers."
(let ((modeline (doom-modeline key)))
(when modeline
(setf (if default
(default-value 'mode-line-format)
(buffer-local-value 'mode-line-format (current-buffer)))
modeline))))
(provide 'core-ui)
;;; core-ui.el ends here