Return-Path: X-Original-To: notmuch@notmuchmail.org Delivered-To: notmuch@notmuchmail.org Received: from localhost (localhost [127.0.0.1]) by olra.theworths.org (Postfix) with ESMTP id 160C0431FD2 for ; Tue, 3 Jul 2012 15:21:07 -0700 (PDT) X-Virus-Scanned: Debian amavisd-new at olra.theworths.org X-Spam-Flag: NO X-Spam-Score: -0.7 X-Spam-Level: X-Spam-Status: No, score=-0.7 tagged_above=-999 required=5 tests=[RCVD_IN_DNSWL_LOW=-0.7] autolearn=disabled Received: from olra.theworths.org ([127.0.0.1]) by localhost (olra.theworths.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id fKRBEosuIqiW for ; Tue, 3 Jul 2012 15:21:06 -0700 (PDT) Received: from dmz-mailsec-scanner-3.mit.edu (DMZ-MAILSEC-SCANNER-3.MIT.EDU [18.9.25.14]) by olra.theworths.org (Postfix) with ESMTP id 4627C431FAE for ; Tue, 3 Jul 2012 15:21:06 -0700 (PDT) X-AuditID: 1209190e-b7fb56d0000008b2-5b-4ff370513daf Received: from mailhub-auth-2.mit.edu ( [18.7.62.36]) by dmz-mailsec-scanner-3.mit.edu (Symantec Messaging Gateway) with SMTP id 68.C6.02226.15073FF4; Tue, 3 Jul 2012 18:21:05 -0400 (EDT) Received: from outgoing.mit.edu (OUTGOING-AUTH.MIT.EDU [18.7.22.103]) by mailhub-auth-2.mit.edu (8.13.8/8.9.2) with ESMTP id q63ML4C0022242; Tue, 3 Jul 2012 18:21:04 -0400 Received: from drake.dyndns.org (26-4-182.dynamic.csail.mit.edu [18.26.4.182]) (authenticated bits=0) (User authenticated as amdragon@ATHENA.MIT.EDU) by outgoing.mit.edu (8.13.6/8.12.4) with ESMTP id q63ML0Dx023217 (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=NOT); Tue, 3 Jul 2012 18:21:02 -0400 (EDT) Received: from amthrax by drake.dyndns.org with local (Exim 4.77) (envelope-from ) id 1SmBSu-0007fI-Uw; Tue, 03 Jul 2012 18:21:00 -0400 From: Austin Clements To: notmuch@notmuchmail.org Subject: [PATCH 0/8] JSON-based search-mode Date: Tue, 3 Jul 2012 18:20:51 -0400 Message-Id: <1341354059-29396-1-git-send-email-amdragon@mit.edu> X-Mailer: git-send-email 1.7.10 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrBIsWRmVeSWpSXmKPExsUixG6nohtY8Nnf4NNHXYsje2axWyw985/Z 4vrNmcwWb1bOY3Vg8dg56y67x+GvC1k8nq26xezR9GMxawBLFJdNSmpOZllqkb5dAldG97uj 7AWdnBUPOi+zNTAuY+9i5OSQEDCRmPRsHyOELSZx4d56ti5GLg4hgX2MEvsXPGCGcNYzSjQ8 WcEC4Zxkkug/O5UJpEVIYC6jxJJNfiA2m4CGxLb9y8FGiQhIS+y8O5sVxGYWcJDYcuYMWFxY QFvi+smjQCs4OFgEVCVeHVYACfMClfxZ/IAV4gp5iaf3+9gmMPIuYGRYxSibklulm5uYmVOc mqxbnJyYl5dapGusl5tZopeaUrqJERRAnJJ8Oxi/HlQ6xCjAwajEw5us8NlfiDWxrLgy9xCj JAeTkijvlTygEF9SfkplRmJxRnxRaU5q8SFGCQ5mJRHe1UlAOd6UxMqq1KJ8mJQ0B4uSOO+V lJv+QgLpiSWp2ampBalFMFkZDg4lCd7WfKBGwaLU9NSKtMycEoQ0EwcnyHAeoOHZIDW8xQWJ ucWZ6RD5U4yKUuK8O0ESAiCJjNI8uF5YhL9iFAd6RZi3E6SKB5gc4LpfAQ1mAhqct/gTyOCS RISUVANjXPT2JtG1W8p2vS9h8JFd9ofJdhLn9AdLjypPYp4qMHfWDMu8pp03JO4tvnwye+vV HXOnW7xoYBfVFq1kWyHHJd7kwbHva588D4NrwnIWV3Oj7vTrhWsSL6UcfGq6Y+PG2Runh9zp Ua/Xsqv+kZm5W6vPrWvr80rT3dslX5/5oONUubha7XKqEktxRqKhFnNRcSIANFQeYMsCAAA= Cc: tomi.ollila@iki.fi X-BeenThere: notmuch@notmuchmail.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: "Use and development of the notmuch mail system." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 03 Jul 2012 22:21:07 -0000 This patch series replaces the text format parser used for search in Emacs with a parser for the JSON format. This should address the escaping and flexibility problems that have plagued the text format. Like the text format, it supports incremental output. Patches 1-4 simply clean up the Emacs search code and could be pushed before the rest of the series. Patch 5 switches to the JSON plist representation internally, but retains the text parser. This requires some changes to the text parser to keep things working, but don't get too hung up on them since it's about to get replaced entirely. Patch 6 adds a test. Finally, patches 7 and 8 are the real meat. Patch 7 introduces a general incremental JSON parser. For search, we could probably get away with a simpler, hacky approach, but an incremental JSON parser is the type of thing you only want to write once---hacky or not---and it seems like the type of thing that could be useful elsewhere, too. It's general enough to support things like incremental show buffer rendering. Patch 8 rewrites the search output parser to use the JSON format via this incremental parser.