aboutsummaryrefslogtreecommitdiffhomepage
Commit message (Collapse)AuthorAge
* show/reply: Unify the code that extracts text partsGravatar Austin 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).
* emacs: Escape all message ID queriesGravatar Austin Clements2012-03-30
| | | | | | | | | | This adds a lib function to turn a message ID into a properly escaped message ID query and uses this function wherever we previously hand-constructed ID queries. Wherever this new function is used, documentation has been clarified to refer to "id: queries" instead of "message IDs". This fixes the broken test introduced by the previous patch.
* test: Add Emacs test for messages with quotes in their message IDGravatar Austin Clements2012-03-30
| | | | | Currently this is broken because Emacs doesn't properly escape double quotes in message IDs.
* cli: refactor "notmuch restore" message tagging into a separate functionGravatar Jani Nikula2012-03-30
| | | | | | | Refactor to make tagging code easier to reuse in the future. No functional changes. Signed-off-by: Jani Nikula <jani@nikula.org>
* cli: refactor "notmuch tag" query tagging into a separate functionGravatar Jani Nikula2012-03-30
| | | | | | | Refactor to make tagging code easier to reuse in the future. No functional changes. Signed-off-by: Jani Nikula <jani@nikula.org>
* cli: refactor "notmuch tag" data structures for tagging operationsGravatar Jani Nikula2012-03-30
| | | | | | | | | | | | | | To simplify code, keep all tagging operations in a single array instead of separate add and remove arrays. Apply tag changes in the order specified on the command line, instead of first removing and then adding the tags. This results in a minor functional change: If a tag is both added and removed, the last specified operation is now used. Previously the tag was always added. Change the relevant test to reflect the new behaviour. Signed-off-by: Jani Nikula <jani@nikula.org>
* test: add test for both adding and removing a tag at the same timeGravatar Jani Nikula2012-03-30
| | | | | | | The current behaviour is that regardless of the order in which the addition and removal of a tag are specified, the tag is added. Signed-off-by: Jani Nikula <jani@nikula.org>
* emacs: content-type comparison should be case insensitive.Gravatar Mark Walters2012-03-30
| | | | | | | | The function notmuch-match-content-type was comparing content types case sensitively. Fix it so it tests case insensitively. This fixes a bug where emacs would not include any body when replying to a message with content-type TEXT/PLAIN.
* debian packaging: new binary package notmuch-muttGravatar Stefano Zacchiroli2012-03-30
|
* contrib: new mutt-notmuch utility for Mutt integrationGravatar Stefano Zacchiroli2012-03-30
|
* NEWS: consistent 2-space indentation in new contentGravatar Tomi Ollila2012-03-22
| | | | | | Some 0.12 NEWS items descriptions were indented with 3 spaces whereas all other lines are indented with 2 spaces. Brought those escaped lines back in line with others.
* Merge tag 'debian/0.12-1'Gravatar David Bremner2012-03-20
|\ | | | | | | notmuch Debian 0.12-1 upload (same as 0.12 + debian changelog fix)
| * debian: reword changelog about ignoresGravatar David Bremner2012-03-20
| |
* | Allow selecting which version of gmime is used to build notmuch.Gravatar Tomi Ollila2012-03-20
| | | | | | | | | | | | | | | | This allows for testing against both versions of gmime on a single machine, without having to mess with pkg-config paths. This is rework of Tom Prince's patch submitted in id:"1331402091-15663-1-git-send-email-tom.prince@ualberta.net"
* | configure: store $IFS to $DEFAULT_IFS readonly variableGravatar Tomi Ollila2012-03-20
| | | | | | | | | | | | In the future, IFS value needs to be changed in a few places in configure -- and then restored. Store the original value to $DEFAULT_IFS for easy restoration.
* | Do not try to parse the options for --build and --host argumentsGravatar Justus Winter2012-03-20
| | | | | | | | | | | | | | | | | | | | Formerly the code assumed the arguments to be triples and threw an error if this was not the case. But those arguments are only there for compatibility with autotools and are not used within the build system, so just dropping the code parsing these values makes the build system more robust. Signed-off-by: Justus Winter <4winter@informatik.uni-hamburg.de>
* | Add GNU as a valid platformGravatar Justus Winter2012-03-20
| | | | | | | | Signed-off-by: Justus Winter <4winter@informatik.uni-hamburg.de>
* | Merge tag '0.12'Gravatar David Bremner2012-03-20
|\| | | | | | | notmuch 0.12 release
| * add NEWS item for printingGravatar David Bremner2012-03-20
| |
* | Merge branch 'release'Gravatar David Bremner2012-03-19
|\| | | | | | | | | | | | | Conflicts: NEWS Conflicts resolved by hand for date of 0.12 release.
| * debian: add changelog stanza for 0.12Gravatar David Bremner2012-03-19
| | | | | | | | Include extremely terse summary of NEWS.
| * NEWS: add news item for help = man pageGravatar David Bremner2012-03-19
| | | | | | | | As we discovered recently on the list, this really is new for 0.12
| * update version to 0.12Gravatar David Bremner2012-03-19
| | | | | | | | There may be a few NEWS changes after this, but no code (hopefully).
| * NEWS: update discussion of GMime 2.6 version requirements.Gravatar David Bremner2012-03-19
| | | | | | | | | | Be more specific than "Current GMime 2.6". Also explain why we need >=2.6.7
| * NEWS: set release date for 0.12Gravatar David Bremner2012-03-19
| |
* | NEWS: news for reply enhancementsGravatar Adam Wolfe Gordon2012-03-19
| |
* | emacs: Use the new JSON reply format and message-cite-originalGravatar Adam Wolfe Gordon2012-03-19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Use the new JSON reply format to create replies in emacs. Quote HTML parts nicely by using mm-display-part to turn them into displayable text, then quoting them with message-cite-original. This is very useful for users who regularly receive HTML-only email. Use message-mode's message-cite-original function to create the quoted body for reply messages. In order to make this act like the existing notmuch defaults, you will need to set the following in your emacs configuration: message-citation-line-format "On %a, %d %b %Y, %f wrote:" message-citation-line-function 'message-insert-formatted-citation-line The tests have been updated to reflect the (ugly) emacs default.
* | test: Add broken tests for new emacs reply functionalityGravatar Adam Wolfe Gordon2012-03-19
| | | | | | | | | | Add tests for creating nice replies to multipart messages, including those with HTML parts. These tests are expected to fail for now.
* | emacs: Factor out useful functions into notmuch-libGravatar Adam Wolfe Gordon2012-03-19
| | | | | | | | | | Move a few functions related to handling multipart/alternative parts into notmuch-lib.el, so they can be used by future reply code.
* | man: Add --decrypt to reply flagsGravatar Adam Wolfe Gordon2012-03-19
| |
* | man: Update notmuch-reply man page for JSON format.Gravatar Adam Wolfe Gordon2012-03-19
| |
* | schemata: Add documentation for JSON reply format.Gravatar Adam Wolfe Gordon2012-03-19
| |
* | reply: Add a JSON reply format.Gravatar 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.
* | TODO: Add replying to multiple messagesGravatar Adam Wolfe Gordon2012-03-19
| |
* | reply: Factor out reply creationGravatar Adam Wolfe Gordon2012-03-19
| | | | | | | | | | Factor out the creation of a reply message based on an original message so it can be shared by different reply formats.
* | test: Add broken test for the new JSON reply format.Gravatar Adam Wolfe Gordon2012-03-19
| |
* | NEWS: start section for 0.13Gravatar David Bremner2012-03-18
| | | | | | | | | | | | | | People are making patches for the 0.12 NEWS section for features that won't be there. Let's help them out by adding a new stanza.
* | emacs: Fix search tab completion in terminalsGravatar Austin Clements2012-03-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | In X, Emacs distinguishes the tab key, which produces a 'tab event; from C-i, which produces a ?\t event. However, in a terminal, these are indistinguishable and only produce a ?\t event. In order to simplify things, Emacs automatically translates from 'tab to ?\t (see "Function key translations" in M-x describe-bindings), so functions only need to be bound to ?\t to work in all situations. Previously, the search tab completion code usedq (kbd "<tab>"), which produced the event sequence [tab], which only matched the 'tab event and hence only worked in X. This patch changes it to (kbd "TAB"), which matches the general ?\t event and works in all situations.
* | lib: fix an exclude bugGravatar Mark Walters2012-03-18
| | | | | | | | | | | | | | | | | | | | When the exclude tags contain a tag that does not occur anywhere in the Xapian database the exclusion fails. We modify the way the query is constructed to `work around' this. (In fact the new code is cleaner anyway.) It also seems to fix another exclusion failure bug reported by jrollins but we have not yet worked out why it helps in that case.
* | test: add tests for message only searchGravatar Mark Walters2012-03-18
| | | | | | | | | | | | | | This adds three tests for --output=messages searches. One test is for the case when one exclude tag does not occur in the Xapian database. This triggers a Xapian bug in some cases and causes the whole exclusion to fail. The next commit avoids this bug.
* | test: the test for the exclude code mistakenly excludes the tag "="Gravatar Mark Walters2012-03-18
| | | | | | | | | | | | | | The tests for the exclude code in search and count use the line notmuch config set search.exclude_tags = deleted which actually sets the exclude tags to be "=" and "deleted". Remove the "=" from this line.
* | lib: Add exclude query debug outputGravatar Austin Clements2012-03-18
| |
* | lib: Expose query debug output via an environment variableGravatar Austin Clements2012-03-18
| | | | | | | | | | | | | | | | | | Allow query debugging to be enabled at run-time by setting the NOTMUCH_DEBUG_QUERY environment variable to a non-empty string. Previously, enabling query debugging required recompiling, but parsed queries are often useful for tracking down bugs in situations where recompiling is inconvenient.
* | cli: Parsing. Allow true/false parameter for boolean options.Gravatar Mark Walters2012-03-18
| | | | | | | | | | | | Allow NOTMUCH_OPT_BOOLEAN to take a true or false parameter. In particular it allows the user to turn off a boolean option with --option=false.
* | test: use subtest name for generated message subject by defaultGravatar Dmitry Kurochkin2012-03-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Before the change, messages generated by generate_message() used "Test message #N" for default subject where N is the generated messages counter. Since message subject is commonly present in expected results, there is a chance of breaking other tests when a new generate_message() call is added. The patch changes default subject value for generated messages to subtest name if it is available. If subtest name is not available (i.e. message is generated during test initialization), the old default value is used (in this case it is fine to have the counter in the subject). Another benefit of this change is a sane default value for subject in generated messages, which would allow to simplify code like: test_begin_subtest "test for a cool feature" add_message [subject]="message for test for a cool feature"
* | test: remove "Generate some messages" test from rawGravatar Dmitry Kurochkin2012-03-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Before the change, the first subtest in raw format tests just generated messages and checked that they are added successfully. This is not really a raw format test, it is creating of environment required for other subtests to run. The patch removes the first subtest from raw and replaces it with bare add_message calls, similar to how it is done in other tests. TODO: we should check that test environment was created successfully. Currently, many tests do add_message(), notmuch new and other calls without checking the results. We should come up with a general solution for this, i.e. if any command during test initialization fails, all tests should be skipped with appropriate error message.
* | man: Update raw format documentationGravatar Austin Clements2012-03-18
| |
* | show: Convert raw format to the new self-recursive style, properly support ↵Gravatar 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 formatsGravatar Austin Clements2012-03-18
| | | | | | | | Just code motion.
* | show: Convert mbox format to new self-recursive styleGravatar Austin Clements2012-03-18
| | | | | | | | Given the lack of recursion, this is pretty easy.