[PATCH 07/11] emacs: Use notmuch tag --batch for large tag queries

Austin Clements amdragon at MIT.EDU
Wed Oct 9 07:11:44 PDT 2013


Quoth Mark Walters on Oct 08 at  8:27 am:
> On Mon, 07 Oct 2013, Austin Clements <amdragon at MIT.EDU> wrote:
> > (Unfortunately, it's difficult to first demonstrate this problem with
> > a known-broken test because modern Linux kernels have argument length
> > limits in the megabytes, which makes Emacs really slow!)
> > ---
> >  emacs/notmuch-lib.el |  8 ++++++++
> >  emacs/notmuch-tag.el | 12 ++++++++++--
> >  test/emacs           |  8 ++++++++
> >  3 files changed, 26 insertions(+), 2 deletions(-)
> >
> > diff --git a/emacs/notmuch-lib.el b/emacs/notmuch-lib.el
> > index 22156f1..348112b 100644
> > --- a/emacs/notmuch-lib.el
> > +++ b/emacs/notmuch-lib.el
> > @@ -261,6 +261,14 @@ user-friendly queries."
> >    "Return a query that matches the message with id ID."
> >    (concat "id:" (notmuch-escape-boolean-term id)))
> >  
> > +(defun notmuch-hex-encode (str)
> > +  "Hex-encode STR (e.g., as used by batch tagging).
> > +
> > +This replaces spaces, percents, and double quotes in STR with
> > +%NN where NN is the hexadecimal value of the character."
> > +  (replace-regexp-in-string
> > +   "[ %\"]" (lambda (match) (format "%%%02x" (aref match 0))) str))
> > +
> >  ;;
> >  
> >  (defun notmuch-common-do-stash (text)
> > diff --git a/emacs/notmuch-tag.el b/emacs/notmuch-tag.el
> > index 064cfa8..a4eec14 100644
> > --- a/emacs/notmuch-tag.el
> > +++ b/emacs/notmuch-tag.el
> > @@ -242,6 +242,8 @@ from TAGS if present."
> >  	   (error "Changed tag must be of the form `+this_tag' or `-that_tag'")))))
> >      (sort result-tags 'string<)))
> >  
> > +(defconst notmuch-tag-argument-limit 1000)
> > +
> 
> Another triviality: I think this should have a doc string saying use
> batch tag if the query is longer than this.

Done.

> The other patches in the series up to this point LGTM.
> 
> Mark


More information about the notmuch mailing list