summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NEWS.org6
-rw-r--r--mu4e/mu4e-main.el58
2 files changed, 39 insertions, 25 deletions
diff --git a/NEWS.org b/NEWS.org
index 501e469..be40fd6 100644
--- a/NEWS.org
+++ b/NEWS.org
@@ -6,6 +6,12 @@
The 1.14 series continues where the 1.12 series left off, with just some
version updates & depreciations.
+*** mu4e
+
+ - ~mu4e-main-hide-personal-addresses~ can now also be a number, which is the
+ maximum number of addresses to show. This can be useful if you have
+ some many personal addresses that the clutter up the main view. (1.14.0)
+
* 1.12 (released on February 24, 2024)
diff --git a/mu4e/mu4e-main.el b/mu4e/mu4e-main.el
index 9bd3964..ac6367e 100644
--- a/mu4e/mu4e-main.el
+++ b/mu4e/mu4e-main.el
@@ -49,8 +49,12 @@
This can be useful to avoid the noise when there are many, and
also hides the warning if your `user-mail-address' is not part of
-the personal addresses."
- :type 'boolean
+the personal addresses.
+
+If set to t hide all personal addresses; if set to some number,
+at most so so many addresses."
+ :type '(choice (boolean :tag "Hide addresses")
+ (natnum :tag "Maximum number to show"))
:group 'mu4e-main)
(defcustom mu4e-main-hide-fully-read nil
@@ -285,19 +289,35 @@ for aligning them."
(current-time-string baseline-t)
"Never"))))
+(defun mu4e--personal-addresses ()
+ "Return menu information regarding personal addresses."
+ (let* ((maybe-num mu4e-main-hide-personal-addresses)
+ (addrs (mu4e-personal-addresses))
+ (addrs (if (natnump maybe-num) ;; all or subset?
+ (seq-take addrs maybe-num)
+ addrs)))
+ ;; show personal addresses, or some subset?
+ (if (eq mu4e-main-hide-personal-addresses t)
+ ""
+ (mu4e--key-val "personal addresses"
+ (if addrs (string-join addrs ", ") "none")))))
+
(defun mu4e--main-redraw ()
- "Redraw the main buffer if there is one.
-Otherwise, do nothing."
+ "Redraw the main buffer if there is one."
(when-let* ((buffer (get-buffer mu4e-main-buffer-name))
(buffer (and (buffer-live-p buffer) buffer)))
(with-current-buffer buffer
(let* ((inhibit-read-only t)
(pos (point))
- (addrs (mu4e-personal-addresses))
(max-length (seq-reduce (lambda (a b)
(max a (length (plist-get b :name))))
(mu4e-query-items) 0)))
- (mu4e-main-mode)
+
+ ;; must be in mu4e-main-mode, or the bindings
+ ;; handling won't work.
+ (unless (eq major-mode 'mu4e-main-mode)
+ (mu4e-main-mode))
+
(erase-buffer)
(insert
"* "
@@ -345,16 +365,7 @@ Otherwise, do nothing."
(mu4e--key-val "in store"
(format "%d" (plist-get mu4e--server-props :doccount))
"messages")
- (if mu4e-main-hide-personal-addresses ""
- (mu4e--key-val "personal addresses"
- (if addrs (string-join addrs ", " ) "none"))))
-
- (if mu4e-main-hide-personal-addresses ""
- (unless (mu4e-personal-address-p user-mail-address)
- (mu4e-message (concat
- "Tip: `user-mail-address' ('%s') is not part "
- "of mu's addresses; add it with 'mu init
- --personal-address='") user-mail-address)))
+ (mu4e--personal-addresses))
(goto-char pos)))))
(defun mu4e--main-view-queue ()
@@ -394,13 +405,11 @@ If `mu4e-split-view' equals \\='single-window, show a mu4e menu
instead."
(if (eq mu4e-split-view 'single-window)
(mu4e--main-menu)
- (let ((buf (get-buffer-create mu4e-main-buffer-name))
- (inhibit-read-only t))
- (with-current-buffer buf
- (mu4e--main-redraw))
+ (let* ((buf (get-buffer-create mu4e-main-buffer-name))
+ (inhibit-read-only t))
+ (mu4e--main-redraw)
(mu4e-display-buffer buf t)
- (run-hooks 'mu4e-main-rendered-hook)))
- (goto-char (point-min)))
+ (run-hooks 'mu4e-main-rendered-hook))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Interactive functions
@@ -409,13 +418,12 @@ instead."
"Toggle sending mail mode, either queued or direct."
(interactive)
(unless (file-directory-p smtpmail-queue-dir)
- (mu4e-error "`smtpmail-queue-dir' does not exist"))
+ (mu4e-warn"`smtpmail-queue-dir' does not exist"))
(setq smtpmail-queue-mail (not smtpmail-queue-mail))
(mu4e-message
(concat "Outgoing mail will now be "
(if smtpmail-queue-mail "queued" "sent directly")))
- (unless (or (eq mu4e-split-view 'single-window)
- (not (buffer-live-p (get-buffer mu4e-main-buffer-name))))
+ (unless (or (eq mu4e-split-view 'single-window))
(mu4e--main-redraw)))
(defun mu4e--main-menu ()