path: root/notmuch-show.c
Commit message (Collapse)AuthorAge
* notmuch-show: detect NULL pointer returned from notmuch_query_search_threadsDavid Bremner2014-01-24
| | | | We want to return an error status, not 0 or (worse) segfault.
* cli: clean up exit status code returned by the cli commandsJani Nikula2014-01-18
| | | | | | Apart from the status codes for format mismatches, the non-zero exit status codes have been arbitrary. Make the cli consistently return either EXIT_SUCCESS or EXIT_FAILURE.
* cli: add --include-html option to notmuch showJohn Lenz2013-08-27
| | | | | | | | | | | | | | For my client, the largest bottleneck for displaying large threads is exporting each html part individually since by default notmuch will not show the json parts. For large threads there can be quite a few parts and each must be exported and decoded one by one. Also, I then have to deal with all the crazy charsets which I can do through a library but is a pain. Therefore, this patch adds an --include-html option that causes the text/html parts to be included as part of the output of show. diff man/man1/notmuch-show.1
* cli: conform to same conditional build style as elsewhere in notmuch-showJani Nikula2013-04-01
| | | | | | | Conform to the same style for #ifdef GMIME_ATLEAST_26 conditional builds as elsewhere. There are no functional changes.
* cli: move config open/close to main() from subcommandsJani Nikula2013-03-08
| | | | | | | | | | | | | This allows specifying config file as a top level argument to notmuch, and generally makes it possible to override config file options in main(), without having to touch the subcommands. If the config file does not exist, one will be created for the notmuch main command and setup and help subcommands. Help is special in this regard; the config is created just to avoid errors about missing config, but it will not be saved. This also makes notmuch config the talloc context for subcommands.
* cli: config: make notmuch_config_open() "is new" parameter input onlyJani Nikula2013-03-07
| | | | | | | | We now have a notmuch_config_is_new() function to query whether a config was created or not. Change the notmuch_config_open() is_new parameter into boolean create_new to determine whether the function should create a new config if one doesn't exist. This reduces the complexity of the API.
* show: indicate length, encoding of omitted body contentPeter Wang2012-12-17
| | | | | | | | | | | If a leaf part's body content is omitted, return the encoded length and transfer encoding in --format=json output. This information may be used by the consumer, e.g. to decide whether to download a large attachment over a slow link. Returning the _encoded_ content length is more efficient than returning the _decoded_ content length. Returning the transfer encoding allows the consumer to estimate the decoded content length.
* show: indicate charset for all omitted partsPeter Wang2012-12-17
| | | | | | Write a "charset" field for all omitted parts for which it is applicable, not only text/html parts. Factor out the code to a separate function. It will be extended with more fields next.
* show: Support --format-versionAustin Clements2012-12-16
* Use the S-Expression structured printer in notmuch-show, notmuch-reply and ↵Peter Feigl2012-12-08
| | | | | | | notmuch-search. This patch uses the new S-Expression printer in the notmuch CLI (show, search and reply). You can now use --format=sexp for any of them.
* Rename the -json printer functions in notmuch-reply and notmuch-show to ↵Peter Feigl2012-12-08
| | | | | | | | | generic -sprinter functions. All the structured output functions in notmuch-reply and notmuch-show are renamed to a generic name (as they do not contain any json-specific code anyway). This patch is a preparation to actually using the new S-Expression sprinter in notmuch-reply and notmuch-show.
* show: More aggressively document the presence of devel/schemataAustin Clements2012-11-08
| | | | | | | Previously, the only mention of devel/schemata was a comment at the top of format_part_json, but the JSON output code is spread across several functions that are distributed across notmuch-show.c. Add references from the other three key JSON output functions.
* show: include Reply-To header in json outputPeter Wang2012-11-07
| | | | | | | Output the Reply-To header field if present in a message. I want to be able to see what the sender intended in my mail client, before hitting the reply key. Only json output is changed, like the recently added Bcc field.
* notmuch-show: include Bcc header in json outputMichal Nazarewicz2012-10-22
| | | | | With this change, emacs users can use notmuch-message-headers variable to configure notmuch-show display Bcc header.
* show: Remove now unused fields from notmuch_show_formatAustin Clements2012-08-03
| | | | | The message_set_{begin,sep,end} and null_message fields are no longer used because we now use the structure printer provided by the format.
* show: Convert do_show to use sprinterAustin Clements2012-08-03
* show: Convert show_message to use sprinterAustin Clements2012-08-03
| | | | | | | | | | Unlike the previous patches, this function is used for all formats. However, for formats other than the JSON format, the sprinter methods used by show_message are all no-ops, so this code continues to function correctly for all of the formats. Converting show_message eliminates show_null_message in the process, since this maps directly to an sprinter method.
* show: Convert envelope format_part_json to use sprinterAustin Clements2012-08-03
* show: Convert non-envelope format_part_json to use sprinterAustin Clements2012-08-03
* show: Convert format_part_sigstatus_json to use sprinterAustin Clements2012-08-03
* show: Convert format_headers_json to use sprinterAustin Clements2012-08-03
| | | | | | This no longer requires a talloc context (not that it really did before since it didn't return anything), so we remove its context argument.
* show: Feed the sprinter down to part formattersAustin Clements2012-08-03
| | | | | | There are several levels of function calls between where we create the sprinter and the call to the part formatter in show_message. This feeds the sprinter through all of them and into the part formatters.
* show: Associate an sprinter with each formatAustin Clements2012-08-03
| | | | | | | This associates an sprinter constructor with each show format and uses this to construct the appropriate sprinter. Currently nothing is done with this sprinter, but the following patches will weave it through the layers of notmuch show.
* cli: add --body=true|false option to notmuch-show.cMark Walters2012-07-24
| | | | | | | | | | This option allows the caller to suppress the output of the bodies of the messages. Currently this is only implemented for format=json. This is used by notmuch-pick.el (although not needed) because it gives a speed-up of at least a factor of a two (and in some cases a speed up of more than a factor of 8); moreover it reduces the memory usage in emacs hugely.
* cli: notmuch-show.c fix whitespace errorMark Walters2012-06-29
| | | | | Fix an existing whitespace error since it is right next to the changes of this series.
* cli: make --entire-thread=false work for format=json.Mark Walters2012-06-29
| | | | | | | | | | The --entire-thread option in notmuch-show.c defaults to true when format=json. Previously there was no way to turn this off. This patch makes it respect --entire-thread=false. To do this the patch moves the --entire-thread option to be a keyword option using the new command line parsing to allow the existing --entire-thread to keep working.
* cli: Let json output "null" messages for non --entire-threadMark Walters2012-06-29
| | | | | | | All formats except Json can output empty messages for non entire-thread, but in Json format we output "null" to keep the other elements (e.g. the replies to the omitted message) in the correct place.
* cli: use new notmuch_crypto_get_context in mime-node.cJameson Graef Rollins2012-06-10
| | | | | | | | This has the affect of lazily creating the crypto contexts only when needed. This removes code duplication from notmuch-show and notmuch-reply, and should speed up these functions considerably if the crypto flags are provided but the messages don't have any cryptographic parts.
* cli: new crypto verify flag to handle verificationJameson Graef Rollins2012-06-10
| | | | | | | Use this flag rather than depend on the existence of an initialized gpgctx, to determine whether we should verify a multipart/signed. We will be moving to create the ctx lazily, so we don't want to depend on it being previously initialized if it's not needed.
* cli: modify mime_node_open to take new crypto struct as argumentJameson Graef Rollins2012-06-10
| | | | This simplifies the interface considerably.
* cli: modify show and reply to use new crypto structJameson Graef Rollins2012-06-10
| | | | | notmuch_show_params_t is modified to use the new notmuch_crypto_t, and notmuch-show and notmuch-reply are modified accordingly.
* lib/cli: Make notmuch_database_open return a status codeAustin Clements2012-05-05
| | | | | | | | | | | | It has been a long-standing issue that notmuch_database_open doesn't return any indication of why it failed. This patch changes its prototype to return a notmuch_status_t and set an out-argument to the database itself, like other functions that return both a status and an object. In the interest of atomicity, this also updates every use in the CLI so that notmuch still compiles. Since this patch does not update the bindings, the Python bindings test fails.
* Use notmuch_database_destroy instead of notmuch_database_closeJustus Winter2012-04-28
| | | | | | Adapt the notmuch binaries source to the notmuch_database_close split. Signed-off-by: Justus Winter <4winter@informatik.uni-hamburg.de>
* show: Remove empty message_set_{start,sep,end} fieldsAustin Clements2012-04-15
| | | | Setting these to NULL is equivalent to the empty string now.
* show: Support NULL values for message_set_{start, sep, end}Austin Clements2012-04-15
| | | | | Many formats don't need these, so it's more convenient if they don't have to set them at all.
* show: Remove support for old-style formatters in show_messageAustin Clements2012-04-15
| | | | | show_message used to have a compatibility path for old-style formatters. This removes that.
* cli: move show to the new --exclude= option naming scheme.Mark Walters2012-04-07
| | | | | | | | | | | | | | This moves notmuch show to the --exclude=(true|false) naming scheme. When exclude=false show returns all threads that match including those that only match in an excluded message. The excluded messages are flagged. When exclude=true the behaviour depends on whether --entire-thread is set. If it is not set then show only returns the messages which match and are not excluded. If it is set then show returns all messages in the threads that match in a non-excluded message, flagging the excluded messages in these threads. The rationale is that it is awkward to use a thread with some missing messages.
* show/reply: Unify the code that extracts text partsAustin Clements2012-03-31
| | | | | | | | | Previously, show and reply had separate implementations of decoding and printing text parts. Now both use show's implementation, which was more complete. Show's implementation has been extended with an option to add reply quoting to the extracted part (this is implemented as a named flag to avoid naked booleans, even though it's the only flag it can take).
* reply: Add a JSON reply format.Adam Wolfe Gordon2012-03-19
| | | | | | | | This new JSON format for replies includes headers generated for a reply message as well as the headers of the original message. Using this data, a client can intelligently create a reply. For example, the emacs client will be able to create replies with quoted HTML parts by parsing the HTML parts.
* show: Convert raw format to the new self-recursive style, properly support ↵Austin Clements2012-03-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | interior parts This is fully compatible for root and leaf parts, but now has proper support for interior parts. This requires some design decisions that were guided by what I would want if I were to save a part. Specifically: - Leaf parts are printed without headers and with transfer decoding. This is what makes sense for saving attachments. (Furthermore, the transfer decoding is necessary since, without the headers, the caller would not be able to interpret non-transfer-decoded output.) - Message parts are printed with their message headers, but without enclosing part headers. This is what makes sense for saving a message as a whole (which is a message part) and for saving attached messages. This is symmetric for whole messages and for attached messages, though we special-case the whole message for performance reasons (and corner-case correctness reasons: given malformed input, GMime may not be able to reproduce it from the parsed representation). - Multipart parts are printed with their headers and all child parts. It's not clear what the best thing to do for multipart is, but this was the most natural to implement and can be justified because such parts can't be interpreted without their headers. As an added benefit, we can move the special-case code for part 0 into the raw formatter.
* show: Move format_part_content_raw with the other new-style formatsAustin Clements2012-03-18
| | | | Just code motion.
* show: Convert mbox format to new self-recursive styleAustin Clements2012-03-18
| | | | Given the lack of recursion, this is pretty easy.
* show: Move format_message_mbox with the other new-style formatsAustin Clements2012-03-18
| | | | Just code motion.
* show: Allow formatters to return errorsAustin Clements2012-03-18
| | | | | | | Formatter errors are propagated to the exit status of notmuch show. This isn't used by the JSON or text formatters, but it will be useful for the raw format, which is pickier.
* cli: omit excluded messages in results where appropriate.Mark Walters2012-03-02
| | | | | | | | | | | | | In all cases of notmuch count/search/show where the results returned cannot reflect the exclude flag return just the matched not-excluded results. If the caller wishes to have all the matched results (i.e., including the excluded ones) they should call with the --no-exclude option. The relevant cases are count: both threads and messages search: all cases except the summary view show: mbox format
* cli: Make notmuch-show respect excludes.Mark Walters2012-03-02
| | | | | | | | This adds the excludes to notmuch-show.c. We do not exclude when only a single message (or part) is requested. notmuch-show will output the exclude information when either text or json format is requested. As this changes the output from notmuch-show it breaks many tests (in a trivial and expected fashion).
* show: Further general simplifications of the JSON formatterAustin Clements2012-03-01
* show: Make format_part_sigstatus_json's API consistent between GMIME 2.4 and 2.6Austin Clements2012-03-01
| | | | | The implementation is still different for GMIME 2.4 and 2.6, but at least now the caller doesn't have to be aware of this.
* show: Make JSON helper functions print complete objectsAustin Clements2012-03-01
| | | | | This makes the main recursive function easier to follow because helper functions don't add fields to the running object.
* show: Simplify talloc use in format_headers_jsonAustin Clements2012-03-01
| | | | Previously there was an unnecessary talloc context.