Re: [PATCH v2 3/5] Use the S-Expression structured printer in notmuch-show, notmuch...
[notmuch-archives.git] / e1 / a5acac3fbf1c8465f393a5b094ebb0d6aa6a54
1 Return-Path: <amdragon@mit.edu>\r
2 X-Original-To: notmuch@notmuchmail.org\r
3 Delivered-To: notmuch@notmuchmail.org\r
4 Received: from localhost (localhost [127.0.0.1])\r
5         by olra.theworths.org (Postfix) with ESMTP id ED0D6431FB6\r
6         for <notmuch@notmuchmail.org>; Tue,  4 Dec 2012 11:22:50 -0800 (PST)\r
7 X-Virus-Scanned: Debian amavisd-new at olra.theworths.org\r
8 X-Spam-Flag: NO\r
9 X-Spam-Score: -0.7\r
10 X-Spam-Level: \r
11 X-Spam-Status: No, score=-0.7 tagged_above=-999 required=5\r
12         tests=[RCVD_IN_DNSWL_LOW=-0.7] autolearn=disabled\r
13 Received: from olra.theworths.org ([127.0.0.1])\r
14         by localhost (olra.theworths.org [127.0.0.1]) (amavisd-new, port 10024)\r
15         with ESMTP id JuhNdl0LzDd2 for <notmuch@notmuchmail.org>;\r
16         Tue,  4 Dec 2012 11:22:47 -0800 (PST)\r
17 Received: from dmz-mailsec-scanner-2.mit.edu (DMZ-MAILSEC-SCANNER-2.MIT.EDU\r
18         [18.9.25.13])\r
19         by olra.theworths.org (Postfix) with ESMTP id 07A67431FAE\r
20         for <notmuch@notmuchmail.org>; Tue,  4 Dec 2012 11:22:46 -0800 (PST)\r
21 X-AuditID: 1209190d-b7f266d00000092b-d5-50be4d85bb38\r
22 Received: from mailhub-auth-3.mit.edu ( [18.9.21.43])\r
23         by dmz-mailsec-scanner-2.mit.edu (Symantec Messaging Gateway) with SMTP\r
24         id 5F.E9.02347.58D4EB05; Tue,  4 Dec 2012 14:22:45 -0500 (EST)\r
25 Received: from outgoing.mit.edu (OUTGOING-AUTH.MIT.EDU [18.7.22.103])\r
26         by mailhub-auth-3.mit.edu (8.13.8/8.9.2) with ESMTP id qB4JMjsI026875; \r
27         Tue, 4 Dec 2012 14:22:45 -0500\r
28 Received: from awakening.csail.mit.edu (awakening.csail.mit.edu [18.26.4.91])\r
29         (authenticated bits=0)\r
30         (User authenticated as amdragon@ATHENA.MIT.EDU)\r
31         by outgoing.mit.edu (8.13.6/8.12.4) with ESMTP id qB4JMi8s009547\r
32         (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NOT);\r
33         Tue, 4 Dec 2012 14:22:45 -0500 (EST)\r
34 Received: from amthrax by awakening.csail.mit.edu with local (Exim 4.80)\r
35         (envelope-from <amdragon@mit.edu>)\r
36         id 1Tfy4p-0001nP-Qt; Tue, 04 Dec 2012 14:22:43 -0500\r
37 From: Austin Clements <aclements@csail.mit.edu>\r
38 To: Peter Feigl <craven@gmx.net>, notmuch@notmuchmail.org\r
39 Subject: Re: [PATCH v2 3/5] Use the S-Expression structured printer in\r
40         notmuch-show, notmuch-reply and notmuch-search.\r
41 In-Reply-To: <1354632382-15609-4-git-send-email-craven@gmx.net>\r
42 References: <1354632382-15609-1-git-send-email-craven@gmx.net>\r
43         <1354632382-15609-4-git-send-email-craven@gmx.net>\r
44 User-Agent: Notmuch/0.14+100~gcb9b0b0 (http://notmuchmail.org) Emacs/23.4.1\r
45         (i486-pc-linux-gnu)\r
46 Date: Tue, 04 Dec 2012 14:22:43 -0500\r
47 Message-ID: <87d2ypy64c.fsf@awakening.csail.mit.edu>\r
48 MIME-Version: 1.0\r
49 Content-Type: text/plain; charset=us-ascii\r
50 X-Brightmail-Tracker:\r
51  H4sIAAAAAAAAA+NgFrrPIsWRmVeSWpSXmKPExsUixCmqrdvquy/A4EaLnsXehnZGi+s3ZzI7\r
52         MHks3rSfzePZqlvMAUxRXDYpqTmZZalF+nYJXBk3191kLlhgULG18yJrA+NF1S5GTg4JAROJ\r
53         x5feMUPYYhIX7q1nA7GFBPYxSux9ltDFyAVkr2eU+LJ8ISOEc4FJ4vTBqywQzhJGiY+TvrGD\r
54         tLAJ6EusWDuJFcQWEbCUmPrlEtgoYYEyiaaHvUBxDg5OAXuJ9y36EBsKJa6sOcQIEhYViJe4\r
55         vFQBJMwioCqxc9IhsIN4gY6bsauLBcIWlDg58wmYzSygJXHj30umCYwCs5CkZiFJLWBkWsUo\r
56         m5JbpZubmJlTnJqsW5ycmJeXWqRrpJebWaKXmlK6iREcjpK8OxjfHVQ6xCjAwajEwytpvC9A\r
57         iDWxrLgy9xCjJAeTkijvP0+gEF9SfkplRmJxRnxRaU5q8SFGCQ5mJRHef3ZAOd6UxMqq1KJ8\r
58         mJQ0B4uSOO+VlJv+QgLpiSWp2ampBalFMFkZDg4lCd6LPkCNgkWp6akVaZk5JQhpJg5OkOE8\r
59         QMPngtTwFhck5hZnpkPkTzEqSonzfgZJCIAkMkrz4Hph6eIVozjQK8K8/0CqeICpBq77FdBg\r
60         JqDBL4R2gwwuSURISTUwlnVzPrXJZPdlWPNXJTja8EtuQezJc3ZZm23qLy9oCX1RMz8v4J9d\r
61         qLxzS8Il73juNf4X/tzsvbdgr6iK1f5vqfM0XJ4kO5jOL9lyYqnbp9euftongtnWMudaZEw9\r
62         9Wyfp+l1rZlVuRcWpEtmvv3ecz1l6WO5z0efa7prCIXucd6Z95TBUaFDiaU4I9FQi7moOBEA\r
63         1rGbRPICAAA=\r
64 X-BeenThere: notmuch@notmuchmail.org\r
65 X-Mailman-Version: 2.1.13\r
66 Precedence: list\r
67 List-Id: "Use and development of the notmuch mail system."\r
68         <notmuch.notmuchmail.org>\r
69 List-Unsubscribe: <http://notmuchmail.org/mailman/options/notmuch>,\r
70         <mailto:notmuch-request@notmuchmail.org?subject=unsubscribe>\r
71 List-Archive: <http://notmuchmail.org/pipermail/notmuch>\r
72 List-Post: <mailto:notmuch@notmuchmail.org>\r
73 List-Help: <mailto:notmuch-request@notmuchmail.org?subject=help>\r
74 List-Subscribe: <http://notmuchmail.org/mailman/listinfo/notmuch>,\r
75         <mailto:notmuch-request@notmuchmail.org?subject=subscribe>\r
76 X-List-Received-Date: Tue, 04 Dec 2012 19:22:51 -0000\r
77 \r
78 On Tue, 04 Dec 2012, Peter Feigl <craven@gmx.net> wrote:\r
79 > This patch uses the new S-Expression printer in the notmuch CLI (show,\r
80 > search and reply). You can now use --format=sexp for any of them.\r
81 > ---\r
82 >  notmuch-reply.c  |  5 +++++\r
83 >  notmuch-search.c |  6 +++++-\r
84 >  notmuch-show.c   | 18 ++++++++++++++----\r
85 >  3 files changed, 24 insertions(+), 5 deletions(-)\r
86 >\r
87 > diff --git a/notmuch-reply.c b/notmuch-reply.c\r
88 > index 53aefa7..69fd256 100644\r
89 > --- a/notmuch-reply.c\r
90 > +++ b/notmuch-reply.c\r
91 > @@ -697,6 +697,7 @@ notmuch_reply_format_headers_only(void *ctx,\r
92 >  enum {\r
93 >      FORMAT_DEFAULT,\r
94 >      FORMAT_JSON,\r
95 > +    FORMAT_SEXP,\r
96 >      FORMAT_HEADERS_ONLY,\r
97 >  };\r
98 >  \r
99 > @@ -724,6 +725,7 @@ notmuch_reply_command (void *ctx, int argc, char *argv[])\r
100 >       { NOTMUCH_OPT_KEYWORD, &format, "format", 'f',\r
101 >         (notmuch_keyword_t []){ { "default", FORMAT_DEFAULT },\r
102 >                                 { "json", FORMAT_JSON },\r
103 > +                               { "sexp", FORMAT_SEXP },\r
104 \r
105 "sexpa" if we're going to support both alists and plists?  Same for the\r
106 others.\r
107 \r
108 >                                 { "headers-only", FORMAT_HEADERS_ONLY },\r
109 >                                 { 0, 0 } } },\r
110 >       { NOTMUCH_OPT_KEYWORD, &reply_all, "reply-to", 'r',\r
111 > @@ -745,6 +747,9 @@ notmuch_reply_command (void *ctx, int argc, char *argv[])\r
112 >      } else if (format == FORMAT_JSON) {\r
113 >       reply_format_func = notmuch_reply_format_sprinter;\r
114 >       sp = sprinter_json_create (ctx, stdout);\r
115 > +    } else if (format == FORMAT_SEXP) {\r
116 > +     reply_format_func = notmuch_reply_format_sprinter;\r
117 > +     sp = sprinter_sexp_create (ctx, stdout);\r
118 >      } else {\r
119 >       reply_format_func = notmuch_reply_format_default;\r
120 >      }\r
121 > diff --git a/notmuch-search.c b/notmuch-search.c\r
122 > index 830c4e4..6218622 100644\r
123 > --- a/notmuch-search.c\r
124 > +++ b/notmuch-search.c\r
125 > @@ -305,7 +305,7 @@ notmuch_search_command (void *ctx, int argc, char *argv[])\r
126 >      int exclude = EXCLUDE_TRUE;\r
127 >      unsigned int i;\r
128 >  \r
129 > -    enum { NOTMUCH_FORMAT_JSON, NOTMUCH_FORMAT_TEXT }\r
130 > +    enum { NOTMUCH_FORMAT_JSON, NOTMUCH_FORMAT_TEXT, NOTMUCH_FORMAT_SEXP }\r
131 >       format_sel = NOTMUCH_FORMAT_TEXT;\r
132 >  \r
133 >      notmuch_opt_desc_t options[] = {\r
134 > @@ -315,6 +315,7 @@ notmuch_search_command (void *ctx, int argc, char *argv[])\r
135 >                                 { 0, 0 } } },\r
136 >       { NOTMUCH_OPT_KEYWORD, &format_sel, "format", 'f',\r
137 >         (notmuch_keyword_t []){ { "json", NOTMUCH_FORMAT_JSON },\r
138 > +                               { "sexp", NOTMUCH_FORMAT_SEXP },\r
139 >                                 { "text", NOTMUCH_FORMAT_TEXT },\r
140 >                                 { 0, 0 } } },\r
141 >       { NOTMUCH_OPT_KEYWORD, &output, "output", 'o',\r
142 > @@ -347,6 +348,9 @@ notmuch_search_command (void *ctx, int argc, char *argv[])\r
143 >      case NOTMUCH_FORMAT_JSON:\r
144 >       format = sprinter_json_create (ctx, stdout);\r
145 >       break;\r
146 > +    case NOTMUCH_FORMAT_SEXP:\r
147 > +     format = sprinter_sexp_create (ctx, stdout);\r
148 > +     break;\r
149 >      default:\r
150 >       /* this should never happen */\r
151 >       INTERNAL_ERROR("no output format selected");\r
152 > diff --git a/notmuch-show.c b/notmuch-show.c\r
153 > index 38c621f..d4860f1 100644\r
154 > --- a/notmuch-show.c\r
155 > +++ b/notmuch-show.c\r
156 > @@ -40,6 +40,11 @@ static const notmuch_show_format_t format_json = {\r
157 >      .part = format_part_sprinter_entry,\r
158 >  };\r
159 >  \r
160 > +static const notmuch_show_format_t format_sexp = {\r
161 > +    .new_sprinter = sprinter_sexp_create,\r
162 > +    .part = format_part_sprinter_entry,\r
163 > +};\r
164 > +\r
165 >  static notmuch_status_t\r
166 >  format_part_mbox (const void *ctx, sprinter_t *sp, mime_node_t *node,\r
167 >                 int indent, const notmuch_show_params_t *params);\r
168 > @@ -110,7 +115,7 @@ _get_one_line_summary (const void *ctx, notmuch_message_t *message)\r
169 >  static void\r
170 >  format_message_sprinter (sprinter_t *sp, notmuch_message_t *message)\r
171 >  {\r
172 > -    /* Any changes to the JSON format should be reflected in the file\r
173 > +    /* Any changes to the JSON or S-Expression format should be reflected in the file\r
174 >       * devel/schemata. */\r
175 \r
176 Please re-wrap this comment to 72 columns.\r
177 \r
178 >  \r
179 >      void *local = talloc_new (NULL);\r
180 > @@ -1012,6 +1017,7 @@ do_show (void *ctx,\r
181 >  enum {\r
182 >      NOTMUCH_FORMAT_NOT_SPECIFIED,\r
183 >      NOTMUCH_FORMAT_JSON,\r
184 > +    NOTMUCH_FORMAT_SEXP,\r
185 >      NOTMUCH_FORMAT_TEXT,\r
186 >      NOTMUCH_FORMAT_MBOX,\r
187 >      NOTMUCH_FORMAT_RAW\r
188 > @@ -1056,6 +1062,7 @@ notmuch_show_command (void *ctx, unused (int argc), unused (char *argv[]))\r
189 >       { NOTMUCH_OPT_KEYWORD, &format_sel, "format", 'f',\r
190 >         (notmuch_keyword_t []){ { "json", NOTMUCH_FORMAT_JSON },\r
191 >                                 { "text", NOTMUCH_FORMAT_TEXT },\r
192 > +                               { "sexp", NOTMUCH_FORMAT_SEXP },\r
193 >                                 { "mbox", NOTMUCH_FORMAT_MBOX },\r
194 >                                 { "raw", NOTMUCH_FORMAT_RAW },\r
195 >                                 { 0, 0 } } },\r
196 > @@ -1100,6 +1107,9 @@ notmuch_show_command (void *ctx, unused (int argc), unused (char *argv[]))\r
197 >      case NOTMUCH_FORMAT_TEXT:\r
198 >       format = &format_text;\r
199 >       break;\r
200 > +    case NOTMUCH_FORMAT_SEXP:\r
201 > +     format = &format_sexp;\r
202 > +     break;\r
203 >      case NOTMUCH_FORMAT_MBOX:\r
204 >       if (params.part > 0) {\r
205 >           fprintf (stderr, "Error: specifying parts is incompatible with mbox output format.\n");\r
206 > @@ -1120,7 +1130,7 @@ notmuch_show_command (void *ctx, unused (int argc), unused (char *argv[]))\r
207 >  \r
208 >      /* Default is entire-thread = FALSE except for format=json. */\r
209 >      if (entire_thread == ENTIRE_THREAD_DEFAULT) {\r
210 > -     if (format == &format_json)\r
211 > +     if (format == &format_json || format == &format_sexp)\r
212 \r
213 Good catch.\r
214 \r
215 >           entire_thread = ENTIRE_THREAD_TRUE;\r
216 >       else\r
217 >           entire_thread = ENTIRE_THREAD_FALSE;\r
218 > @@ -1131,8 +1141,8 @@ notmuch_show_command (void *ctx, unused (int argc), unused (char *argv[]))\r
219 >           fprintf (stderr, "Warning: --body=false is incompatible with --part > 0. Disabling.\n");\r
220 >           params.output_body = TRUE;\r
221 >       } else {\r
222 > -         if (format != &format_json)\r
223 > -             fprintf (stderr, "Warning: --body=false only implemented for format=json\n");\r
224 > +         if (format != &format_json && format != &format_sexp)\r
225 > +             fprintf (stderr, "Warning: --body=false only implemented for format=json and format=sexp\n");\r
226 >       }\r
227 >      }\r
228 >  \r
229 > -- \r
230 > 1.8.0\r
231 >\r
232 > _______________________________________________\r
233 > notmuch mailing list\r
234 > notmuch@notmuchmail.org\r
235 > http://notmuchmail.org/mailman/listinfo/notmuch\r