mirror of https://github.com/djcb/mu.git
mu4e-loading-mode is now a minor mode
This commit is contained in:
parent
12bad5f810
commit
37e8328975
|
@ -1611,6 +1611,9 @@ _not_ refresh the last search with the new setting for threading."
|
|||
(if (functionp mu4e-view-auto-mark-as-read)
|
||||
(funcall mu4e-view-auto-mark-as-read msg)
|
||||
mu4e-view-auto-mark-as-read)))
|
||||
(when-let ((buf (mu4e-get-view-buffer nil nil)))
|
||||
(with-current-buffer buf
|
||||
(mu4e-loading-mode 1)))
|
||||
(mu4e--server-view docid mark-as-read)))
|
||||
|
||||
|
||||
|
@ -1767,28 +1770,28 @@ other windows."
|
|||
|
||||
;;; Loading messages
|
||||
;;
|
||||
(defvar mu4e-loading-mode-map
|
||||
(let ((map (make-sparse-keymap)))
|
||||
(define-key map "n" #'ignore)
|
||||
(define-key map "p" #'ignore)
|
||||
(define-key map "q" #'bury-buffer)
|
||||
map)
|
||||
"Keymap for *mu4e-loading* buffers.")
|
||||
|
||||
(define-derived-mode mu4e-loading-mode special-mode
|
||||
"mu4e:loading"
|
||||
(use-local-map mu4e-loading-mode-map)
|
||||
(let ((inhibit-read-only t))
|
||||
(erase-buffer)
|
||||
(insert (propertize "Loading message..."
|
||||
'face 'mu4e-system-face 'intangible t))))
|
||||
|
||||
(defun mu4e~loading-close ()
|
||||
"Bury the mu4e Loading... buffer, if any."
|
||||
(let* ((buf mu4e~headers-loading-buf)
|
||||
(win (and (buffer-live-p buf) (get-buffer-window buf t))))
|
||||
(when (window-live-p win)
|
||||
(delete-window win))))
|
||||
(define-minor-mode mu4e-loading-mode
|
||||
"Minor mode for buffers awaiting data from mu"
|
||||
:init-value nil :lighter " Loading" :keymap nil
|
||||
(if mu4e-loading-mode
|
||||
(progn
|
||||
(when mu4e-dim-when-loading
|
||||
(set (make-variable-buffer-local 'mu4e--loading-overlay-bg)
|
||||
(let ((overlay (make-overlay (point-min) (point-max))))
|
||||
(overlay-put overlay 'face `(:foreground "gray22" :background
|
||||
,(face-attribute 'default :background)))
|
||||
(overlay-put overlay 'priority 9998)
|
||||
overlay)))
|
||||
(set (make-variable-buffer-local 'mu4e--loading-overlay-text)
|
||||
(let ((overlay (make-overlay (point-min) (point-min))))
|
||||
(overlay-put overlay 'priority 9999)
|
||||
(overlay-put overlay 'before-string (propertize "Loading…\n" 'face 'mu4e-header-title-face))
|
||||
overlay)))
|
||||
(when mu4e--loading-overlay-bg
|
||||
(delete-overlay mu4e--loading-overlay-bg))
|
||||
(when mu4e--loading-overlay-text
|
||||
(delete-overlay mu4e--loading-overlay-text))))
|
||||
|
||||
(provide 'mu4e-headers)
|
||||
;;; mu4e-headers.el ends here
|
||||
|
|
|
@ -163,8 +163,6 @@ Create [mu4e]-prefixed error based on format FRM and ARGS. Does a
|
|||
local-exit and does not return, and raises a
|
||||
debuggable (backtrace) error."
|
||||
(mu4e-log 'error (apply 'mu4e-format frm args))
|
||||
;; opportunistically close the "loading" window.
|
||||
(mu4e~loading-close)
|
||||
(error "%s" (apply 'mu4e-format frm args)))
|
||||
|
||||
(defun mu4e-warn (frm &rest args)
|
||||
|
|
|
@ -56,6 +56,12 @@ Follows the format of `format-time-string'."
|
|||
:type 'string
|
||||
:group 'mu4e)
|
||||
|
||||
(defcustom mu4e-dim-when-loading t
|
||||
"Dim buffer text when loading new data.
|
||||
If non-nil, dim some buffers during data retrieval and rendering. Disable this if you"
|
||||
:type 'boolean
|
||||
:group 'mu4e)
|
||||
|
||||
|
||||
;;; Faces
|
||||
|
||||
|
|
|
@ -619,7 +619,8 @@ As a side-effect, a message that is being viewed loses its
|
|||
(insert-file-contents-literally
|
||||
(mu4e-message-readable-path msg) nil nil nil t)
|
||||
(setq-local mu4e~view-message msg)
|
||||
(mu4e~view-render-buffer msg)))
|
||||
(mu4e~view-render-buffer msg))
|
||||
(mu4e-loading-mode 0))
|
||||
(unless (mu4e--view-detached-p gnus-article-buffer)
|
||||
(with-current-buffer mu4e-linked-headers-buffer
|
||||
;; We need this here as we want to avoid displaying the buffer until
|
||||
|
|
|
@ -24,9 +24,6 @@
|
|||
|
||||
;;; Buffer names for internal use
|
||||
|
||||
(defvar mu4e~headers-loading-buf nil
|
||||
"A buffer for loading a message view.")
|
||||
|
||||
(defconst mu4e--sexp-buffer-name "*mu4e-sexp-at-point*"
|
||||
"Buffer name for sexp buffers.")
|
||||
|
||||
|
@ -110,7 +107,6 @@ tested."
|
|||
(and pred (funcall pred buf)))))
|
||||
(buffer-list)))
|
||||
|
||||
|
||||
(defun mu4e--view-detached-p (buffer)
|
||||
"Return non-nil if BUFFER is a detached view buffer."
|
||||
(with-current-buffer buffer
|
||||
|
@ -121,7 +117,6 @@ tested."
|
|||
(defun mu4e--get-current-buffer-type ()
|
||||
"Return an internal symbol that corresponds to each mu4e major mode."
|
||||
(cond ((derived-mode-p 'mu4e-view-mode 'mu4e-raw-view-mode) 'view)
|
||||
((derived-mode-p 'mu4e-loading-mode) 'loading)
|
||||
((derived-mode-p 'mu4e-headers-mode) 'headers)
|
||||
((derived-mode-p 'mu4e-compose-mode) 'compose)
|
||||
((derived-mode-p 'mu4e-main-mode) 'main)
|
||||
|
@ -130,8 +125,7 @@ tested."
|
|||
(defun mu4e-current-buffer-type-p (type)
|
||||
"Return non-nil if the current buffer is a mu4e buffer of TYPE.
|
||||
|
||||
Where TYPE is `view', `loading', `headers', `compose',
|
||||
`main' or `unknown'.
|
||||
Where TYPE is `view', `headers', `compose', `main' or `unknown'.
|
||||
|
||||
Checks are performed using `derived-mode-p' and the current
|
||||
buffer's major mode."
|
||||
|
@ -226,7 +220,6 @@ for BUFFER-OR-NAME to be displayed in."
|
|||
('(view . vertical) '((window-min-width . fit-window-to-buffer)))
|
||||
(`(,_ . t) nil)))
|
||||
(window-action (cond
|
||||
((memq buffer-type '(loader)) '(display-buffer-same-window))
|
||||
((memq buffer-type '(headers compose))
|
||||
'(display-buffer-reuse-mode-window display-buffer-same-window))
|
||||
((memq mu4e-split-view '(horizontal vertical))
|
||||
|
|
Loading…
Reference in New Issue