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

View file

@ -22,7 +22,7 @@
(add-hook 'twittering-mode-hook #'doom-buffer-mode))
(add-hook! twittering-mode
(setq header-line-format (doom-modeline 'twitter)
(setq header-line-format (or (doom-modeline 'twitter) mode-line-format)
mode-line-format nil))
(map! :map twittering-mode-map

View file

@ -101,9 +101,9 @@ whose dimensions may not be fully initialized by the time this is run."
(unless +doom-dashboard-modeline
(setq +doom-dashboard-old-modeline mode-line-format)
(setq +doom-dashboard-modeline
(if (featurep! :ui doom-modeline)
(doom-modeline 'project)
mode-line-format)))
(or (and (featurep! :ui doom-modeline)
(doom-modeline 'project))
mode-line-format)))
(let ((old-pwd (or dir default-directory)))
(with-current-buffer (doom-fallback-buffer)
(+doom-dashboard-mode)

View file

@ -20,7 +20,7 @@
"Display string STR in the mode-line next to minibuffer."
(with-current-buffer (eldoc-current-buffer)
(let* ((str (and (stringp input) input))
(mode-line-format (or (and str (doom-modeline 'eldoc))
(mode-line-format (or (and str (or (doom-modeline 'eldoc) str))
mode-line-format))
mode-line-in-non-selected-windows)
(force-mode-line-update)
@ -562,12 +562,12 @@ with `evil-ex-substitute', and/or 4. The number of active `iedit' regions."
(major-mode))
;;
(setq-default mode-line-format (doom-modeline 'main))
(doom-set-modeline 'main t)
;; This scratch buffer is already created, and doesn't get a modeline. For the
;; love of Emacs, someone give the man a modeline!
(with-current-buffer "*scratch*"
(setq mode-line-format (doom-modeline 'main)))
(doom-set-modeline 'main))
;;
@ -575,6 +575,6 @@ with `evil-ex-substitute', and/or 4. The number of active `iedit' regions."
;;
(defun +doom-modeline|set-special-modeline ()
(setq mode-line-format (doom-modeline 'special)))
(doom-set-modeline 'special))
(add-hook 'org-src-mode-hook #'+doom-modeline|set-special-modeline)