[[!meta title="notmuch new(s) - David Bremner"]] [[!meta copyright="Copyright © 2019 David Bremner"]] [[!template id=vid src="https://mirror.csclub.uwaterloo.ca/emacsconf/2019/emacsconf-2019-10-notmuch-news--bremner.webm" type="video/webm"]] ### Download - [Video](https://mirror.csclub.uwaterloo.ca/emacsconf/2019/emacsconf-2019-10-notmuch-news--bremner.webm) (1080p) ### Notes ```org #+TITLE: Notmuch New(s) #+AUTHOR: David Bremner #+PROPERTY: header-args:sh :results output :session demo :output session * What is notmuch? ** A tool(kit) for indexing and searching mail #+begin_src dot :file ecosystem.pdf digraph ecosystem { size = "4,3" margin=0 graph [fontsize=20] node [fontsize=20] edge [fontsize=20] gmime xapian notmuch_cli [shape=record,style=filled, color=yellow,label="notmuch CLI"] libnotmuch [style=filled,color=gold] subgraph cluster_clients { style=filled; color=cadetblue3; label="Mail user agents"; node [shape=record, style=filled, color=white]; notmuch_emacs [label="notmuch-emacs",color=yellow] alot bower astroid notmuch_web [label="notmuch-web"] noservice neomutt notmuch_vim [label="notmuch-vim", color=lightyellow] notmuch_mutt [label="notmuch-mutt", color=lightyellow] } subgraph cluster_tools { style=filled; color=darkolivegreen2; label="tools"; node [shape=record, style=filled, color=white]; afew nmbug [color=yellow] notmuch_report [label="notmuch-report"] [color=yellow] } subgraph cluster_bindings { label="Bindings" style=filled; color=lightyellow; node [shape=record, style=filled, color=white]; ruby_notmuch [label="ruby", color=yellow] python_notmuch [label="python", color=yellow] notmuch_go [label="go"] notmuch_rust [label="rust"] } neomutt -> libnotmuch astroid -> libnotmuch alot->python_notmuch notmuch_emacs->notmuch_cli notmuch_mutt->notmuch_cli notmuch_vim->ruby_notmuch bower -> notmuch_cli noservice->notmuch_cli nmbug->notmuch_cli notmuch_report-> python_notmuch python_notmuch->libnotmuch ruby_notmuch->libnotmuch notmuch_go ->libnotmuch notmuch_rust ->libnotmuch notmuch_web->notmuch_cli notmuch_cli->libnotmuch afew->python_notmuch libnotmuch->xapian libnotmuch->gmime { edge [style="invisible",arrowhead="none"] notmuch_emacs->astroid notmuch_emacs->neomutt notmuch_emacs->notmuch_vim notmuch_emacs->alot notmuch_emacs->bower bower->notmuch_vim bower->astroid notmuch_web->noservice } } #+end_src ** Emacs interface(s) to notmuch (notmuch-search "from:floris subject:cffi") (notmuch-tree "from:floris subject:cffi") #+RESULTS: * What is new? ** Search Improvements *** separate message body indexing (notmuch-search "body:emacsconf and not subject:emacsconf") *** user defined headers, e.g. =List-Id= #+begin_src sh notmuch config set header.List List-Id notmuch reindex date:1month.. #+end_src (notmuch-search "List:notmuch date:1month..") ** Cryptography Support - (optional) indexing cleartext of encrypted e-mails - (optional) caching of session keys #+begin_example ┌───────────────┬───────┬──────┬─────────┬──────┐ │ │ false │ auto │ nostash │ true │ ├───────────────┼───────┼──────┼─────────┼──────┤ │Index cleart‐ │ │ X │ X │ X │ │ext using │ │ │ │ │ │stashed ses‐ │ │ │ │ │ │sion keys │ │ │ │ │ ├───────────────┼───────┼──────┼─────────┼──────┤ │Index cleart‐ │ │ │ X │ X │ │ext using se‐ │ │ │ │ │ │cret keys │ │ │ │ │ ├───────────────┼───────┼──────┼─────────┼──────┤ │Stash session │ │ │ │ X │ │keys │ │ │ │ │ ├───────────────┼───────┼──────┼─────────┼──────┤ │Delete stashed │ X │ │ │ │ │session keys │ │ │ │ │ │on reindex │ │ │ │ │ └───────────────┴───────┴──────┴─────────┴──────┘ #+end_example - indexing, searching, rendering /protected Subjects/ - sent by Enigmail and K-9 mail ** Support for gzipped mail files (notmuch-show "id:1319286098.13821.57.camel@pc-jirka") #+begin_src sh bigfile=$(notmuch search --output=files id:1319286098.13821.57.camel@pc-jirka) ls -lh ${bigfile} gzip -9 ${bigfile} notmuch new #+end_src #+begin_src sh gunzip ${bigfile} notmuch new #+end_src * What is next? ** notmuch-emacs improvements - better docs? - more asynch things - convenience features, e.g. jump to parent messages ** Updating python bindings - based on CFFI - more /Pythonic/ - less broken with Python >= 3.6 ** Protected Headers Support - authoring protected headers * Cleanup this buffer #+begin_src elisp (org-babel-remove-result-one-or-many 't) #+end_src * Configuration # Local Variables: # org-confirm-babel-evaluate: nil # End: ```