Commit Graph

379 Commits

Author SHA1 Message Date
Dirk-Jan C. Binnema c856c750f5 mu4e-headers: fix mu4e-headers-toggle-setting 2022-12-05 23:57:18 +02:00
Mickey Petersen d43c0030e3 Ensure the linked headers buffer state is not lost 2022-12-03 17:13:20 +00:00
Mickey Petersen 37e8328975 mu4e-loading-mode is now a minor mode 2022-12-03 17:13:20 +00:00
Mickey Petersen 69a17bfcb9 Multiple buffer support and standardised window and buffer handling 2022-11-29 11:33:07 +00:00
Dirk-Jan C. Binnema 9673c02977 mu4e: headers: Fix copy-pasta m-h-thread-first-child-prefix
Fixes #2334.
2022-09-19 18:33:16 +03:00
Dirk-Jan C. Binnema e8177c7f04 mu4e: remove some dead code in headers 2022-09-14 23:26:00 +03:00
Dirk-Jan C. Binnema bf0af7465f Revert "m4e: remove disruptive characters from header fields"
This reverts commit 74d5902133 because it
broke the threading display.
2022-09-14 23:23:27 +03:00
Dirk-Jan C. Binnema 0de4754df6
Merge pull request #2332 from remvee/mu4e-headers-sanitize-field-values
mu4e: remove disruptive characters from header fields
2022-09-14 23:05:32 +03:00
Tassilo Horn 2dd5d9cfa1 Fix wrong cl-case usages where emacs 29 errors on byte-compilation now 2022-09-14 08:19:31 +02:00
Remco van 't Veer 74d5902133 m4e: remove disruptive characters from header fields
Sometimes fields (especially subject fields) contain disruptive
characters like new lines which will mess up the mu4e-headers view.
This changeset introduces `mu4e~headers-sanitize-field-value` to replace
all control characters by spaces.

Note, Unicode Left to Right Overrides do not cause any problems so they
are ignored.
2022-09-07 10:47:12 +02:00
Dirk-Jan C. Binnema 68753f9e84 mu4e: move all obsolete aliases to mu4e-obsolete
Unclutter the rest of the code a bit.
2022-08-20 14:24:24 +03:00
Dirk-Jan C. Binnema 3ba2c4ea08 mu4e-headers: do not nillify mu4e~view-message
In mu4e~headers-clear, do not set mu4e~view~message to nil; it may still
be in use.
2022-08-15 23:15:38 +03:00
Dirk-Jan C. Binnema d62fc66104 mu4e-headers: clear view message when clearing headers
This avoids showing an old message when clicking an empty headers
buffer.

Fixes #2299.
2022-07-16 16:56:55 +03:00
Dirk-Jan C. Binnema 9f3c80f4dd headers: reduced 'related' face priority
Don't use the 'related' face for messages which are *also* unread etc.
2022-06-26 11:25:11 +03:00
Dirk-Jan C. Binnema 1a84a57e05 mu4e-headers: implement mu4e-headers-toggle-setting
Make it easier to toggle various header-view settings and display them in the mode-line.
2022-06-11 12:07:50 +03:00
Dirk-Jan C. Binnema 3aaf29303e mu4e-headers: add calendar mark 2022-06-10 23:28:43 +03:00
Dirk-Jan C. Binnema 59022e066d mu4e: revamp emacs bookmark support
The support for emacs in bookmarks in mu4e-contrib has been broken for a while;
we removed it an now re-implement it as part of mu4e-proper.

Fixes: issue #2255.
2022-05-29 12:31:39 +03:00
Dirk-Jan C. Binnema a1f0c5e9eb mu4e: fix emacs-29 bytecompiler warnings
Wrong single quotes.
2022-05-28 00:51:08 +03:00
Dirk-Jan C. Binnema aea2f58c77 mu4e: add command mu4e-sexp-at-point
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.
2022-05-14 20:45:33 +03:00
Christophe Troestler 3caa22596b Reintroduce mu4e-headers-from-or-to-prefix to customize the prefix 2022-05-14 10:53:27 +02:00
Dirk-Jan C. Binnema cdd0256664 mu4e: Show 'related' messages with mu4e-related-face
And tweak some of the modeline labels.
2022-05-12 08:56:13 +03:00
Thierry Volpiatto 94312b969c mu4e: fix mu4e~headers-flag-str 2022-05-08 15:09:53 +03:00
Dirk-Jan C. Binnema 5e4fc603d9 mu4e: headers: add personal/list header flags 2022-05-08 14:49:43 +03:00
Dirk-Jan C. Binnema 48311ea18d mu/mu4e: tweak :list vs :mailing list 2022-05-07 20:48:21 +03:00
Dirk-Jan C. Binnema 80c9ffae1e mu/mu4e: use :mailing-list as the mailing-list property
In queries you can use list: as before

This helps for issue #2246.
2022-05-07 16:10:52 +03:00
Dirk-Jan C. Binnema 36165520ac mu4e/headers: refresh some of the message flag marks 2022-05-07 16:10:52 +03:00
Dirk-Jan C. Binnema ca08443f05 headers: turn off fancy chars for now
Temporary fix.
2022-05-07 14:21:23 +03:00
Dirk-Jan C. Binnema f320c56c15 mu4e/headers: restoring mailing-list display 2022-05-07 10:11:46 +03:00
Dirk-Jan C. Binnema 9b88cec317
Merge pull request #2046 from nagy/list-buffers-directory
Assign `list-buffers-directory`
2022-05-07 09:33:31 +03:00
Dirk-Jan C. Binnema 8844ddac23 mu4e: Update mu4e~headers-move
Fixes: #2339.
2022-05-06 22:17:53 +03:00
Dirk-Jan C. Binnema 45aec819f6 mu4e: updates for core changes
Deal with (name . email) --> (:name "boo" :email "boo@example.com")
Add support for the new "changed" field.
2022-05-05 01:40:17 +03:00
Dirk-Jan C. Binnema cc32257f1c mu4e: improve search/rendering benchmark
Include numbers for search from start to finish.
2022-04-16 16:20:38 +03:00
Dirk-Jan C. Binnema a66fd4dae4 mu4e-headers: warn earlier when message does not exist
check path before trying to show it.
2022-02-13 12:04:47 +02:00
Dirk-Jan C. Binnema 99993bea69 mu4e-headers: tweak mark-as-orphan option
Make 'first the default, and some whitespace fixes.
2022-02-06 10:44:47 +02:00
Dirk-Jan C. Binnema 769ad20c40
Merge pull request #2203 from mhcerri/mu4e-headers-thread-mark-as-orphan
mu4e-headers: Add mu4e-headers-thread-mark-as-orphan option
2022-02-06 10:41:28 +02:00
Dirk-Jan C. Binnema a4707afe12 mu4e: cleanups and flycheck fixes
- Remove some unused faces
- Fix some flycheck warnings
- Replace some `cl-` functions with `pcase` and `seq`
2022-01-23 14:27:00 +02:00
Marcelo Henrique Cerri 74437b6374 mu4e-headers: Add mu4e-headers-thread-mark-as-orphan option
To mark only the first message in the thread as orphan, allowing to
replicate the thread structure used by mutt and other clients.
2022-01-19 16:59:38 -03:00
Dirk-Jan C. Binnema a6b996d00e search: restore jump-to-message
Fixes: #2169.
2022-01-18 17:00:01 +02:00
Dirk-Jan C. Binnema a4e5e3adf5 mu4e: attempt to delete loading window upon mu4e-error
When there's a mu4e-error, opportunistically delete the 'Loading..' window.
2022-01-15 10:44:03 +02:00
Tassilo Horn c14ffa2918 Add eldoc support in headers views
When using a side-by-side split layout, i.e., headers left of message view, it
easily can happen that parts of the headers (like a longer subject) are not
visible without horizontal scrolling.  So eldoc to the rescue, which can echo a
customizable message (see `mu4e-headers-eldoc-format`) containing stuff like
subject, from, to, date, etc. in the echo area.
2021-12-15 21:21:41 +01:00
Daniel Nagy e1022fe9b1
Assign `list-buffers-directory` to search query
for mu4e-header buffers, this displays the search query in
`M-x list-buffers` instead of showing an empty path column.
2021-12-02 11:17:53 +01:00
Dirk-Jan C. Binnema aebec9714b mu4e-headers: save-excursion when updating message
Otherwise, the updated header may end up in the wrong buffer.

Fixes: #2172.
2021-10-31 11:42:50 +02:00
Dirk-Jan C. Binnema 5d155841a6 mu4e: Use mu4e-query-rewrite-function
The (new) mu4e-search-query-rewrite-function is a bit too long, let's keep the
old one.
2021-10-31 11:26:58 +02:00
Dirk-Jan C. Binnema bd40ffa718 mu4e-headers: fix updated check (for auto-update)
The check for # of updated messages was wrong; fix it.

Fixes: #2163.
2021-10-26 14:13:34 +03:00
Dirk-Jan C. Binnema 8ad5fd49c9 mu4e: support batched query results
Support the new batched query results from the mu server; these are much faster
to render (2-3x it seems).

Rearrange the code a bit to avoid byte-compiler warnings.

Obsolete mu4e-header-func, to be replaced by mu4e-headers-append-func.
2021-10-22 08:33:51 +03:00
Dirk-Jan C. Binnema f3e3cc9ca2 mu4e: always run mu4e-index-updated-hook after index
Fire mu4e-index-updated-hook after any index operations, where anything changed
or not. Add a new variable `mu4e-index-update-status' which can be used to see
what changed (if anything) in the last indexing operation.

Keep mu4e-message-changed-hook in place; it only fires when a message
changed (and when it is update).

Remove the long-obsolete `mu4e-msg-changed-hook'.
2021-10-22 08:33:51 +03:00
Dirk-Jan C. Binnema 701ca75536 mu4e/server: split message / metadata
Split message and metadata, so we can use pristine (possibly pre-cached)
messages. Update dependencies.
2021-10-20 22:41:48 +03:00
Dirk-Jan C. Binnema 5db8fdc49d mu4e: Do not defvar abbrev tables
I'm not quite sure why it was done in the first place, and it seems to have
unwanted side-effects. So let's turn it off and see if anything breaks.

Fixes: #2146.
2021-10-06 08:11:30 +03:00
Dirk-Jan C. Binnema a8ddc1728d
Merge pull request #2147 from tsdh/mu4e--update-buffer-fix
Fix refs to mu4e~update-buffer which has been renamed to mu4e--update-buffer
2021-09-30 15:39:17 +03:00
Dirk-Jan C. Binnema 4ecb59aed5
Merge pull request #2142 from tsdh/function-valued-mu4e-split-view
Allow a function as mu4e-split-view value
2021-09-30 15:38:43 +03:00
Tassilo Horn 1bf3054167 Fix refs to mu4e~update-buffer which has been renamed to mu4e--update-buffer 2021-09-29 21:21:35 +02:00
Tassilo Horn f7985103e0 Allow a function as mu4e-split-view value
This allows to have a function returning a window as value of
`mu4e-split-view`.  I'm using this patch since quite some time locally with the
following function.

```el
(defun th/mu4e-split-view ()
  (let* ((headers (mu4e-get-headers-buffer))
         (headers-win (and headers (get-buffer-window headers)))
         (view (mu4e-get-view-buffer))
         (view-win (and view (get-buffer-window view))))
    (cond
     ;; There's a view window, just use it.
     (view-win view-win)
     ;; Just one window, split sensibly, i.e., horizontally or
     ;; vertically depending on geometry.
     ((one-window-p) (split-window-sensibly))
     ;; Otherwise, use the tallest window.
     (t (car (sort (delq headers-win (window-list))
                   (lambda (a b)
                     (> (window-height a) (window-height b)))))))))

(setq mu4e-split-view #'th/mu4e-split-view)
```
2021-09-25 13:51:44 +02:00
Christophe Troestler a12b44f3a3 mu4e-headers: Avoid the obsolete command warning 2021-09-08 09:24:14 +02:00
Dirk-Jan C. Binnema f797acca6b mu4e-headers: support mailings lists
Need to require mu4e-lists.
2021-08-30 08:39:25 +03:00
Dirk-Jan C. Binnema dc14f93c06 mu4e: remove mu4e-utils
No longer needed; remove all traces.
2021-08-30 08:36:41 +03:00
Dirk-Jan C. Binnema a6514fd683 mu4e-server: rename from mu4e-proc
Rename mu4e-proc.el into mu4e-server.el

Rename mu4e~proc... into mu4e--server...

Update users, too.
2021-08-29 21:40:42 +03:00
Dirk-Jan C. Binnema 9157d9102d mu4e-utils: refactor into mu4e-helpers, separate files
Usurp more of the utils code than can be re-used without further dependencies in
helpers.

Split off specific parts in their own file.

After the helper/utils changes, update the rest of mu4e to take the changes into
account.
2021-08-29 21:40:42 +03:00
Dirk-Jan C. Binnema 3cd127d8ae mu4e-search: split off search functionality in minor-mode
Split off the search functionality from mu4e-headers.el into a new
mu4e-search.el.

Clean up things a bit and create a minor mode in which to add the keybindings.

Enable this in main/headers/view.
2021-08-29 20:30:29 +03:00
Dirk-Jan C. Binnema 035977a89a mu4e-context: make it a minor-mode
Add mu4e-context-minor-mode, for re-use in other parts of mu4e.

Update those parts + documentation.
2021-08-29 20:30:29 +03:00
Dirk-Jan C. Binnema e6bfdda2fe mu4e-headers: restore mark after update
Works-around, fixes: #2076.
2021-08-25 22:57:12 +03:00
Dirk-Jan C. Binnema 3ea20afe20
Merge pull request #2063 from nbarrientos/typo
Fix typo in docstring
2021-08-01 10:39:03 +03:00
Dirk-Jan C. Binnema 26bd64f4c9 mu4e-header: mark mu4e-headers-field-properties-function obsolete
The variable is an unused leftover.

Fixes: #2067.
2021-07-30 14:25:54 +03:00
Nacho Barrientos 02f3424280 Fix typo in docstring 2021-07-30 09:21:28 +02:00
Thierry Volpiatto 617e8023f6
Fix mu4e-headers-prev with invisible lines
Skip invisible text at BOL possibly hidden by
the end of another invisible overlay covering
previous EOL.

This patch affects people using mu4e-thread-folding-mode but change nothing
when using mu4e as it is.
2021-07-12 06:47:36 +02:00
DiGitHubCap d394295fe7 Fix #2044: broken header movement with visual-line-mode
This fixes the issue introduced by 50f6f539 where header navigation
would break when `visual-line-mode' was enabled. Previously,
`forward-line' was used in `mu4e-view-headers-next', which disregarded
visual lines and moved by logical lines, but this was changed to
`line-move', which moves by visual lines when `line-move-visual' is
non-nil (the default when `visual-line-mode' is enabled). Thus, when
the current header line was wrapped and a message was open in the
split view, `mu4e-view-headers-next' would move to the next visual
line in the headers buffer (the same message), and then jump back to
the start of the previous line, preventing switching to the next
message.

This would also throw off navigation when `mu4e-view-headers-next' was
used with a prefix argument, since it would move by visual lines and
not headers.

`line-move-visual' is therefore set to nil before using `line-move' to
prevent these issues.
2021-07-05 22:39:31 -04:00
Thierry Volpiatto 50f6f539f5
Ensure mu4e~headers-move honor line-move-ignore-invisible
This change is needed because forward-line doesn't honor this variable, more
generally visual lines.

Using `next-line` instead of `forward-line` allows this but it is more focused
on interactive use, so use `line-move` which handles visual lines without
warnings and return 0 or 1 just like `forward-line`.
2021-06-11 19:56:15 +02:00
Salman Mohammadi 539a946aa4
mu4e/*: fix license notice at the start of source files
At the start of mu4e/* files, the license has been wrongly attributed
to GNU Emacs instead of mu4e.

Fixes https://github.com/djcb/mu/issues/2019
2021-05-29 23:45:10 +02:00
Dirk-Jan C. Binnema cefd66159a mu4e-headers: use the mu engine thread-subject
Instead of handling in the headers (which were broken).  The messages
that are hidden are _slightly_ different than before.
2021-05-04 17:36:24 +03:00
Dirk-Jan C. Binnema d0d305b48f mu-headers: Tweak thread prefix
Avoids some confusion.
Fixes: #1994.
Fixes: #1933.
2021-05-02 23:30:32 +03:00
Christophe Troestler e00faf6cd3 mu4e-headers: Set the point in the correct frame after search
Fixes https://github.com/djcb/mu/issues/1977
2021-04-12 23:54:13 +02:00
Alex Bennée 285fdc5d5d mu4e/mu4e-headers: remove excess message output
When marking threads as read things are slowed down by echoing the
thread path to the mini-buffer. I assume this is left over debug but
if needed for something else should probably be a log call.
2021-03-31 10:04:03 +01:00
Dirk-Jan C. Binnema 2437dc27c9 mu4e: Replace mu4e-view-use-gnus with mu4e-view-use-old
Make mu4e-view-use-gnus obsolete (it's the default now), and add a
variable mu4e-view-use-old (which must be set before starting mu4e).

Update documentation / mentions.

Load the correct view when starting mu4e, so people can customize
e.g. the keymap.

Add some sanity checking.
2021-03-16 19:57:36 +02:00
Dirk-Jan C. Binnema 8d1175f511 mu4e: avoid some compiler warnings
(require) necessary things etc.

warnings for using "obsolete" code are still there since things should
work on emacs 25.3
2021-03-11 10:17:00 +02:00
Dirk-Jan C. Binnema fcf5a27347 mu4e-headers: Fix subthread marking
Fixes: #1930.
2021-03-04 21:58:25 +02:00
Tassilo Horn 7471536213 Read query with completion also when editing a bookmark
This wraps up some change that somehow didn't get applied when merging PR #1921
and also offers completion when editing a bookmark.

* mu4e/mu4e-headers.el (mu4e-headers-search): Read query with completion also
when editing a bookmark.
2021-02-17 16:26:47 +01:00
Dirk-Jan C. Binnema 9367a4dd95 mu4e-headers: sort threaded headers by date
In "threaded-mode", we only sort by date; reflect this in the UI.
2021-02-16 19:34:05 +02:00
Dirk-Jan C. Binnema 895f580b99 mu4e-headers: show search props in mode-line
I.e., whether a search is threaded/include-related/full.

There's high bike-shed potential, but let's not do that yet.
2021-02-12 20:39:49 +02:00
Dirk-Jan C. Binnema 2d91a9ab27 mu4e-headers: fix compiler warning
'free variable'

and use mu4e~ rather than mu4e--
2021-02-12 20:39:01 +02:00
Dirk-Jan C. Binnema 8405788f27 docs: update documentation
Update the mu-find man-page; update NEWS.org and mu4e.texi for the way
threading works.
2021-02-12 19:14:37 +02:00
Tassilo Horn 6632e6c7f3 mu4e-jump-to-maildir: offer editing the query when a prefix arg is given
Also refactor the now two usages of the query completion feature into a
separate function `mu4e-read-query'.
2021-02-03 14:49:05 +01:00
Dirk-Jan C. Binnema 9802ae9dc8 mu4e-headers: jump to message _outside_ save-excursion
Fixes: #1889.
2021-01-30 12:40:00 +02:00
Dirk-Jan C. Binnema 68a75c2c91 mu4e: make thread indicators a bit lighter
Make the symbols a bit less chunky
2021-01-22 23:24:53 +02:00
Dirk-Jan C. Binnema 362c53a7e7 mu4e: headers: fix some compiler warnings 2021-01-22 22:53:35 +02:00
Tassilo Horn 25beafbdd4 Implement completion for search query keywords and fixed values 2021-01-11 15:41:42 +01:00
Dirk-Jan C. Binnema aba0ab3629 mu4e: cosmetics 2020-12-06 13:20:13 +02:00
Thierry Volpiatto 0109172ad4
Use functions instead of lambdas in add-hook calls 2020-11-13 11:38:50 +01:00
Dirk-Jan C. Binnema f2e87ea2d4 mu4e: Add some timing info to mu4e-headers-precise-alignment
Add some time information. Things are a bit slower with the precise
alignment.
2020-10-26 11:23:09 +02:00
Dirk-Jan C. Binnema e3896de8a4 mu4e: add mu4e-headers-report-render-time
When mu4e-headers-report-render-time is set to non-nil, mu4e will report
on the time it took to render the headers view.
2020-10-24 14:51:04 +03:00
Dirk-Jan C. Binnema 4985f5c959 mu4e: Improve personal-address handling
Make mu4e-personal-address-p safe for being called with nil.

Upgrade code that used mu4e-user-mail-address-p to
mu4e-personal-address-p.

Update docs.

Add some more helpers to mu4e-message, and avoid some byte-compiler
warnings.
2020-10-19 22:39:25 +03:00
Yuri D'Elia 2967c49f5a Check for nil before calling mu4e-user-mail-address-p 2020-10-19 15:35:08 +02:00
Dirk-Jan C. Binnema 5e069d9a6f mu4e: support regexp patterns for personal addresses 2020-10-17 15:38:24 +03:00
Dirk-Jan C. Binnema 9bf32e720b mu4e: add mu4e-headers-precise-alignment defcustom
Precise alignment is nice, but also noticeably slower than the
old (crude) alignment; so make it optional and turned off by default for
now.
2020-10-11 12:35:48 +03:00
Jeff Filipovits 8ce966778a Properly align variable-pitch faces in header view 2020-10-06 21:50:57 +03:00
Jerry Snitselaar 3a8fc95bfc mu4e-headers: allow pipe through shell from headers view
Being able to pipe through shell from the headers view is
convenient for some use cases, so wire it up to work.

Resolves #1752

Signed-off-by: Jerry Snitselaar <jsnitsel@redhat.com>
2020-07-29 10:52:17 -07:00
Dirk-Jan C. Binnema 3715bb0c5e mu4e-headers: optimize header writing a bit
Try to make writing out the headers in the headers buffer slightly
faster.
2020-06-26 19:24:40 +03:00
Dirk-Jan C. Binnema 3dc4b93989 mu4e/server: implement mark-as-read for (view ...)
Instead of a multi-step process to display an unread message (ie. get
the original, notice it's unread, then update it, replace the message
with update one etc.), we now handle that in the (view /./..) command on
the server side.

Simplifies things, and is faster (which could be noticeable, esp. if
e.g. signature verification is part of the process)
2020-06-13 16:56:41 +03:00
Dirk-Jan C. Binnema b8a2d1fd6c mu4e-headers: require mule-util for truncate-string-ellipsis
Seems this is needed in some setups. Not fully clear why, but harmless.

Fixes #1717.
2020-06-07 18:40:48 +03:00
Dirk-Jan C. Binnema b672f6bc1d mu4e: avoid trouble with truncate-string-to-width
Treatment of the 'ellipsis' parameter is a bit unclear, gave errors in
some cases.

Fixes #1716
2020-06-03 21:24:14 +03:00
Dirk-Jan C. Binnema 73be015cd0 fixup: mu4e: some cleanups / bytecomp warning fixes 2020-05-28 10:21:16 +03:00
Dirk-Jan C. Binnema 1c88651f41 mu4e: remove easy-accounts / no-trash-providers for now
The code still has some problems, and the original author has moved
elsewhere (which is fine of course), but it's not ready enough for
1.4.... yet. So let's remove it for now and check again with 1.5+.
2020-05-18 18:56:15 +03:00