mirror of https://github.com/djcb/mu.git
mu4e-headers: implement mu4e-headers-toggle-setting
Make it easier to toggle various header-view settings and display them in the mode-line.
This commit is contained in:
parent
5a3306ddfc
commit
1a84a57e05
35
NEWS.org
35
NEWS.org
|
@ -91,9 +91,6 @@
|
|||
|
||||
*** mu4e
|
||||
|
||||
- the old mu4e-view is *gone*; only the gnus-based one remains. This allowed
|
||||
for removing quite a bit of old code.
|
||||
|
||||
- the mu4e headers rendering is much faster (a factor of 3+), which makes
|
||||
displaying big results snappier. This required some updates in the headers
|
||||
handling and in the server protocol. Separate from that, the cached
|
||||
|
@ -103,6 +100,27 @@
|
|||
- "related" messages are now recognizable as such in the headers-view, with
|
||||
their own face, ~mu4e-related-face~; by default with an italic slant.
|
||||
|
||||
- For performance testing, you can set the variable
|
||||
~mu4e-headers-report-render-time~ to ~t~ and ~mu4e~ will report the
|
||||
search/rendering speed of each query operation.
|
||||
|
||||
- Removed header-fields ~:attachments~, ~:signature~, ~:encryption~ and
|
||||
~:user-agent~. They're obsolete with the Gnus-based message viewer.
|
||||
|
||||
- The various "toggles" for the headers-view (full-search, include-related,
|
||||
skip-duplicates, threading) were a bit hard to find and with non-obvious
|
||||
key-bindings. For that, there is now ~mu4e-headers-toggle-setting~ (bound to
|
||||
~M~) to handle all of that. The toggles are also reflected in the mode-line;
|
||||
so e.g. 'RTU' means we're including [R]elated messages, and show [T]hreads,
|
||||
skip duplicates ([U]nique).
|
||||
|
||||
- the old mu4e-view is *gone*; only the gnus-based one remains. This allowed
|
||||
for removing quite a bit of old code.
|
||||
|
||||
- A new ~defcustom~, ~mu4e-view-open-program~ for starting the appropriate
|
||||
program for a give file (e.g., ~xdg-open~). There are some reasonable
|
||||
defaults for various systems. This can also be set to a function.
|
||||
|
||||
- indexing happens in the background now and mu4e can interact with the
|
||||
server while it is ongoing; this allows for using mu4e during lengthy
|
||||
indexing operations.
|
||||
|
@ -122,14 +140,6 @@
|
|||
automatically change the ~Organization:~ header, and attempts to update the
|
||||
message signature. Also, there's a key-binding now: ~C-c ;~
|
||||
|
||||
- A new ~defcustom~, ~mu4e-view-open-program~ for starting the appropriate
|
||||
program for a give file (e.g., ~xdg-open~). There are some reasonable
|
||||
defaults for various systems. This can also be set to a function.
|
||||
|
||||
- For performance testing, you can set the variable
|
||||
~mu4e-headers-report-render-time~ to ~t~ and ~mu4e~ will report the
|
||||
search/rendering speed of each query operation.
|
||||
|
||||
- Changed the default for ~mu4e-compose-complete-only-after~ to 2018-01-01, to
|
||||
filter out contacts not seen after that date.
|
||||
|
||||
|
@ -143,9 +153,6 @@
|
|||
|
||||
- Removed ~make-mu4e-bookmark~ which was obsoleted in version 1.3.9.
|
||||
|
||||
- Removed header-fields ~:attachments~, ~:signature~, ~:encryption~ and
|
||||
~:user-agent~. They're obsolete with the Gnus-based message viewer.
|
||||
|
||||
- Add command ~mu4e-sexp-at-point~ for showing/hiding the s-expression for the
|
||||
message-at-point. Useful for development / debugging. Bound to ~,~ in headers
|
||||
and view mode.
|
||||
|
|
|
@ -272,13 +272,13 @@ Must have the same length as `mu4e-headers-thread-connection-prefix'.")
|
|||
(defvar mu4e-headers-thread-duplicate-prefix '("=" . "≡ ")
|
||||
"Prefix for duplicate messages.")
|
||||
|
||||
|
||||
|
||||
(defvar mu4e-headers-threaded-label '("T" . "Ⓣ")
|
||||
"Non-fancy and fancy labels for threaded search in the mode-line.")
|
||||
"Non-fancy and fancy labels to indicate threaded search in the mode-line.")
|
||||
(defvar mu4e-headers-full-label '("F" . "Ⓕ")
|
||||
"Non-fancy and fancy labels for full search in the mode-line.")
|
||||
"Non-fancy and fancy labels to indicate full search in the mode-line.")
|
||||
(defvar mu4e-headers-related-label '("R" . "Ⓡ")
|
||||
"Non-fancy and fancy labels to indicate related search in the mode-line.")
|
||||
(defvar mu4e-headers-skip-duplicates-label '("U" . "Ⓤ") ;; 'U' for 'unique'
|
||||
"Non-fancy and fancy labels for include-related search in the mode-line.")
|
||||
|
||||
;;;; Various
|
||||
|
@ -942,8 +942,11 @@ after the end of the search results."
|
|||
(let ((map (make-sparse-keymap)))
|
||||
|
||||
(define-key map "j" 'mu4e~headers-jump-to-maildir)
|
||||
|
||||
(define-key map "O" 'mu4e-headers-change-sorting)
|
||||
(define-key map "M" 'mu4e-headers-toggle-setting)
|
||||
|
||||
;; these are impossible to remember; use mu4e-headers-toggle-setting
|
||||
;; instead :)
|
||||
(define-key map "P" 'mu4e-headers-toggle-threading)
|
||||
(define-key map "Q" 'mu4e-headers-toggle-full-search)
|
||||
(define-key map "W" 'mu4e-headers-toggle-include-related)
|
||||
|
@ -1296,15 +1299,16 @@ message plist, or nil if not found."
|
|||
(defun mu4e~headers-update-mode-line ()
|
||||
"Update mode-line settings."
|
||||
(let* ((flagstr
|
||||
(mapconcat (lambda (flag-cell)
|
||||
(if (car flag-cell)
|
||||
(if mu4e-use-fancy-chars
|
||||
(cddr flag-cell) (cadr flag-cell) )
|
||||
""))
|
||||
`((,mu4e-search-full . ,mu4e-headers-full-label)
|
||||
(,mu4e-headers-include-related . ,mu4e-headers-related-label)
|
||||
(,mu4e-search-threads . ,mu4e-headers-threaded-label))
|
||||
""))
|
||||
(mapconcat
|
||||
(lambda (flag-cell)
|
||||
(if (car flag-cell)
|
||||
(if mu4e-use-fancy-chars
|
||||
(cddr flag-cell) (cadr flag-cell) ) ""))
|
||||
`((,mu4e-search-full . ,mu4e-headers-full-label)
|
||||
(,mu4e-headers-include-related . ,mu4e-headers-related-label)
|
||||
(,mu4e-search-threads . ,mu4e-headers-threaded-label)
|
||||
(,mu4e-headers-skip-duplicates . ,mu4e-headers-skip-duplicates-label))
|
||||
""))
|
||||
(name "mu4e-headers"))
|
||||
|
||||
(setq mode-name name)
|
||||
|
@ -1561,6 +1565,29 @@ user)."
|
|||
(symbol-name mu4e-headers-sort-direction))
|
||||
(mu4e-search-rerun)))
|
||||
|
||||
|
||||
(defun mu4e-headers-toggle-setting (&optional dont-refresh)
|
||||
"Toggle some aspect of headers display.
|
||||
When prefix-argument DONT-REFRESH is non-nill, do not refresh the
|
||||
last search with the new setting."
|
||||
(interactive "P")
|
||||
(let* ((toggles '(("fFull-search" . mu4e-search-full)
|
||||
("rInclude-related" . mu4e-headers-include-related)
|
||||
("tShow threads" . mu4e-search-threads)
|
||||
("uSkip duplicates" . mu4e-headers-skip-duplicates)))
|
||||
(toggles (seq-map
|
||||
(lambda (cell)
|
||||
(cons
|
||||
(concat (car cell) (format" (%s)" (if (cdr cell) "on" "off")))
|
||||
(cdr cell))) toggles))
|
||||
(choice (mu4e-read-option "Toggle setting " toggles)))
|
||||
(when choice
|
||||
(set choice (not (symbol-value choice)))
|
||||
(mu4e-message "Set `%s' to %s" (symbol-name choice) (symbol-value choice))
|
||||
(unless dont-refresh
|
||||
(mu4e-search-rerun)))))
|
||||
|
||||
|
||||
(defun mu4e~headers-toggle (name togglevar dont-refresh)
|
||||
"Toggle variable TOGGLEVAR for feature NAME. Unless DONT-REFRESH is non-nil,
|
||||
re-run the last search."
|
||||
|
|
Loading…
Reference in New Issue