notmuch/emacs
Austin Clements 9c5ea07cc6 emacs: Switch from text to JSON format for search results
The JSON format eliminates the complex escaping issues that have
plagued the text search format.  This uses the incremental JSON parser
so that, like the text parser, it can output search results
incrementally.

This slows down the parser by about ~4X, but puts us in a good
position to optimize either by improving the JSON parser (evidence
suggests this can reduce the overhead to ~40% over the text format) or
by switching to S-expressions (evidence suggests this will more than
double performance over the text parser).  [1]

This also fixes the incremental search parsing test.

This has one minor side-effect on search result formatting.
Previously, the date field was always padded to a fixed width of 12
characters because of how the text parser's regexp was written.  The
JSON format doesn't do this.  We could pad it out in Emacs before
formatting it, but, since all of the other fields are variable width,
we instead fix notmuch-search-result-format to take the variable-width
field and pad it out.  For users who have customized this variable,
we'll mention in the NEWS how to fix this slight format change.

[1] id:"20110720205007.GB21316@mit.edu"
2012-07-12 17:39:36 -06:00
..
coolj.el emacs: Add more functions to clean up text/plain parts 2010-04-26 10:05:46 -07:00
Makefile fix sum moar typos [build scripts, Makefiles] 2011-06-23 15:44:59 -07:00
Makefile.local emacs: create notmuch-tag.el, and move appropriate functions from notmuch.el 2012-04-29 17:39:37 -03:00
notmuch-address.el emacs: globally replace non-branching "(if (not ..." with "(unless ..." 2012-01-21 08:17:56 -04:00
notmuch-crypto.el Spelling fix 2012-03-01 19:04:21 -04:00
notmuch-hello.el emacs: fix custom queries section customization widget in notmuch-hello 2012-05-06 19:44:55 -03:00
notmuch-lib.el emacs: Implement an incremental JSON parser 2012-07-12 17:39:28 -06:00
notmuch-logo.png emacs: Add notmuch-hello.el, a friendly frontend to notmuch 2010-04-23 12:50:18 -07:00
notmuch-maildir-fcc.el emacs: derive correct timestamp in FCC unique name 2012-06-22 07:39:21 -03:00
notmuch-message.el emacs: create notmuch-tag.el, and move appropriate functions from notmuch.el 2012-04-29 17:39:37 -03:00
notmuch-mua.el emacs: Do not pass stderr of notmuch reply to JSON parser 2012-05-06 08:49:38 -03:00
notmuch-print.el emacs: Put notmuch-print-mechanism in custom group notmuch-show 2012-04-24 23:25:51 -03:00
notmuch-query.el emacs: Add support for PGP/MIME verification/decryption 2011-05-27 16:22:00 -07:00
notmuch-show.el emacs: make elide messages use notmuch-show for omitting messages. 2012-06-29 22:33:31 -03:00
notmuch-tag.el emacs: allow notmuch-tag to accept string inputs and prompt for tags 2012-04-29 17:41:35 -03:00
notmuch-wash.el emacs: Add configurable wrapping width for notmuch-wash-wrap-long-lines 2012-06-29 22:38:52 -03:00
notmuch.el emacs: Switch from text to JSON format for search results 2012-07-12 17:39:36 -06:00