]> git.cworth.org Git - notmuch-wiki/blobdiff - howto.mdwn
Howto: Reference alternative mutt integration
[notmuch-wiki] / howto.mdwn
index ab5f20d55c344cd6cac0c11e121e6fc6eb686b89..fea9e522424c7356be1b048e56f3447213ae6ec0 100644 (file)
@@ -26,24 +26,25 @@ various "third party" notmuch utilities.
 
   * [fetchmail](http://fetchmail.berlios.de/)
 
-  See the [[initial_tagging]] page for more info on intial tagging of messages.
+  See the [[initial_tagging]] page for more info on initial tagging of messages.
 
-* <span id="print_filenames">**Print only filenames of a search (python bindings)**</span>
+* <span id="python">**Use notmuch from python**</span>
 
   Notmuch includes python bindings to the notmuch shared
   library. Extensive API documentation [is
-  available](http://notmuchmail.readthedocs.org/).
+  available](http://notmuch.readthedocs.org/).
 
   The bindings are very simple to use.  As an example, given you have
   the python bindings installed (or simply set your PYTHONPATH
   environment variable to point to the .../bindings/python directory),
-  this script will print the filenames of a matching search:
+  this snippet will produce a list of mails matching the given
+  expression:
 
-      >>> import notmuch
-      >>> db = notmuch.Database()
-      >>> query = db.create_query('tag:inbox AND NOT tag:killed')
-      >>> list(query.search_messages()) # doctest:+ELLIPSIS
-      [...]
+          >>> import notmuch
+          >>> db = notmuch.Database()
+          >>> query = db.create_query('tag:inbox AND NOT tag:killed')
+          >>> list(query.search_messages()) # doctest:+ELLIPSIS
+          [...]
 
 * <span id="sync_maildir_flags">**Sync notmuch tags and maildir flags**</span>
 
@@ -81,19 +82,46 @@ various "third party" notmuch utilities.
   MUA.
 
   A popular geek MUA is [the Mutt e-mail client](http://www.mutt.org);
-  integrating notmuch with Mutt is fairly straightforward. An
-  [**how to use Notmuch with Mutt**](http://upsilon.cc/~zack/blog/posts/2011/01/how_to_use_Notmuch_with_Mutt/)
-  has been written by Stefano Zacchiroli, together with some glue code. Check
-  out the
-  [howto](http://upsilon.cc/~zack/blog/posts/2011/01/how_to_use_Notmuch_with_Mutt/)
-  for more information.
-
-  <small>(Note by the howto author: I've linked the howto from this wiki rather
-  than splicing it in, in order to avoid duplication of information. If you
-  think it would be better to have it here, feel free to copy the text
-  here. The howto is
-  [available](http://git.upsilon.cc/cgi-bin/gitweb.cgi?p=zack-homepage.git;a=history;f=blog/posts/2011/01/how_to_use_Notmuch_with_Mutt.mdwn)
-  in markdown syntax from the Git repository of my homepage.)</small>
+  integrating notmuch with Mutt is not seamless, but fairly straightforward.
+  There are two principal possibilities, each with its own ups and downs:
+
+  * Using mutt-notmuch, which will create a "virtual" maildir folder with
+    search results whenever a search is made. The upside is that you can
+    search all your folders simultanously; the downside is that your
+    modifications in the results listing do not carry over, also having
+    to switch folders comes with some more annoyances.
+
+    An
+    [**how to use Notmuch with Mutt**](http://upsilon.cc/~zack/blog/posts/2011/01/how_to_use_Notmuch_with_Mutt/)
+    has been written by Stefano Zacchiroli. Check out the
+    [howto](http://upsilon.cc/~zack/blog/posts/2011/01/how_to_use_Notmuch_with_Mutt/)
+    for more information.
+
+    <small>(Note by the howto author: I've linked the howto from this wiki rather
+    than splicing it in, in order to avoid duplication of information. If you
+    think it would be better to have it here, feel free to copy the text
+    here. The howto is
+    [available](http://git.upsilon.cc/cgi-bin/gitweb.cgi?p=zack-homepage.git;a=history;f=blog/posts/2011/01/how_to_use_Notmuch_with_Mutt.mdwn)
+    in markdown syntax from the Git repository of my homepage.)</small>
+
+  * Using a simple macro that will emulate the "limit" mutt functionality
+    using notmuch.
+
+    See the [**alternative notmuch integration**](http://log.or.cz/?p=228)
+    blog post for instructions and details,
+    or simply put these two macros to your muttrc:
+
+                           # 'L' performs a notmuch query, showing only the results
+                           macro index L "<enter-command>unset wait_key<enter><shell-escape>read -p 'notmuch query: ' x; echo \$x >~/.cache/mutt_terms<enter><limit>~i \"\`notmuch search --output=messages \$(cat ~/.cache/mutt_terms) | head -n 600 | perl -le '@a=<>;chomp@a;s/\^id:// for@a;$,=\"|\";print@a'\`\"<enter>" "show only messages matching a notmuch pattern"
+                           # 'a' shows all messages again (supersedes default <alias> binding)
+                           macro index a "<limit>all\n" "show all messages (undo limit)"
+
+    The upside (if you are used to working in the context of a single folder)
+    is that this really does use the limit functionality of mutt
+    and you are still in your original folder.
+    The downside is that this approach has scaling problems
+    and works well only for reasonably specific queries.
+
 
 * <span id="reapply_auto">**Automatically retagging the database (e.g., when upgrading versions)**</span>
 
@@ -137,3 +165,7 @@ various "third party" notmuch utilities.
   output.  Using the instructions from [Gmane's
   site](http://gmane.org/export.php), we can download an mbox file, which we
   can then convert to maildir using mb2md or other utility.
+
+* <span id="special_tags">**Take advantage of tags that are special to notmuch**</span>
+
+  See [[tags special to notmuch|special-tags]].