1
0
mirror of https://github.com/djcb/mu.git synced 2024-06-24 07:26:49 +02:00
Commit Graph

216 Commits

Author SHA1 Message Date
Thierry Volpiatto
c62dbb250c
Avoid looping through buffer-list when not needed 2020-11-16 08:59:45 +01: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
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
Philip K
29ad71fdf2 Marked mu4e-compose-context-policy type as greedy 2020-05-27 22:54:15 +03:00
Philip K
bd87dcfd9b Removed default case in mu4e-compose-crypto-message 2020-05-27 22:54:15 +03:00
Dirk-Jan C. Binnema
336cad35e6 Merged crypto-policy configuration into one variable 2020-05-27 22:53:41 +03:00
Dirk-Jan C. Binnema
c9a9d4be95 mu4e: handle compose-mail when mu4e is not yet running
We were trying to start mu4e asynchronously, then compose the mail but
this doesn't quite work the way some external packages expected, and
this would fail.

Fixes #1710
Fixes #1698
2020-05-27 22:34:43 +03:00
Dirk-Jan C. Binnema
a2d315df4c mu4e-compose: fix external use (`compose-mail')
Ensure compose-mail with mu works again, including passing various
parameters.

Fixes #1695.
2020-05-15 23:42:05 +03:00
Jonas Bernoulli
564d892701 Fix typos 2020-05-12 23:56:55 +02:00
Dirk-Jan C. Binnema
59ed21b01a mu4e: start mu4e in compose-handler, when necessary 2020-05-01 22:44:45 +03:00
Dirk-Jan C. Binnema
1919146b94 mu4e: centralize mode-line context setting code
Add mu4e-context-in-modeline to handle all setting of context in the
mode-line, to address some corner-cases with the current setup.
2020-05-01 22:44:45 +03:00
Dirk-Jan C. Binnema
edd47ced71 mu4e: use mu4e-attachment-dir for attaching, too
Use mu4e-attachment-dir also for attaching (and not just for extracting)
attachments; the default (current draft message dir) is not very useful.
2020-04-06 20:52:24 +03:00
Abdo Haji-Ali
c335914caa (widen) should be called before hiding the headers
Was also causing a corrupted header in some cases.
2020-03-29 22:06:29 +01:00
Dirk-Jan C. Binnema
83558be663 mu4e: set mu4e-compose-type earlier
So it can be used in hooks.

Fixes #1616.
2020-03-16 22:42:35 +02:00
Dirk-Jan C. Binnema
fa7518ab60 mu4e-compose: don't touch default-directory
we probably shouldn't touch that.
2020-02-26 21:56:26 +02:00
Dirk-Jan C. Binnema
d4c959ea90 mu4e-compose: clear undo-list after entering compose mode
Fixes #1525.
2020-02-26 21:11:06 +02:00
Dirk-Jan C. Binnema
e10fc21a9b mu4e: Rename 'Unnamed' sections 2020-02-18 23:49:50 +02:00
Jonas Bernoulli
74332947a0 mu4e: Split libraries into outline sections 2020-02-18 23:49:50 +02:00
Jonas Bernoulli
040c6578be mu4e: Place provide forms in their own sections
Use "_" as the title of that section so that it is less distracting
when sections are collapsed to get an overview of the library.

Using a separate section is useful because it reduces the risk of
accidentally into the middle of a library.
2020-02-18 23:49:50 +02:00
Jonas Bernoulli
83f0c9cea9 mu4e: Remove excess semicolons from library headers
Placing two semicolons on an otherwise empty line helps to logically
"connect" the surrounding "paragraphs", which in (only) some cases
makes sense.

Previously the three paragraphs of the permission statement were not
connected to each other like this, which is perfectly fine.  However
the preceding "This file is not part of GNU Emacs." line was connected
to the first paragraph, which does not make sense considering that the
latter is not connected two the second paragraph, which it relates to
more.

Once those two semicolons are gone, it also makes sense to remove
those from the second line.
2020-02-18 23:49:50 +02:00
Dirk-Jan C. Binnema
c09a9c4372 mu4e: update context handling
Make mu4e-context-autoswitch works a before we updated the pong-handler

Avoid unnecessary mu4e~start int he composer.
2020-02-18 22:38:40 +02:00
Jonas Bernoulli
c2ef02f57c mu4e: Begin each elisp summary line with three semicolons 2020-02-17 14:28:00 +01:00
Jonas Bernoulli
6790c0d015 mu4e: Fix indentation 2020-02-17 14:28:00 +01:00
Dirk-Jan C. Binnema
0d9d99df99 Merge pull request #1328 from pitti/fix-whitespace-deletion
mu4e: restrict deleting trailing whitespace to region
2020-02-09 00:24:32 +02:00
Dirk-Jan C. Binnema
e1e26d1da2 mu4e: update to use server maildir/database/addresses
Mkae mu4e-maildir and mu4e-personal-addresses obsolete, we get those
from the server.
2020-02-09 00:15:49 +02:00
Dirk-Jan C. Binnema
ac4f5f754a mu4e: remove maildir arg from proc-add/proc-sent calls
The server doesn't want that parameter anymore, so we can simplify
things a bit.
2020-02-02 00:23:34 +02:00
Antoine Levitt
dcb3025d1d revert indentation 2019-12-10 11:07:01 +01:00
Antoine Levitt
006c3399cb Push mark on beginning/end of buffer 2019-12-05 21:36:38 +01:00
Dirk-Jan C. Binnema
d7a5349a74 mu4e-comnpose: avoid jumping to headers when saving
Wrap the before-save-hook function in a save-excursion.

(HT: Joost Kremers)
2019-10-23 20:21:24 +03:00
Dirk-Jan C. Binnema
798aa12a34 mu4e-compose: Generate message-id for drafts
Ensure even drafts have a message-id, since the querying machinery wants
that.
2019-10-20 16:13:32 +03:00
Thierry Volpiatto
9ddd035a1e
Completely use cl-lib and lexical-binding
Previously both cl-lib.el and cl.el were used, now use only cl-lib.el.
Use lexical-binding where needed instead of requiring cl just for
`lexical-let`.
Replace some add-to-list with cl-pushnew as add-to-list is not
recommended in lisp program and anyway doesn't work properly with
lexical binding.
2019-09-14 12:39:51 +02:00
Dirk-Jan C. Binnema
ca699324a3 mu4e: mu4e-compose: Fix configuration choices
End the choice group in the right place.
2019-08-10 10:53:52 +03:00
Paul W. Rankin
ca7449c575
Balance parens in mu4e-compose-context-policy
Fixes unbalanced parens in mu4e-compose-context-policy, which prevents Custom mode UI working.

Using standard indentation helps prevent missing these little issues.
2019-08-09 18:20:33 +10:00
Dirk-Jan C. Binnema
2beb2eda02 mu4e-contacts: cleanups, save-match-data
Whitespace cleanups

Flycheck cleanups

Save the match data for (after|before)-save-hook
2019-05-25 17:38:58 +03:00
djcb
0d33e64dc9 mu4e: don't sort contacts in completion handler
mu4e~sort-contacts-for-completion no longer exists.
2019-05-13 13:29:25 +03:00
Dirk-Jan C. Binnema
f57381bf4a
Merge pull request #1320 from jabranham/replace-cl-cl-lib
mu4e: Replace cl with cl-lib
2019-02-02 13:37:50 +02:00
Christophe Troestler
0746a4affe Set mml-enable-flowed according to mu4e-compose-format-flowed
Fixes https://github.com/djcb/mu/issues/1358
2019-01-29 10:35:06 +01:00
Alex Branham
2674ca5583
mu4e: Replace cl with cl-lib 2019-01-04 16:03:58 -06:00
djcb
9352219dcf mu4e: mark compose buffers as non-modified later
To avoid marking user-unchanged buffers as modified.
2018-12-12 21:35:46 +02:00
djcb
69ed3498bb mu4e: mu4e-index-updated-hook should not depend on mu4e~contacts 2018-11-04 13:20:20 +02:00
Philipp Ittershagen
4fe4345b88 mu4e: restrict deleting trailing whitespace to region
If no region is selected, mu4e-fill-paragraph will delete trailing whitespace on
all lines in the buffer.  This might not be desired, e.g. when adding a
signature to the mail which is delimited by the line '-- '.
2018-10-10 14:27:05 +02:00
djcb
9bf1670aa1 mu4e: work-around for missing contacts 2018-06-13 18:19:13 +03:00
Alex Branham
39ec6a0417
Fix call to make-obsolete-variable 2018-05-18 15:52:41 -05:00
John Whitbeck
76c0f44c51 mu4e: ensure sent dir is created with proper maildir structure
offlineimap will only sync directories that have 'cur', 'tmp', and
'new' sub-directories. Currently, mu4e can end up in a state where the
sent folder only has the 'cur' directory and is therefore not synced.

Upon saving a sent email, emacs' write-file will prompt to create
parent directories if the sent maildir does not already exist. This
results in the following directory structure:

<mu4e-maildir>/<sent>/cur/<email>

Note that the 'tmp' and 'new' directories are missing. This commit
ensures that they are always created.
2018-02-08 20:35:43 -08:00
djcb
a4fefc7256 mu4e: make mu4e-compose-crypto-reply-plain-policy nil by default
Making it sign by default is a bit too aggressive.
2017-10-28 11:23:57 +03:00
Dirk-Jan C. Binnema
fe04e6d820 Merge pull request #1118 from MaximeMaW/master
mu4e: Allow to set the reply policy in a smart manner
2017-10-26 23:14:08 +03:00
maxime
e761f74f19 Warn the user about obsolete crypto-policy variable 2017-09-02 09:24:11 -07:00
maxime
5c6561873e Warning the used abot obsolete variable
Following code review (PR 1118):
- Warn the user about the fact that the
'mu4e-compose-crypto-reply-policy' variable is deprecated
- Removed a leftover debug message
- Edited typo in the name of the new variable
2017-09-02 09:13:57 -07:00
djcb
cb0025b352 mu4e: unbreak abbrevs in compose mode
Fixes issue #1119.
2017-09-02 15:56:29 +03:00
maxime
d343f7f538 Allow to set the reply policy in a smart manner
Depending on whether the original email was encrypted, one can set
different reply policies.
2017-08-26 19:47:36 -07:00
Vladimir Sedach
9420d088eb mu4e: Added new mu4e-split-view mode: single-window
Single-window mode is meant to minimize mu4e window operations (opening,
killing, resizing, etc) and buffer changes, while still retaining the
view and headers buffers. In addition, it replaces mu4e main view with a
minibuffer prompt containing the same information.
2017-05-31 20:52:59 -07:00
djcb
abe732111a mu4e: cosmetics 2017-04-09 11:33:21 +03:00
djcb
98b998b86d mu4e: remove mu4e~compose-browse-url-mail
Instead, rely on the common browse-url-mail, which does the right thing
after
  (setq mail-user-agent 'mu4e-user-agent)
2017-04-08 15:25:38 +03:00
djcb
895a78ba7b mu4e: handle cc in mu4e~compose-browse-url-mail
Handle Cc fields in mu4e~compose-browse-url-mail, as per issue #1025.
2017-04-08 14:55:24 +03:00
djcb
fb09af4215 mu4e: compose/format-flowed: don't enable fringe indicators
We were enabling the fringe indicators by default in
mu4e-compose-format-flowed; let's not do that and leave it to the
user (they can use add-hook etc.)
2017-04-02 16:27:53 +03:00
Ronald Evers
6ce126ca69 Fix typo in mu4e-sent-messages-behavior docs 2017-03-26 21:49:36 +02:00
djcb
21b637f291 mu4e: minor cleanup in mu4e-compose 2017-03-18 10:24:51 +02:00
djcb
7d895dbd69 mu4e: widen buffer after save
Otherwise, undo won't work. Fixes issue #1047.
2017-03-18 10:07:12 +02:00
Dirk-Jan C. Binnema
430f17af65 Merge pull request #1003 from Chris00/elec-quote
mu4e: Make electric-quote-(local-)mode work when composing emails
2017-01-30 20:49:56 +02:00
Christophe Troestler
bf2f2ee12a Do not show the electric quote menu if Emacs is too old 2017-01-24 23:21:55 +01:00
Christophe Troestler
a9cbead5af Add a menu entry for electric-quote-local-mode 2017-01-24 23:21:55 +01:00
Christophe Troestler
9cb0772993 Make electric-quote-(local-)mode work when composing emails
electric-quote-(local-)mode used to have no effect because
`comment-use-syntax' was left to `undecided' so the electric mode was
not enabled for paragraphs.

Fixes https://github.com/djcb/mu/issues/997
2017-01-24 23:21:55 +01:00
djcb
475fec0d16 mu4e: treat 'traditional as 'above 2017-01-24 18:48:27 +02:00
djcb
1c4caf198d mu4e: try to honor `message-cite-reply-position'
Try to respect gnu's `message-cite-reply-position' by placing the cursor
in the right position.
2017-01-22 22:11:30 +02:00
Krzysztof Jurewicz
f060cb8196 mu4e: Add possibility to forward messages as attachments
This commit adds a global variable
mu4e-compose-forward-as-attachment. To enable choosing forwarding
method on a per-message basis would probably require either:

• changing the mu server backend so that it distinguishes between
  inline forwarding and forwarding as attachment;
• changing the mu server backend so that it doesn’t return attachments
  at all and making both inline and as attachment forwarding via
  MIME (and also making mu4e actually display MIME-enclosed inline
  emails).
2017-01-13 16:30:25 +01:00
Matt Price
ad738b88b0 force use of strings for other-header in mu4e~compose-mail
org-mime and potentially other users of `compose-mail' pass a parameter
`other-headers', an alist of the form ((symbol . string)).
`mu4e~compose-mail' sends this parameter to message-add-header, which
appears to expect a string instead.  We therefore loop through
other-headers and instead pass a string to message-add-header for each
element of other-headers.
2016-11-30 14:55:23 -05:00
djcb
34cd624023 mu4e: fix some defcustoms
There weren't quite right.
2016-11-24 00:33:06 +02:00
Dirk-Jan C. Binnema
b981a7804f Merge pull request #934 from antoine-levitt/master
mu4e: Don't erase global-mode-string with context label, but add to it
2016-11-05 10:52:35 +02:00
djcb
e1092c5f27 mu4e: restore mu4e-compose-type in compose-buffer
Seems the `mu4e-compose-type' is always nil when we enter the
compose (it is set when executing the pre-hooks though). It can be
useful in the compose buffer as well, so restore it.
2016-11-05 10:18:23 +02:00
Antoine Levitt
c0726d92a0 do not rename current message buffer if the name has not changed 2016-10-31 16:28:25 +01:00
Antoine Levitt
bc13cfda35 dont erase global-mode-string with context label, but add to it 2016-10-26 08:20:25 +02:00
djcb
c419bca577 mu4e: set mu4e-compose-type earlier
Set mu4e-compose-type before invoking the "pre" hook, so that it can be
used there.
2016-09-06 18:29:05 +03:00
djcb
bca649cb32 mu4e: make mu4e-compose-type a public variable
Replace mu4e~compose-type so it can be used in pre-hooks and the like.
2016-09-06 09:15:17 +03:00
djcb
f1aedf14ab mu4e: remove some debugging output 2016-09-05 15:07:44 +03:00
djcb
37f11d642f mu4e: improve mu4e-fill-paragraph
Improve mu4e-fill-paragraph for some corner-cases where there is
trailing whitespace. Patch by holtzermann17.
2016-08-27 19:06:10 +03:00
Christophe Troestler
744f288431 Fix typo 2016-08-12 00:05:12 +02:00
djcb
c27471f4fa mu4e: compose: auto-crypt/sign crypto replies
When replying to an encrypted message, sign/encrypt by default; see
  mu4e-compose-crypto-reply-policy.

(Issue #865)
2016-07-12 00:25:05 +03:00
djcb
a24058040f mu4e: fix typo in face description 2016-07-12 00:15:29 +03:00
djcb
1e963c1779 mu4e: update font-locking for mu4e-compose-mode
mu4e was making a vain attempt to fontify the compose buffer; this
doesn't work because message (from which mu4e-compose-mode derives) uses
font-locking for that.

So, instead, remap the message-mode faces to the ones used for mu4e.
2016-07-09 23:42:58 +03:00
djcb
b31ba3dd81 mu4e: seems the keymaps might not be defined (workaround)
Users were seeing:
,----
| Debugger entered--Lisp error: (wrong-type-argument keymapp nil)
|   signal(wrong-type-argument (keymapp nil))
|   define-key-after(nil [mu4e-hard-newlines] (menu-item "Format=flowed"
| mu4e-toggle-use-hard-newlines :button (:toggle . use-hard-newlines) :help
| "Toggle format=flowed" :visible (eq major-mode (quote mu4e-compose-mode))
| :enable mu4e-compose-format-flowed) sep)
|   mu4e-compose-mode()
|   byte-code("..." [original-msg mu4e-compose-parent-message
| mu4e-compose-context-policy winconf includes att make-local-variable put
| permanent-local t mu4e~context-autoswitch run-hooks mu4e-compose-pre-hook
| current-window-configuration nil (mu4e-draft-open compose-type
| original-msg) ((quit (byte-code "..." [winconf set-window-configuration
| mu4e-message "Operation aborted" throw --cl-block-mu4e~compose-handler--
| nil] 3))) mu4e~draft-insert-mail-header-separator mml-attach-file plist-get
| :file-name :mime-type mu4e~compose-set-friendly-buffer-name
| set-buffer-modified-p (new forward) message-goto-to message-goto-body
| mu4e~compose-type mu4e~compose-hide-headers mu4e-compose-mode delete-frame
| --dolist-tail-- compose-type mu4e-compose-in-new-frame message-exit-actions
| message-postpone-actions] 6)
|   mu4e~compose-handler(new)
|   mu4e-compose(new)
|   mu4e-compose-new()
`----
2016-07-03 23:29:05 +03:00
Thierry Volpiatto
fa2427e6f9 Fix window restoration when C-g'ing on reply.
* mu4e/mu4e-compose.el (mu4e~compose-handler):
Save and restore window config.
2016-06-09 07:22:56 +02:00
djcb
ed16684f45 mu4e: cosmetics 2016-06-08 19:25:52 +03:00
Christophe Troestler
834b0671c8 Add a menu entry to attach captured messages
Without this menu entry, one has to remember the command name which is
not convenient.  This entry also helps to discover the "capture" feature.
2016-05-10 21:55:54 +02:00
Christophe Troestler
d063889e4c Set mu4e-compose-format-flowed to nil by default
Requested by Dirk-Jan C. Binnema <djcb@djcbsoftware.nl> not to disturb
existing users.
2016-05-07 18:12:10 +02:00
Christophe Troestler
af523cd05a Add the menu entry in the function defining the mode
This ensures that `(lookup-key message-mode-map [menu-bar text])'
returns a valid keymap.
2016-05-07 03:28:09 +02:00
Christophe Troestler
d2ae534ad8 With use-hard-newlines, M-q reformat the paragraph as a single line 2016-05-07 02:58:17 +02:00
Christophe Troestler
b6a1e1cef8 Add a menu entry to toggle format=flowed 2016-05-07 02:58:17 +02:00
Christophe Troestler
0d939f6852 By default, compose messages as format=flowed
Fixes https://github.com/djcb/mu/issues/836
2016-05-07 02:58:17 +02:00
djcb
975d270dd3 mu4e: don't strip references for fwd messages
Don't remove the references header for forwarded message because there's
no "in-reply-to"
2016-03-24 20:27:47 +02:00
djcb
2b0d75b295 mu4e: don't use message-kill-actions for closing frames
Seems it is handled by the other actions already, and kills one-too-many
frames.
2016-02-21 16:33:55 +02:00
djcb
a0f0e95344 mu4e: better handling of closing compose frames
Use message-mode actions to close the compose
frame (`mu4e-compose-in-new-frame') whenever we're finished editing a
message.
2016-02-20 12:25:21 +02:00
djcb
b72db626f3 mu4e: implement resending
Implement the special compose type 'resend', for resending existing
messages, possibly with changes.
2016-02-16 08:29:06 +02:00
Lukas Fürmetz
46ca26457a mu4e: restore window-layout after `message-kill-buffer'
Replaces `message-kill-buffer' with `mu4e-message-kill-buffer'. This new
function is a wrapper around the original. It restores the window-layout
of mu4e after cancelling a message in mu4e-compose-mode.
2016-02-02 21:08:38 +02:00
djcb
144e2a8f1b mu4e: Contact completion - better sorting / display
Improve the contact-sorting algorithm, and make it better cooperate with
completion-at-point functions.

Also deal better with broken rewritten contacts, and document how
rewriting should done (docstrings and reference doc).
2016-01-09 21:27:52 +02:00
djcb
b373f8e5f0 mu4e: context policy tweaking
As discussed in issue #751, mu4e should tried to accommodate some
different ways of choosing the context.

We add a new policy `ask-if-none', that will only query the user if
there is no context yet; this is the new default for
mu4e-context-policy, i.e. what happens when entering the main view.

The default policy for mu4e-compose-context-policy is now `ask',
i.e. ask if none of the contexts match.

The idea is for the defaults to ask when we don't know a context, and we
can't determine one using the match functions; this is probably the
least confusing. When user gets annoyed by too many question, they can
tweak the behavior to their liking. I.e. 'ask questions first, shoot
later'

Document all of this.
2016-01-03 13:29:19 +02:00
djcb
8e43e8cac3 mu4e: use substring when completing contacts
Make substring the first completion strategy.
2015-12-30 17:42:08 +02:00
djcb
a085c881ef mu4e: don't change context at startup when there is one
Since people often go start/stop mu4e, we shouldn't try to pick a
default context if one is already set.
2015-12-30 17:39:59 +02:00
djcb
f645a12075 mu4e: improve sorting of contacts for completion
set up the extra machinery for making sure emacs does not try to re-sort
our already-sorted contacts.... Also try to improve the sorting strategy
itself.
2015-12-29 18:53:57 +02:00
djcb
113c024632 mu4e: implement context-policies
Allow setting a policy about what context to choose when starting mu4e
and composing a message. Basically:

When you have defined contexts and you start mu4e it decides which
context to use based on the variable `mu4e-context-policy';
similarly, when you compose a new message, the context is determined
using `mu4e-compose-context-policy'.

These policies can be one of the following:
- a symbol always-ask: unconditionally ask the user what context to pick

The other choices only apply if none of the context matches (i.e., if
none of the contexts' match-functions returns t:

- symbol ask: ask the user
- a symbol pick-first: pick the first context
- nil: don't change the context
2015-12-23 22:01:51 +02:00
djcb
60192a60d2 mu4e: by default, make changing to current context a no-op
Update mu4e-context-switch to not call the enter/leave functions when
'changing' to the current context. However, calling those functions (if
defined) can be force through a prefix arg. Document this.

Make mu4e-context-determine recognize 'policies', i.e. what to do when
no context matches. This part is WIP.
2015-12-21 22:24:16 +02:00