* [PATCH 1/2] emacs: add defsubst notmuch-address--message-insinuated
@ 2015-08-26 20:07 Tomi Ollila
2015-08-26 20:07 ` [PATCH 2/2] emacs: add function to resend message to new recipients Tomi Ollila
2015-08-30 12:28 ` [PATCH 1/2] emacs: add defsubst notmuch-address--message-insinuated David Bremner
0 siblings, 2 replies; 9+ messages in thread
From: Tomi Ollila @ 2015-08-26 20:07 UTC (permalink / raw)
To: notmuch; +Cc: tomi.ollila
This "inline function" is currently used in
notmuch-address-message-insinuate (to not enable address completion if
it is already enabled). In some functions later this will be called
to know whether address completion can be used there, too.
---
Previous version of this 2-patch series is at
id:1423229911-14784-1-git-send-email-too@guru.guru-group.fi
emacs/notmuch-address.el | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/emacs/notmuch-address.el b/emacs/notmuch-address.el
index fde3c1b2b861..6c93b2a7a820 100644
--- a/emacs/notmuch-address.el
+++ b/emacs/notmuch-address.el
@@ -54,8 +54,11 @@ (defvar notmuch-address-message-alist-member
(defvar notmuch-address-history nil)
+(defsubst notmuch-address--message-insinuated ()
+ (memq notmuch-address-message-alist-member message-completion-alist))
+
(defun notmuch-address-message-insinuate ()
- (unless (memq notmuch-address-message-alist-member message-completion-alist)
+ (unless (notmuch-address--message-insinuated)
(setq message-completion-alist
(push notmuch-address-message-alist-member message-completion-alist))))
--
2.0.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 2/2] emacs: add function to resend message to new recipients
2015-08-26 20:07 [PATCH 1/2] emacs: add defsubst notmuch-address--message-insinuated Tomi Ollila
@ 2015-08-26 20:07 ` Tomi Ollila
2015-08-30 12:56 ` David Bremner
2015-08-30 12:28 ` [PATCH 1/2] emacs: add defsubst notmuch-address--message-insinuated David Bremner
1 sibling, 1 reply; 9+ messages in thread
From: Tomi Ollila @ 2015-08-26 20:07 UTC (permalink / raw)
To: notmuch; +Cc: tomi.ollila
The new function notmuch-show-message-resend re-sends
message to new recipients using #'message-resend.
Recipients are read from minibuffer as a comma-separated
string (with some keyboard support including tab completion).
Final confirmation before sending is asked.
---
Note that notmuch-show-message-resend is not (yet) bound to any
keybindings in notmuch-show-mode-map (nor notmuch-tree-mode-map!).
I remember that Emacs VM might have had 'b' bound to this functionality
but I cannot be sure. A few weeks ago I looked gnus, rmail & mh-e to
figure out whether 'b' would have been bound to similar functionality
there but I cannot find it...
A future patch will be done when we've decide where to bind this.
Also, I "simplified" keybindings in notmuch-address-from-minibuffer --
latest version used to bind ',' in both minibuffer-local-map and
minibuffer-local-completion-map to do some magic. I'll send an RFC
patch having that later.
emacs/notmuch-address.el | 19 +++++++++++++++++++
emacs/notmuch-show.el | 8 ++++++++
2 files changed, 27 insertions(+)
diff --git a/emacs/notmuch-address.el b/emacs/notmuch-address.el
index 6c93b2a7a820..b08a78f2db46 100644
--- a/emacs/notmuch-address.el
+++ b/emacs/notmuch-address.el
@@ -119,4 +119,23 @@ (defun notmuch-address-locate-command (command)
;;
+(defun notmuch-address-from-minibuffer (prompt)
+ (if (not (notmuch-address--message-insinuated))
+ (read-string prompt)
+ (let ((rmap (copy-keymap minibuffer-local-map))
+ (omap minibuffer-local-map))
+ ;; Configure TAB to start completion when executing read-string.
+ ;; "Original" minibuffer keymap is restored just before calling
+ ;; notmuch-address-expand-name as it may also use minibuffer-local-map
+ ;; (completing-read probably does not but if something else is used there).
+ (define-key rmap "\C-i" (lambda () ;; TAB
+ (interactive)
+ (let ((enable-recursive-minibuffers t)
+ (minibuffer-local-map omap))
+ (notmuch-address-expand-name))))
+ (let ((minibuffer-local-map rmap))
+ (read-string prompt)))))
+
+;;
+
(provide 'notmuch-address)
diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el
index 848ec2c870c4..62aa696224ca 100644
--- a/emacs/notmuch-show.el
+++ b/emacs/notmuch-show.el
@@ -1806,6 +1806,14 @@ (defun notmuch-show-forward-message (&optional prompt-for-sender)
(with-current-notmuch-show-message
(notmuch-mua-new-forward-message prompt-for-sender)))
+(defun notmuch-show-resend-message (addresses)
+ "Resend the current message."
+ (interactive (list (notmuch-address-from-minibuffer "Resend to: ")))
+ (when (yes-or-no-p (concat "Confirm resend to " addresses " "))
+ (notmuch-show-view-raw-message)
+ (message-resend addresses)
+ (bury-buffer)))
+
(defun notmuch-show-next-message (&optional pop-at-end)
"Show the next message.
--
2.0.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 1/2] emacs: add defsubst notmuch-address--message-insinuated
2015-08-26 20:07 [PATCH 1/2] emacs: add defsubst notmuch-address--message-insinuated Tomi Ollila
2015-08-26 20:07 ` [PATCH 2/2] emacs: add function to resend message to new recipients Tomi Ollila
@ 2015-08-30 12:28 ` David Bremner
2015-08-30 15:02 ` Tomi Ollila
1 sibling, 1 reply; 9+ messages in thread
From: David Bremner @ 2015-08-30 12:28 UTC (permalink / raw)
To: Tomi Ollila, notmuch; +Cc: tomi.ollila
Tomi Ollila <tomi.ollila@iki.fi> writes:
> +(defsubst notmuch-address--message-insinuated ()
> + (memq notmuch-address-message-alist-member message-completion-alist))
> +
Is there some advantage to defsubst other than (maybe?) performance? It
just seems like one more construct for people to get up to speed with
the codebase.
d
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 2/2] emacs: add function to resend message to new recipients
2015-08-26 20:07 ` [PATCH 2/2] emacs: add function to resend message to new recipients Tomi Ollila
@ 2015-08-30 12:56 ` David Bremner
2015-08-30 14:58 ` Tomi Ollila
0 siblings, 1 reply; 9+ messages in thread
From: David Bremner @ 2015-08-30 12:56 UTC (permalink / raw)
To: Tomi Ollila, notmuch
Tomi Ollila <tomi.ollila@iki.fi> writes:
> The new function notmuch-show-message-resend re-sends
> message to new recipients using #'message-resend.
>
> Recipients are read from minibuffer as a comma-separated
> string (with some keyboard support including tab completion).
>
I couldn't get the tab completion to work, at least if I go
M-x notmuch-show-resend-message
nor when evaluating (notmuch-address-from-minibuffer "foo:")
Do I need to bind a key to test this?
> I remember that Emacs VM might have had 'b' bound to this functionality
> but I cannot be sure. A few weeks ago I looked gnus, rmail & mh-e to
> figure out whether 'b' would have been bound to similar functionality
> there but I cannot find it...
mutt uses 'b'. AFAICT, gnus uses some sequence ending in b to resend
bounced messages (i.e. from mailer-daemon).
quoting the manual:
S D b
If you have sent a mail, but the mail was bounced back to you for
some reason (wrong address, transient failure), you can use this
command to resend that bounced mail
(gnus-summary-resend-bounced-mail). [...]
S D r
Not to be confused with the previous command,
gnus-summary-resend-message will prompt you for an address to send
the current message off to, and then send it to that place. [...]
Be that as it may, we already use 'r' for reply, and I'm not sure we
want to go (more) in the way of multi-letter sequences.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 2/2] emacs: add function to resend message to new recipients
2015-08-30 12:56 ` David Bremner
@ 2015-08-30 14:58 ` Tomi Ollila
2015-08-31 1:42 ` David Bremner
0 siblings, 1 reply; 9+ messages in thread
From: Tomi Ollila @ 2015-08-30 14:58 UTC (permalink / raw)
To: David Bremner, notmuch
On Sun, Aug 30 2015, David Bremner <david@tethera.net> wrote:
> Tomi Ollila <tomi.ollila@iki.fi> writes:
>
>> The new function notmuch-show-message-resend re-sends
>> message to new recipients using #'message-resend.
>>
>> Recipients are read from minibuffer as a comma-separated
>> string (with some keyboard support including tab completion).
>>
>
> I couldn't get the tab completion to work, at least if I go
>
> M-x notmuch-show-resend-message
>
> nor when evaluating (notmuch-address-from-minibuffer "foo:")
>
> Do I need to bind a key to test this?
Nope. both of the above should work -- and worked for me just now
(this is how I tested just now:
emacs -q -L $PWD/emacs -l emacs/notmuch.el -f notmuch --eval '(progn (setq notmuch-address-command "nottoomuch-addresses.sh") (notmuch-address-message-insinuate))'
)
>> I remember that Emacs VM might have had 'b' bound to this functionality
>> but I cannot be sure. A few weeks ago I looked gnus, rmail & mh-e to
>> figure out whether 'b' would have been bound to similar functionality
>> there but I cannot find it...
>
> mutt uses 'b'. AFAICT, gnus uses some sequence ending in b to resend
> bounced messages (i.e. from mailer-daemon).
>
> quoting the manual:
>
> S D b
>
> If you have sent a mail, but the mail was bounced back to you for
> some reason (wrong address, transient failure), you can use this
> command to resend that bounced mail
> (gnus-summary-resend-bounced-mail). [...]
>
> S D r
>
> Not to be confused with the previous command,
> gnus-summary-resend-message will prompt you for an address to send
> the current message off to, and then send it to that place. [...]
>
> Be that as it may, we already use 'r' for reply, and I'm not sure we
> want to go (more) in the way of multi-letter sequences.
I agree that we don't want to to multi-letter sequences (early). I
personally would be fine w/ 'b'...
Tomi
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 1/2] emacs: add defsubst notmuch-address--message-insinuated
2015-08-30 12:28 ` [PATCH 1/2] emacs: add defsubst notmuch-address--message-insinuated David Bremner
@ 2015-08-30 15:02 ` Tomi Ollila
0 siblings, 0 replies; 9+ messages in thread
From: Tomi Ollila @ 2015-08-30 15:02 UTC (permalink / raw)
To: David Bremner, notmuch
On Sun, Aug 30 2015, David Bremner <david@tethera.net> wrote:
> Tomi Ollila <tomi.ollila@iki.fi> writes:
>
>> +(defsubst notmuch-address--message-insinuated ()
>> + (memq notmuch-address-message-alist-member message-completion-alist))
>> +
>
> Is there some advantage to defsubst other than (maybe?) performance? It
> just seems like one more construct for people to get up to speed with
> the codebase.
No advantage. The reason for defsubst may originally be that I did it for
least execution chance -- and iirc I was reading some (gnus?) code that
had quite a few defsubsts which infected my coding. Now that I checked
there is no (other) defsubsts code in notmuch-emacs... so that can be
just be changed to `defun' to be consistent in that sense.
>
> d
Tomi
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 2/2] emacs: add function to resend message to new recipients
2015-08-30 14:58 ` Tomi Ollila
@ 2015-08-31 1:42 ` David Bremner
2015-08-31 19:01 ` Tomi Ollila
0 siblings, 1 reply; 9+ messages in thread
From: David Bremner @ 2015-08-31 1:42 UTC (permalink / raw)
To: Tomi Ollila, notmuch
Tomi Ollila <tomi.ollila@iki.fi> writes:
>
> emacs -q -L $PWD/emacs -l emacs/notmuch.el -f notmuch --eval '(progn (setq notmuch-address-command "nottoomuch-addresses.sh") (notmuch-address-message-insinuate))'
>
Ah, I missed notmuch-address-message-insinuate; it does work if I run
that. I wonder if this can be simplified at all now that
notmuch-message-mode exists. In general I'm leery of running code when
we load notmuch*.el, as this has a history of causing problems for
people using notmuch e.g. as a search tool for gnus.
The completion interface takes a little getting used to, but it's
definitely usable. And of course much better than what we have now ;).
One thing I noticed which I _think_ is a bug, is that after calling
notmuch-show-resend-message, notmuch-view-raw-message doesn't work
anymore, complaining about a read-only buffer.
d
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 2/2] emacs: add function to resend message to new recipients
2015-08-31 1:42 ` David Bremner
@ 2015-08-31 19:01 ` Tomi Ollila
2015-08-31 23:11 ` David Bremner
0 siblings, 1 reply; 9+ messages in thread
From: Tomi Ollila @ 2015-08-31 19:01 UTC (permalink / raw)
To: David Bremner, notmuch
On Mon, Aug 31 2015, David Bremner <david@tethera.net> wrote:
> Tomi Ollila <tomi.ollila@iki.fi> writes:
>
>>
>> emacs -q -L $PWD/emacs -l emacs/notmuch.el -f notmuch --eval '(progn (setq notmuch-address-command "nottoomuch-addresses.sh") (notmuch-address-message-insinuate))'
>>
> Ah, I missed notmuch-address-message-insinuate; it does work if I run
> that. I wonder if this can be simplified at all now that
> notmuch-message-mode exists. In general I'm leery of running code when we
> load notmuch*.el, as this has a history of causing problems for people
> using notmuch e.g. as a search tool for gnus.
Currently as both setting notmuch-address-command and
notmuch-address-message-insinunate us required I would not attempt to do any
"magic" there. Whenever we get built-in address completion (i.e built-in
is used when notmuch-address-command is kept nil we could consider to add
some defcustom which can be used to activate address completion -- but
as there are these *-insinunate -commands in many elisp packages it is
probably best to investigate whether this really can be "automated".
Perhaps some lazy initialization could be in place, then.
> The completion interface takes a little getting used to, but it's
> definitely usable. And of course much better than what we have now ;).
>
> One thing I noticed which I _think_ is a bug, is that after calling
> notmuch-show-resend-message, notmuch-view-raw-message doesn't work
> anymore, complaining about a read-only buffer.
That is interesting in a sense that I could not reproduce. I think I know
exactly why this happens: notmuch-view-raw-message creates read-only buffer
which is not removed after message is resent: re-running
notmuch-view-raw-message on same message will `get-buffer-create' with
same name and pick the old read-only buffer; inserting data to that buffer
fails -- just that in my tests (V C-x b RET V) I could not get the same
outcome.
The simplest change is to change (bury-buffer) with (kill-buffer). The raw
message buffer that was used to send should not be interesting; more
interesting is the current (same) message in notmuch-show buffer -- and 'V'
can be used to re-view the raw message.
What could be added is printing the message id of the message resent to
*Messages* buffer. This way re-sender can verify what was resent if being
unsure. Just that in the case I've used this I have not looked back...
So, probably I make applicable RFC patch of this feature...
>
> d
Tomi
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 2/2] emacs: add function to resend message to new recipients
2015-08-31 19:01 ` Tomi Ollila
@ 2015-08-31 23:11 ` David Bremner
0 siblings, 0 replies; 9+ messages in thread
From: David Bremner @ 2015-08-31 23:11 UTC (permalink / raw)
To: Tomi Ollila, notmuch
Tomi Ollila <tomi.ollila@iki.fi> writes:
> That is interesting in a sense that I could not reproduce. I think I know
> exactly why this happens: notmuch-view-raw-message creates read-only buffer
> which is not removed after message is resent: re-running
> notmuch-view-raw-message on same message will `get-buffer-create' with
> same name and pick the old read-only buffer; inserting data to that buffer
> fails -- just that in my tests (V C-x b RET V) I could not get the same
> outcome.
This test actually reproduces the problem for me. Maybe it's emacs
version specific? I mainly 24.5.1, but I can't duplicate the problem in
emacs23.
d
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2015-08-31 23:12 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-08-26 20:07 [PATCH 1/2] emacs: add defsubst notmuch-address--message-insinuated Tomi Ollila
2015-08-26 20:07 ` [PATCH 2/2] emacs: add function to resend message to new recipients Tomi Ollila
2015-08-30 12:56 ` David Bremner
2015-08-30 14:58 ` Tomi Ollila
2015-08-31 1:42 ` David Bremner
2015-08-31 19:01 ` Tomi Ollila
2015-08-31 23:11 ` David Bremner
2015-08-30 12:28 ` [PATCH 1/2] emacs: add defsubst notmuch-address--message-insinuated David Bremner
2015-08-30 15:02 ` Tomi Ollila
Code repositories for project(s) associated with this public inbox
https://yhetil.org/notmuch.git/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).