[PATCH v2 0/7] Fix emacs tagging race

markwalters1009 markwalters1009 at gmail.com
Sat Nov 24 05:20:49 PST 2012


This is version 2 of this series: version 1 is at
id:1352487491-31512-1-git-send-email-markwalters1009 at gmail.com but
this is a much more complete version. Version 1 roughly corresponds to
patches 5-7.

The first two patches allows queries to come from stdin (if the query
string is "-"). This is necessary to avoid ARGMAX limits in some
cases. They are independent of the rest of the series. The main thing
needed for these two (apart from review!) is a manpage but I wasn't
sure whether that should go in notmuch-search-terms or somewhere else.

Patches 3 and 4 make the emacs interface use this new functionality to
pass the tagging query. These two patches depend on the previous two
but are independent of the later patches. Note that it is possible (if
unlikely) to trigger the ARGMAX problem in current notmuch: highlight
most or all of a large search buffer and then try to tag the region.

Patches 5-7 actually fix the race. They do this by appending two query
strings to each search: one query string for the matching messages and
one for the non-matching messages. The front-end can then combine
these query strings to make sure it only tags messages that were
present/matched when the search buffer was created.

The main changes from v1 are to append query-string rather than all
the message-ids (so if we had a better way of constructing the queries
we could switch to that later) and to use Austin's suggestion of
--queries=true to add the queries. I think we do want the choice as
appending the string could easily double the size of the output.

This version (since rebasing and tidying) is not heavily tested (all
tests pass) but I have been running a similar version for some time
without problems.

Best wishes

Mark




Mark Walters (7):
  cli: allow query to come from stdin
  test: for the new query from stdin functionality
  emacs: notmuch.el split call-process into call-process-region
  emacs: make emacs tagging use the stdin query functionality
  test: test for race when tagging from emacs search
  cli: allow search mode to include msg-ids with JSON output
  emacs: make emacs use message-ids for tagging

 emacs/notmuch-tag.el |   14 +++++---
 emacs/notmuch.el     |   47 ++++++++++++++++++++----
 notmuch-search.c     |   95 ++++++++++++++++++++++++++++++++++++++++++++++---
 query-string.c       |   41 +++++++++++++++++++++
 test/emacs           |   21 +++++++++++
 test/tagging         |    9 +++++
 6 files changed, 208 insertions(+), 19 deletions(-)

-- 
1.7.9.1



More information about the notmuch mailing list