Re: [PATCH] emacs: wash: make word-wrap bound message width
[notmuch-archives.git] / 9d / e2517aaf45c4ce6925e7d67d4cd6adb344b119
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 E4EA5431FCB\r
6         for <notmuch@notmuchmail.org>; Fri, 27 Jul 2012 21:29:27 -0700 (PDT)\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 NvVTVTMNkubP for <notmuch@notmuchmail.org>;\r
16         Fri, 27 Jul 2012 21:29:26 -0700 (PDT)\r
17 Received: from dmz-mailsec-scanner-1.mit.edu (DMZ-MAILSEC-SCANNER-1.MIT.EDU\r
18         [18.9.25.12])\r
19         by olra.theworths.org (Postfix) with ESMTP id CC50C431FBD\r
20         for <notmuch@notmuchmail.org>; Fri, 27 Jul 2012 21:29:25 -0700 (PDT)\r
21 X-AuditID: 1209190c-b7f806d000006b87-63-50136aa48809\r
22 Received: from mailhub-auth-4.mit.edu ( [18.7.62.39])\r
23         by dmz-mailsec-scanner-1.mit.edu (Symantec Messaging Gateway) with SMTP\r
24         id E1.00.27527.4AA63105; Sat, 28 Jul 2012 00:29:24 -0400 (EDT)\r
25 Received: from outgoing.mit.edu (OUTGOING-AUTH.MIT.EDU [18.7.22.103])\r
26         by mailhub-auth-4.mit.edu (8.13.8/8.9.2) with ESMTP id q6S4TN2h012929; \r
27         Sat, 28 Jul 2012 00:29:23 -0400\r
28 Received: from drake.dyndns.org\r
29         (209-6-116-242.c3-0.arl-ubr1.sbo-arl.ma.cable.rcn.com\r
30         [209.6.116.242]) (authenticated bits=0)\r
31         (User authenticated as amdragon@ATHENA.MIT.EDU)\r
32         by outgoing.mit.edu (8.13.6/8.12.4) with ESMTP id q6S4TKVu027355\r
33         (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=NOT);\r
34         Sat, 28 Jul 2012 00:29:22 -0400 (EDT)\r
35 Received: from amthrax by drake.dyndns.org with local (Exim 4.77)\r
36         (envelope-from <amdragon@mit.edu>)\r
37         id 1SuyeW-0002Ws-G3; Sat, 28 Jul 2012 00:29:20 -0400\r
38 From: Austin Clements <amdragon@MIT.EDU>\r
39 To: notmuch@notmuchmail.org\r
40 Subject: [PATCH v2 04/13] show: Associate an sprinter with each format\r
41 Date: Sat, 28 Jul 2012 00:29:05 -0400\r
42 Message-Id: <1343449754-9010-5-git-send-email-amdragon@mit.edu>\r
43 X-Mailer: git-send-email 1.7.10\r
44 In-Reply-To: <1343449754-9010-1-git-send-email-amdragon@mit.edu>\r
45 References: <1343449754-9010-1-git-send-email-amdragon@mit.edu>\r
46 X-Brightmail-Tracker:\r
47  H4sIAAAAAAAAA+NgFjrHIsWRmVeSWpSXmKPExsUixG6nrrskSzjAYNlFBYu9De2MFqvn8lhc\r
48         vzmT2eLNynmsDiweO2fdZfdYvGk/m8fhrwtZPJ6tusUcwBLFZZOSmpNZllqkb5fAlXF3okzB\r
49         JfGKRQcOMzcwvhLqYuTkkBAwkZh86BQbhC0mceHeeiCbi0NIYB+jxJ2Or+wQzgZGiXdnL0A5\r
50         j5gk1iy6zQrSIiQwl1Fi6U4uEJtNQENi2/7ljCC2iIC0xM67s4FqODiYBfIkHq+VAAkLC7hJ\r
51         NK3fCNbKIqAqsXzlTbByXgF7idd730NdIS/x9H4fmM0p4CCx+eUHZohV9hK7J29gncDIv4CR\r
52         YRWjbEpulW5uYmZOcWqybnFyYl5eapGuoV5uZoleakrpJkZQsHFK8uxgfHNQ6RCjAAejEg+v\r
53         8nWhACHWxLLiytxDjJIcTEqivFHhwgFCfEn5KZUZicUZ8UWlOanFhxglOJiVRHh3CgLleFMS\r
54         K6tSi/JhUtIcLErivJdTbvoLCaQnlqRmp6YWpBbBZGU4OJQkeLdnAjUKFqWmp1akZeaUIKSZ\r
55         ODhBhvMADV8DUsNbXJCYW5yZDpE/xagoJc47CSQhAJLIKM2D64Ulg1eM4kCvCPNeA6niASYS\r
56         uO5XQIOZgAZbRAuBDC5JREhJNTBKh3m6r2J/6qq/c9HaPTart8yW7TELsAzOfZh58d6kkydd\r
57         9vzNCrfoqy1s38Wx61PTNdUnk5xUd9wvWnx+0en3MesFiu/dfmmbphe2x0F96cPUZ+ucg64K\r
58         1vHW3nD4+1sr7VTTLxmTxUvbVXSP//VfdVdrdWz5Iactc2cF2C1RcXL+892tTDhTiaU4I9FQ\r
59         i7moOBEAUivb2uECAAA=\r
60 Cc: tomi.ollila@iki.fi\r
61 X-BeenThere: notmuch@notmuchmail.org\r
62 X-Mailman-Version: 2.1.13\r
63 Precedence: list\r
64 List-Id: "Use and development of the notmuch mail system."\r
65         <notmuch.notmuchmail.org>\r
66 List-Unsubscribe: <http://notmuchmail.org/mailman/options/notmuch>,\r
67         <mailto:notmuch-request@notmuchmail.org?subject=unsubscribe>\r
68 List-Archive: <http://notmuchmail.org/pipermail/notmuch>\r
69 List-Post: <mailto:notmuch@notmuchmail.org>\r
70 List-Help: <mailto:notmuch-request@notmuchmail.org?subject=help>\r
71 List-Subscribe: <http://notmuchmail.org/mailman/listinfo/notmuch>,\r
72         <mailto:notmuch-request@notmuchmail.org?subject=subscribe>\r
73 X-List-Received-Date: Sat, 28 Jul 2012 04:29:28 -0000\r
74 \r
75 This associates an sprinter constructor with each show format and uses\r
76 this to construct the appropriate sprinter.  Currently nothing is done\r
77 with this sprinter, but the following patches will weave it through\r
78 the layers of notmuch show.\r
79 ---\r
80  notmuch-client.h |    2 ++\r
81  notmuch-show.c   |    9 +++++++++\r
82  2 files changed, 11 insertions(+)\r
83 \r
84 diff --git a/notmuch-client.h b/notmuch-client.h\r
85 index f930798..e4172a2 100644\r
86 --- a/notmuch-client.h\r
87 +++ b/notmuch-client.h\r
88 @@ -66,9 +66,11 @@ typedef GMimeCipherContext notmuch_crypto_context_t;\r
89  #define STRINGIFY_(s) #s\r
90  \r
91  typedef struct mime_node mime_node_t;\r
92 +typedef struct sprinter sprinter_t;\r
93  struct notmuch_show_params;\r
94  \r
95  typedef struct notmuch_show_format {\r
96 +    sprinter_t *(*new_sprinter) (const void *ctx, FILE *stream);\r
97      const char *message_set_start;\r
98      notmuch_status_t (*part) (const void *ctx,\r
99                               struct mime_node *node, int indent,\r
100 diff --git a/notmuch-show.c b/notmuch-show.c\r
101 index d3419e4..d04943f 100644\r
102 --- a/notmuch-show.c\r
103 +++ b/notmuch-show.c\r
104 @@ -20,12 +20,14 @@\r
105  \r
106  #include "notmuch-client.h"\r
107  #include "gmime-filter-reply.h"\r
108 +#include "sprinter.h"\r
109  \r
110  static notmuch_status_t\r
111  format_part_text (const void *ctx, mime_node_t *node,\r
112                   int indent, const notmuch_show_params_t *params);\r
113  \r
114  static const notmuch_show_format_t format_text = {\r
115 +    .new_sprinter = sprinter_text_create,\r
116      .part = format_part_text,\r
117  };\r
118  \r
119 @@ -34,6 +36,7 @@ format_part_json_entry (const void *ctx, mime_node_t *node,\r
120                         int indent, const notmuch_show_params_t *params);\r
121  \r
122  static const notmuch_show_format_t format_json = {\r
123 +    .new_sprinter = sprinter_json_create,\r
124      .message_set_start = "[",\r
125      .part = format_part_json_entry,\r
126      .message_set_sep = ", ",\r
127 @@ -46,6 +49,7 @@ format_part_mbox (const void *ctx, mime_node_t *node,\r
128                   int indent, const notmuch_show_params_t *params);\r
129  \r
130  static const notmuch_show_format_t format_mbox = {\r
131 +    .new_sprinter = sprinter_text_create,\r
132      .part = format_part_mbox,\r
133  };\r
134  \r
135 @@ -55,6 +59,7 @@ format_part_raw (unused (const void *ctx), mime_node_t *node,\r
136                  unused (const notmuch_show_params_t *params));\r
137  \r
138  static const notmuch_show_format_t format_raw = {\r
139 +    .new_sprinter = sprinter_text_create,\r
140      .part = format_part_raw,\r
141  };\r
142  \r
143 @@ -1003,6 +1008,7 @@ notmuch_show_command (void *ctx, unused (int argc), unused (char *argv[]))\r
144      char *query_string;\r
145      int opt_index, ret;\r
146      const notmuch_show_format_t *format = &format_text;\r
147 +    sprinter_t *sprinter;\r
148      notmuch_show_params_t params = {\r
149         .part = -1,\r
150         .omit_excluded = TRUE,\r
151 @@ -1130,6 +1136,9 @@ notmuch_show_command (void *ctx, unused (int argc), unused (char *argv[]))\r
152         return 1;\r
153      }\r
154  \r
155 +    /* Create structure printer. */\r
156 +    sprinter = format->new_sprinter(ctx, stdout);\r
157 +\r
158      /* If a single message is requested we do not use search_excludes. */\r
159      if (params.part >= 0)\r
160         ret = do_show_single (ctx, query, format, &params);\r
161 -- \r
162 1.7.10\r
163 \r