Commit Graph

187 Commits

Author SHA1 Message Date
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
djcb d3dbed6c1f mu4e: make global-mode-string buffer-local
Make `global-mode-string' local in all buffers where we use it, so we
don't leak the "context" string outside mu4e.

Also add the context string to the compose buffer's modeline.

This fixes #740.
2015-12-19 10:14:49 +02:00
Foivos S. Zakkak 0032ccf73c When mu4e-context-determine fails, prompt user 2015-12-16 16:51:54 +02:00
djcb 40b8fe138b mu4e: context: auto-detect context using the match function
When composing a new message, attempt to auto-detect the context for
that, using the context's 'match-func'.
2015-12-13 17:46:02 +02:00
djcb a2409b62ca mu4e: when in-reply-to: is removed, remove references: too
When user removes the In-Reply-To header, also remove the (hidden)
References header when sending the message, effectively making the
message appear at the top-level.

Mention in the doc, NEWS.
2015-11-22 12:17:36 +02:00
Foivos S. Zakkak 2cf741e996 Make `mu4e-compose-in-new-frame` always kill frame
When `message-kill-buffer-on-exit` was set to nil mu4e would not close
the new frame.  Closing the new frame should be independent of killing
the buffer.  This patch corrects this.

(relates to #615)
2015-06-07 14:00:20 +03:00
Foivos S. Zakkak 51628e2229 Fix else case in if statement of #615 2015-05-25 16:50:33 +03:00
Pan Jie 64959382b9 Mu4e: add support for composing in a new frame
Adds the variable mu4e-compose-in-new-frame and when set to t, message
are composed in a new frame rather than the current one.
2015-05-24 11:48:37 +03:00
djcb 097b4232e2 mu4e: compose: tells us what you saved when saving a message
Provide the number of lines saved in a draft message
2015-03-21 15:23:35 +02:00
djcb 64ed6e71c1 mu4e: append `substring' to the completion-styles for address-completion 2014-12-06 14:23:55 +02:00
djcb fcdb2c1a04 mu4e: clean up address completion 2014-11-30 16:29:10 +02:00
Foivos S. Zakkak c5fd36a67f Fix replying to gpg encrypted mails (#186) 2014-10-15 02:42:57 +03:00
djcb 34f42e799b mu4e: unbreak sending mail when gnus-agents is unplugged in gnus (#462) 2014-10-12 10:36:33 +03:00
djcb 54a6ef7401 Some documentation fixes
(Thanks to Joe Corneli)
2014-09-23 02:40:35 +03:00
Thierry Volpiatto 2382abddf3 * mu4e/mu4e-compose.el (mu4e~compose-handler): Kill buffer on quit, transformed in defun*. 2014-06-18 15:33:55 +02:00
djcb 5ab30cbc09 * mu4e: don't add rogue \n where re-editing 2014-05-04 10:51:44 -07:00
Thierry Volpiatto 1b8373f438 * mu4e/mu4e-compose.el (mu4e-sent-handler): Honour `message-kill-buffer-on-exit'. 2014-03-28 13:38:46 +01:00
Damien Cassou 8a1d00c436 Use message-signature-separator 2014-01-09 18:18:36 +01:00
Damien Cassou ae25096db6 Better `M-<` and `M->` when composing a message.
This commit provides the following 2 functions that help the user go to
interesting positions at the beginning and end of the message being
composed. These 2 functions are bound to the standard `M-<` and `M->`
keys (or more precisely, to the keys where 'beginning-of-buffer and
'end-of-buffer are bound).

mu4e-compose-goto-top: Go to the beginning of the message or buffer.
  Go to the beginning of the message or, if already there, go to the
  beginning of the buffer.

mu4e-compose-goto-bottom Go to the end of the message or buffer.
  Go to the end of the message (before signature) or, if already there,
  go to the end of the buffer.
2014-01-09 18:16:36 +01:00
djcb 44e92305e3 * mu4e: make sure the sent-hook is only defined as *local* in mu4e-compose 2013-10-22 20:34:43 +03:00
djcb 9c8101d949 * mu4e: centralize some of the fontification code; cleanup signature support 2013-10-20 15:41:47 +03:00
Thierry Volpiatto aa7592d1c3 * mu4e/mu4e-compose.el (mu4e~compose-handler): Wait buffer setup before calling mu4e-compose-mode. 2013-10-17 15:15:14 +02:00
djcb a3b3bafc81 * mu4e: update mu4e-compose-pre-hook documentation 2013-09-28 10:36:57 -07:00
djcb 15936cfd9a * cosmetics 2013-06-16 23:06:38 +03:00
djcb ec28eb340f * mu4e: widen before sending messages 2013-06-14 08:42:44 +03:00
djcb 59d0a30ba6 * make mu4e-compose-hidden-headers a public defvar; implements issue #237 2013-06-08 17:54:35 +03:00
djcb 92ec6f7584 * mu4e-compose: unset the new flags when forwarding/replying to messages; fixes #214. 2013-05-27 04:58:47 -07:00
djcb 52d89bd1f8 * mu4e: fix warning 2013-05-26 12:35:14 +03:00
djcb f01f85d7e7 * mu4e: hide headers again after (widen) 2013-05-22 08:06:19 +03:00
djcb 222d8c3627 * improve message-composition / draft handling 2013-05-21 08:05:06 +03:00