mirror of https://github.com/djcb/mu.git
mu4e: avoid some errors when flipping through messages
Use special-mode for the loading buffer, and explicitly ignore n/p. Fixes #1443. Fixes #1217.
This commit is contained in:
parent
3e272ba82f
commit
6b2bdf4f6d
|
@ -1659,23 +1659,6 @@ _not_ refresh the last search with the new setting for threading."
|
|||
(defvar mu4e~headers-loading-buf nil
|
||||
"A buffer for loading a message view.")
|
||||
|
||||
(defun mu4e~headers-get-loading-buf ()
|
||||
"Get a buffer to give feedback while loading a message view."
|
||||
(unless (buffer-live-p mu4e~headers-loading-buf)
|
||||
(setq mu4e~headers-loading-buf
|
||||
(get-buffer-create " *mu4e-loading*")))
|
||||
(with-current-buffer mu4e~headers-loading-buf
|
||||
(read-only-mode)
|
||||
(let ((inhibit-read-only t))
|
||||
(erase-buffer)
|
||||
(local-set-key (kbd "q")
|
||||
(if (eq mu4e-split-view 'single-window)
|
||||
'kill-buffer
|
||||
'kill-buffer-and-window))
|
||||
(insert (propertize "Waiting for message..."
|
||||
'face 'mu4e-system-face 'intangible t))))
|
||||
mu4e~headers-loading-buf)
|
||||
|
||||
(defun mu4e~decrypt-p (msg)
|
||||
"Should we decrypt this message?"
|
||||
(and (member 'encrypted (mu4e-message-field msg :flags))
|
||||
|
@ -1701,7 +1684,13 @@ window. "
|
|||
(unless (window-live-p viewwin)
|
||||
(mu4e-error "Cannot get a message view"))
|
||||
(select-window viewwin)
|
||||
(switch-to-buffer (mu4e~headers-get-loading-buf))
|
||||
|
||||
(unless (buffer-live-p mu4e~headers-loading-buf)
|
||||
(setq mu4e~headers-loading-buf (get-buffer-create " *mu4e-loading*"))
|
||||
(with-current-buffer mu4e~headers-loading-buf
|
||||
(mu4e-loading-mode)))
|
||||
|
||||
(switch-to-buffer mu4e~headers-loading-buf)
|
||||
;; Note, ideally in the 'gnus' case, we don't need to call the server to get
|
||||
;; the body etc., we only need the path which we already have.
|
||||
;;
|
||||
|
|
|
@ -1771,6 +1771,33 @@ other windows."
|
|||
(when (buffer-live-p (mu4e-get-headers-buffer))
|
||||
(switch-to-buffer (mu4e-get-headers-buffer))))))))
|
||||
|
||||
;;; _
|
||||
;;
|
||||
;; Loading messages
|
||||
;;
|
||||
|
||||
(defvar mu4e-loading-mode-map nil "Keymap for *mu4e-loading* buffers.")
|
||||
(unless mu4e-loading-mode-map
|
||||
(setq mu4e-loading-mode-map
|
||||
(let ((map (make-sparse-keymap)))
|
||||
(define-key map "n" 'ignore)
|
||||
(define-key map "p" 'ignore)
|
||||
(define-key map "q"
|
||||
(lambda()(interactive)
|
||||
(if (eq mu4e-split-view 'single-window)
|
||||
'kill-buffer
|
||||
'kill-buffer-and-window)))
|
||||
map)))
|
||||
(fset 'mu4e-loading-mode-map mu4e-loading-mode-map)
|
||||
|
||||
(define-derived-mode mu4e-loading-mode special-mode
|
||||
"mu4e:loading"
|
||||
(use-local-map mu4e-loading-mode-map)
|
||||
(make-local-variable 'global-mode-string)
|
||||
(let ((inhibit-read-only t))
|
||||
(erase-buffer)
|
||||
(insert (propertize "Loading message..."
|
||||
'face 'mu4e-system-face 'intangible t))))
|
||||
|
||||
;;;
|
||||
(provide 'mu4e-view)
|
||||
;;; mu4e-view.el ends here
|
||||
|
|
Loading…
Reference in New Issue