Re: [PATCH 8/6] emacs: use message ids instead of thread id in `notmuch-show-operate...
authorJani Nikula <jani@nikula.org>
Sat, 28 Jan 2012 09:09:45 +0000 (11:09 +0200)
committerW. Trevor King <wking@tremily.us>
Fri, 7 Nov 2014 17:43:27 +0000 (09:43 -0800)
b6/4cf9846666ff6bc9edf46233897946b1c3f2ba [new file with mode: 0644]

diff --git a/b6/4cf9846666ff6bc9edf46233897946b1c3f2ba b/b6/4cf9846666ff6bc9edf46233897946b1c3f2ba
new file mode 100644 (file)
index 0000000..7305bf6
--- /dev/null
@@ -0,0 +1,242 @@
+Return-Path: <jani@nikula.org>\r
+X-Original-To: notmuch@notmuchmail.org\r
+Delivered-To: notmuch@notmuchmail.org\r
+Received: from localhost (localhost [127.0.0.1])\r
+       by olra.theworths.org (Postfix) with ESMTP id 33771431FB6\r
+       for <notmuch@notmuchmail.org>; Sat, 28 Jan 2012 01:09:49 -0800 (PST)\r
+X-Virus-Scanned: Debian amavisd-new at olra.theworths.org\r
+X-Spam-Flag: NO\r
+X-Spam-Score: -0.699\r
+X-Spam-Level: \r
+X-Spam-Status: No, score=-0.699 tagged_above=-999 required=5\r
+       tests=[HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7] autolearn=disabled\r
+Received: from olra.theworths.org ([127.0.0.1])\r
+       by localhost (olra.theworths.org [127.0.0.1]) (amavisd-new, port 10024)\r
+       with ESMTP id KnLglAAz3Pps for <notmuch@notmuchmail.org>;\r
+       Sat, 28 Jan 2012 01:09:48 -0800 (PST)\r
+Received: from mail-pw0-f53.google.com (mail-pw0-f53.google.com\r
+       [209.85.160.53]) (using TLSv1 with cipher RC4-SHA (128/128 bits))\r
+       (No client certificate requested)\r
+       by olra.theworths.org (Postfix) with ESMTPS id 371BC431FAE\r
+       for <notmuch@notmuchmail.org>; Sat, 28 Jan 2012 01:09:48 -0800 (PST)\r
+Received: by pbbb4 with SMTP id b4so3083846pbb.26\r
+       for <notmuch@notmuchmail.org>; Sat, 28 Jan 2012 01:09:47 -0800 (PST)\r
+MIME-Version: 1.0\r
+Received: by 10.68.189.6 with SMTP id ge6mr21709820pbc.93.1327741785529; Sat,\r
+       28 Jan 2012 01:09:45 -0800 (PST)\r
+Received: by 10.68.236.137 with HTTP; Sat, 28 Jan 2012 01:09:45 -0800 (PST)\r
+Received: by 10.68.236.137 with HTTP; Sat, 28 Jan 2012 01:09:45 -0800 (PST)\r
+In-Reply-To: <1327730348-6466-1-git-send-email-dmitry.kurochkin@gmail.com>\r
+References: <1327725684-5887-1-git-send-email-dmitry.kurochkin@gmail.com>\r
+       <1327730348-6466-1-git-send-email-dmitry.kurochkin@gmail.com>\r
+Date: Sat, 28 Jan 2012 11:09:45 +0200\r
+Message-ID:\r
+ <CAB+hUn8feOnr8N_mGXw+wKA6exZG3V-7uW0Yz6+wPN=B+tCNMQ@mail.gmail.com>\r
+Subject: Re: [PATCH 8/6] emacs: use message ids instead of thread id in\r
+       `notmuch-show-operate-all'\r
+From: Jani Nikula <jani@nikula.org>\r
+To: Dmitry Kurochkin <dmitry.kurochkin@gmail.com>\r
+Content-Type: multipart/alternative; boundary=e89a8ff1c3e87ade2104b792f9ce\r
+Cc: notmuch@notmuchmail.org\r
+X-BeenThere: notmuch@notmuchmail.org\r
+X-Mailman-Version: 2.1.13\r
+Precedence: list\r
+List-Id: "Use and development of the notmuch mail system."\r
+       <notmuch.notmuchmail.org>\r
+List-Unsubscribe: <http://notmuchmail.org/mailman/options/notmuch>,\r
+       <mailto:notmuch-request@notmuchmail.org?subject=unsubscribe>\r
+List-Archive: <http://notmuchmail.org/pipermail/notmuch>\r
+List-Post: <mailto:notmuch@notmuchmail.org>\r
+List-Help: <mailto:notmuch-request@notmuchmail.org?subject=help>\r
+List-Subscribe: <http://notmuchmail.org/mailman/listinfo/notmuch>,\r
+       <mailto:notmuch-request@notmuchmail.org?subject=subscribe>\r
+X-List-Received-Date: Sat, 28 Jan 2012 09:09:49 -0000\r
+\r
+--e89a8ff1c3e87ade2104b792f9ce\r
+Content-Type: text/plain; charset=UTF-8\r
+\r
+I guess this now includes the optimization of doing the tagging in a single\r
+call to notmuch tag. (As opposed to calling it once per msg like it used to\r
+be a while back.) There was some discussion about the cmdline length for\r
+large threads potentially growing too big when I sent such an optimization\r
+patch, shall we just ignore that and hope for the best? I guess an idea was\r
+to limit to, say, a few hundred msg ids per command. (Again, sorry I can't\r
+look up the earlier thread now.)\r
+\r
+On Jan 28, 2012 8:00 AM, "Dmitry Kurochkin" <dmitry.kurochkin@gmail.com>\r
+wrote:\r
+>\r
+> Before the change, `notmuch-show-operate-all' used thread id for\r
+> "notmuch tag" search.  This could result in tagging unexpected\r
+> messages that were added to the thread after the notmuch-show buffer\r
+> was created.  The patch changes `notmuch-show-operate-all' to use ids\r
+> of shown messages to fix this.\r
+> ---\r
+>  emacs/notmuch-show.el |   23 ++++++++++++++++++++++-\r
+>  1 files changed, 22 insertions(+), 1 deletions(-)\r
+>\r
+> diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el\r
+> index 2ca4d92..e606224 100644\r
+> --- a/emacs/notmuch-show.el\r
+> +++ b/emacs/notmuch-show.el\r
+> @@ -1170,6 +1170,15 @@ All currently available key bindings:\r
+>     (notmuch-show-move-to-message-top)\r
+>     t))\r
+>\r
+> +(defun notmuch-show-mapc (function)\r
+> +  "Iterate through all messages with\r
+> +`notmuch-show-goto-message-next' and call `function' for side\r
+> +effects."\r
+> +  (save-excursion\r
+> +    (goto-char (point-min))\r
+> +    (loop do (funcall function)\r
+> +         while (notmuch-show-goto-message-next))))\r
+> +\r
+>  ;; Functions relating to the visibility of messages and their\r
+>  ;; components.\r
+>\r
+> @@ -1222,6 +1231,18 @@ Some useful entries are:\r
+>   "Return the message id of the current message."\r
+>   (concat "id:\"" (notmuch-show-get-prop :id) "\""))\r
+>\r
+> +(defun notmuch-show-get-messages-ids ()\r
+> +  "Return all message ids of currently shown messages."\r
+> +  (let ((message-ids))\r
+> +    (notmuch-show-mapc\r
+> +     (lambda () (push (notmuch-show-get-message-id) message-ids)))\r
+> +    message-ids))\r
+> +\r
+> +(defun notmuch-show-get-messages-ids-search ()\r
+> +  "Return a search string for all message ids of currently shown\r
+> +messages."\r
+> +  (mapconcat 'identity (notmuch-show-get-messages-ids) " or "))\r
+> +\r
+>  ;; dme: Would it make sense to use a macro for many of these?\r
+>\r
+>  (defun notmuch-show-get-filename ()\r
+> @@ -1496,7 +1517,7 @@ i.e. a list of tags to change with '+' and '-'\r
+prefixes."\r
+>  `Changed-tags' is a list of tag operations for \"notmuch tag\",\r
+>  i.e. a list of tags to change with '+' and '-' prefixes."\r
+>   (interactive (notmuch-select-tags-with-completion nil\r
+notmuch-show-thread-id))\r
+> -  (apply 'notmuch-tag notmuch-show-thread-id changed-tags)\r
+> +  (apply 'notmuch-tag (notmuch-show-get-messages-ids-search)\r
+changed-tags)\r
+>   (save-excursion\r
+>     (goto-char (point-min))\r
+>     (loop do (let* ((current-tags (notmuch-show-get-tags))\r
+> --\r
+> 1.7.8.3\r
+>\r
+> _______________________________________________\r
+> notmuch mailing list\r
+> notmuch@notmuchmail.org\r
+> http://notmuchmail.org/mailman/listinfo/notmuch\r
+\r
+--e89a8ff1c3e87ade2104b792f9ce\r
+Content-Type: text/html; charset=UTF-8\r
+Content-Transfer-Encoding: quoted-printable\r
+\r
+<p><br>\r
+I guess this now includes the optimization of doing the tagging in a single=\r
+ call to notmuch tag. (As opposed to calling it once per msg like it used t=\r
+o be a while back.) There was some discussion about the cmdline length for =\r
+large threads potentially growing too big when I sent such an optimization =\r
+patch, shall we just ignore that and hope for the best? I guess an idea was=\r
+ to limit to, say, a few hundred msg ids per command. (Again, sorry I can&#=\r
+39;t look up the earlier thread now.)</p>\r
+\r
+<p>On Jan 28, 2012 8:00 AM, &quot;Dmitry Kurochkin&quot; &lt;<a href=3D"mai=\r
+lto:dmitry.kurochkin@gmail.com">dmitry.kurochkin@gmail.com</a>&gt; wrote:<b=\r
+r>\r
+&gt;<br>\r
+&gt; Before the change, `notmuch-show-operate-all&#39; used thread id for<b=\r
+r>\r
+&gt; &quot;notmuch tag&quot; search. =C2=A0This could result in tagging une=\r
+xpected<br>\r
+&gt; messages that were added to the thread after the notmuch-show buffer<b=\r
+r>\r
+&gt; was created. =C2=A0The patch changes `notmuch-show-operate-all&#39; to=\r
+ use ids<br>\r
+&gt; of shown messages to fix this.<br>\r
+&gt; ---<br>\r
+&gt; =C2=A0emacs/notmuch-show.el | =C2=A0 23 ++++++++++++++++++++++-<br>\r
+&gt; =C2=A01 files changed, 22 insertions(+), 1 deletions(-)<br>\r
+&gt;<br>\r
+&gt; diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el<br>\r
+&gt; index 2ca4d92..e606224 100644<br>\r
+&gt; --- a/emacs/notmuch-show.el<br>\r
+&gt; +++ b/emacs/notmuch-show.el<br>\r
+&gt; @@ -1170,6 +1170,15 @@ All currently available key bindings:<br>\r
+&gt; =C2=A0 =C2=A0 (notmuch-show-move-to-message-top)<br>\r
+&gt; =C2=A0 =C2=A0 t))<br>\r
+&gt;<br>\r
+&gt; +(defun notmuch-show-mapc (function)<br>\r
+&gt; + =C2=A0&quot;Iterate through all messages with<br>\r
+&gt; +`notmuch-show-goto-message-next&#39; and call `function&#39; for side=\r
+<br>\r
+&gt; +effects.&quot;<br>\r
+&gt; + =C2=A0(save-excursion<br>\r
+&gt; + =C2=A0 =C2=A0(goto-char (point-min))<br>\r
+&gt; + =C2=A0 =C2=A0(loop do (funcall function)<br>\r
+&gt; + =C2=A0 =C2=A0 =C2=A0 =C2=A0 while (notmuch-show-goto-message-next)))=\r
+)<br>\r
+&gt; +<br>\r
+&gt; =C2=A0;; Functions relating to the visibility of messages and their<br=\r
+>\r
+&gt; =C2=A0;; components.<br>\r
+&gt;<br>\r
+&gt; @@ -1222,6 +1231,18 @@ Some useful entries are:<br>\r
+&gt; =C2=A0 &quot;Return the message id of the current message.&quot;<br>\r
+&gt; =C2=A0 (concat &quot;id:\&quot;&quot; (notmuch-show-get-prop :id) &quo=\r
+t;\&quot;&quot;))<br>\r
+&gt;<br>\r
+&gt; +(defun notmuch-show-get-messages-ids ()<br>\r
+&gt; + =C2=A0&quot;Return all message ids of currently shown messages.&quot=\r
+;<br>\r
+&gt; + =C2=A0(let ((message-ids))<br>\r
+&gt; + =C2=A0 =C2=A0(notmuch-show-mapc<br>\r
+&gt; + =C2=A0 =C2=A0 (lambda () (push (notmuch-show-get-message-id) message=\r
+-ids)))<br>\r
+&gt; + =C2=A0 =C2=A0message-ids))<br>\r
+&gt; +<br>\r
+&gt; +(defun notmuch-show-get-messages-ids-search ()<br>\r
+&gt; + =C2=A0&quot;Return a search string for all message ids of currently =\r
+shown<br>\r
+&gt; +messages.&quot;<br>\r
+&gt; + =C2=A0(mapconcat &#39;identity (notmuch-show-get-messages-ids) &quot=\r
+; or &quot;))<br>\r
+&gt; +<br>\r
+&gt; =C2=A0;; dme: Would it make sense to use a macro for many of these?<br=\r
+>\r
+&gt;<br>\r
+&gt; =C2=A0(defun notmuch-show-get-filename ()<br>\r
+&gt; @@ -1496,7 +1517,7 @@ i.e. a list of tags to change with &#39;+&#39; a=\r
+nd &#39;-&#39; prefixes.&quot;<br>\r
+&gt; =C2=A0`Changed-tags&#39; is a list of tag operations for \&quot;notmuc=\r
+h tag\&quot;,<br>\r
+&gt; =C2=A0i.e. a list of tags to change with &#39;+&#39; and &#39;-&#39; p=\r
+refixes.&quot;<br>\r
+&gt; =C2=A0 (interactive (notmuch-select-tags-with-completion nil notmuch-s=\r
+how-thread-id))<br>\r
+&gt; - =C2=A0(apply &#39;notmuch-tag notmuch-show-thread-id changed-tags)<b=\r
+r>\r
+&gt; + =C2=A0(apply &#39;notmuch-tag (notmuch-show-get-messages-ids-search)=\r
+ changed-tags)<br>\r
+&gt; =C2=A0 (save-excursion<br>\r
+&gt; =C2=A0 =C2=A0 (goto-char (point-min))<br>\r
+&gt; =C2=A0 =C2=A0 (loop do (let* ((current-tags (notmuch-show-get-tags))<b=\r
+r>\r
+&gt; --<br>\r
+&gt; 1.7.8.3<br>\r
+&gt;<br>\r
+&gt; _______________________________________________<br>\r
+&gt; notmuch mailing list<br>\r
+&gt; <a href=3D"mailto:notmuch@notmuchmail.org">notmuch@notmuchmail.org</a>=\r
+<br>\r
+&gt; <a href=3D"http://notmuchmail.org/mailman/listinfo/notmuch">http://not=\r
+muchmail.org/mailman/listinfo/notmuch</a><br>\r
+</p>\r
+\r
+--e89a8ff1c3e87ade2104b792f9ce--\r