aboutsummaryrefslogtreecommitdiffhomepage
Commit message (Collapse)AuthorAge
...
* notmuch-compact: Add man pageGravatar Ben Gamari2013-10-09
| | | | Signed-off-by: Ben Gamari <bgamari.foss@gmail.com>
* notmuch-compact: Initial commit of CLIGravatar Ben Gamari2013-10-09
| | | | | | Introduce the user command exposing the new compaction facility. Signed-off-by: Ben Gamari <bgamari.foss@gmail.com>
* database: Add notmuch_database_compact_closeGravatar Ben Gamari2013-10-09
| | | | | | | | | This function uses Xapian's Compactor machinery to compact the notmuch database. The compacted database is built in a temporary directory and later moved into place while the original uncompacted database is preserved. Signed-off-by: Ben Gamari <bgamari.foss@gmail.com>
* News for Emacs help improvementsGravatar Austin Clements2013-10-07
|
* emacs: Improve interactive use documentationGravatar Austin Clements2013-10-07
| | | | | | | | | | | | This improves the function documentation for many interactive commands, either by improving their documentation string where the improvement also makes sense for programmatic use or by adding a 'notmuch-doc property where it doesn't. For nearly all commands that support a prefix argument, this adds a 'notmuch-prefix-doc property to document their prefixed behavior This omits prefix documentation for a few commands where I thought the prefixed behavior was too obscure (or too complex to fit in one line).
* emacs: Support overriding help and describing prefix actionGravatar Austin Clements2013-10-07
| | | | | | | | | | | | | | | | | | | | | | | | Traditionally, function documentation strings are intended primarily for programmers, rather than users. They're written from the perspective of calling the function, not interactively invoking it. They're only ever displayed along with the function prototype (and often refer to argument names). And built-in help commands like `describe-bindings' show the name of the command, not its documentation. The notmuch help system is like `describe-bindings', but tries to be more user-friendly by displaying documentation strings, rather than Elisp command names. For most commands, this is fine, but for some the "programmer description" is inappropriate for interactive use. This is particularly noticeable for commands that take an optional prefix argument. This patch adds support for two symbol properties: notmuch-doc and notmuch-prefix-doc, which let a command override its interactive documentation and provide separate documentation for its prefixed invocation. If notmuch-prefix-doc is present, we add an extra line to the help giving the prefixed key sequence along with the documentation for the prefixed command.
* emacs: Clean up a few documentation stringsGravatar Austin Clements2013-10-07
| | | | | Correct some grammatical errors, fix some violations of standard documentation string formatting conventions, and be more precise.
* emacs: `notmuch-mua-new-reply' is also not interactiveGravatar Austin Clements2013-10-07
| | | | | | | | | Like `notmuch-mua-new-forward-message', this is meant to be invoked programmatically by something that can provide a reasonable query string. In fact, `notmuch-mua-new-reply's interactive specification didn't match its arguments, so it wouldn't have worked interactively.
* emacs: `notmuch-mua-new-forward-message' is not interactiveGravatar Austin Clements2013-10-07
| | | | | | | | | | | `notmuch-mua-new-forward-message' must be called from a buffer containing a raw RFC2822-formatted message to forward. Hence, it's intended to be invoked programmatically through something else that sets up this buffer (like `notmuch-show-forward-message'), not interactively. Remove its interactive specification and update the documentation string to mention the requirements on the current buffer.
* contrib: pick: remove temporary keybindingGravatar Mark Walters2013-10-02
| | | | | | | | | We would like to bind prefix-arg RET in search view to "pick show this thread" (i.e. notmuch-pick-from-search-thread). It is not easy to do this cleanly from contrib so I have been using M-RET instead. Temporarily remove this functionality in preparation for entering mainline and binding to prefix-arg RET.
* contrib: pick: move M-RET to prefix-arg RETGravatar Mark Walters2013-10-02
| | | | | | | | | | | | In pick the user has the option of showing the selected message in a subpane (the message pane) or in the full frame. This is customisable using the variable notmuch-pick-show-out. At the moment RET is bound to the default option and M-RET the other option. This is messy and involves tricks to make sure the keymap is setup at the right time. This changes this to prefix-arg RET for the other option which simplifies the code and makes things cleaner.
* contrib: pick: tidy up pick-format-fieldGravatar Mark Walters2013-09-23
| | | | | | | | | | Previously this function used a temporary variable to store the return value but we can just use the return value of the cond statement directly. The only tiny subtlety is that in one case (subject) we need to slightly reorder the logic to make sure the formatted-field is the last thing computed.
* contrib: pick: remove unused notmuch-pick-from-helloGravatar Mark Walters2013-09-23
| | | | | | | This function was used for pick entry from hello but isn't needed anymore. It was modelled on notmuch-hello-search which is now only used non-interactively (and notmuch-pick does now add to the recent-search history correctly).
* contrib: pick: use the new notmuch-common-keymap for pick entryGravatar Mark Walters2013-09-23
| | | | | Austin recently added a global keymap: use this for pick entry.
* contrib: pick: remove some superfluous quotesGravatar Mark Walters2013-09-23
| | | | | | | | | Pick adds some keybindings to keymaps for other modes (for entry to pick). These quoted the keymaps which appears to be unnecessary and to rely on the fact that these keymaps have the same entry in the function cell as the value cell (perhaps for historical reasons?) Remove these quotes.
* contrib: pick: make the tree graphics a proper part of the formatGravatar Mark Walters2013-09-15
| | | | | | | | Previously the box graphics in the pick view were always attached to the subject. Make them a field in their own right. We use the recursive insert to change the default notmuch-pick-result-format so that the user view does not change. (The subject touches the tree box graphics but the next column (tags) is still vertically aligned.)
* contrib: pick: allow recursive message field formatsGravatar Mark Walters2013-09-15
| | | | | | | | | | | | | | Previously, the message format was fixed: each part had to be a certain width and either left or right justified. This allows the user to specify that two parts can be variable width but that combined they should be some fixed width. We do this by allowing the user to set as a "field" a list of the normal result-format form which is formatted and then itself inserted according to the format string specified. This means all existing formats work but allows more general things too. This will be used in the next patch to allow the user to specify where the tree box graphics are drawn but allow, e.g., the total width of the tree box graphics and subject to be specified.
* contrib: pick: move the insertion of fields up a levelGravatar Mark Walters2013-09-15
| | | | | | | This moves the actual insertion of message fields up from the field formatting function into the message insertion function. This will be useful in the next patch as we can apply further formatting to the insertion string before inserting.
* contrib: pick: print () for a message with no tagsGravatar Mark Walters2013-09-15
| | | | | | | Dating back to the earliest notmuch-pick we have not printed anything for the tag field for a message with no tags. This is inconsistent with search and show both of which print "()". Change pick to be consistent.
* contrib: pick: use global keymapGravatar Mark Walters2013-09-15
| | | | | | | | | | Austin recently introduced a new global keymap. This makes pick use this global map. In most cases pick needs to override this global map because it wants to close the message pane before doing the action. However, this documents the over-rides and makes it less likely that the pick bindings will get out of sync with the main bindings.
* contrib: pick: bugfix use of mini-buffer historyGravatar Mark Walters2013-09-15
| | | | | | | pick was meant to use the same mini-buffer history but this failed because the interactive definition took place before the use search mini-buffer history part. Remove the interactive prompt to ensure the correct history is used.
* emacs: bugfix unquoted symbolGravatar Mark Walters2013-09-15
| | | | | | | | In the recent changes for search order handling the default-value of notmuch-search-oldest-first was used. However, default-value needs a symbol so the symbol-name needs to be quoted. This missing quote was causing strange sort-orders in some cases.
* lib/cli: pass GMIME_ENABLE_RFC2047_WORKAROUNDS to g_mime_init()Gravatar Jani Nikula2013-09-14
| | | | | | | | | | | | | | As explained by Jeffrey Stedfast, the author of GMime, quoted in [1]: > Passing the GMIME_ENABLE_RFC2047_WORKAROUNDS flag to g_mime_init() > *should* solve the decoding problem mentioned in the thread. This > flag should be safe to pass into g_mime_init() without any bad side > effects and my unit tests do test that code-path. The thread being referred to is [2]. [1] id:87bo56viyo.fsf@nikula.org [2] id:08cb1dcd-c5db-4e33-8b09-7730cb3d59a2@gmail.com
* test: add known broken tests for known broken RFC 2047 encodingsGravatar Jani Nikula2013-09-14
| | | | | | Some common broken RFC 2047 encodings that we currently let gmime parse strictly. We could tell gmime to be forgiving in what it accepts as RFC 2047 encoding, making these tests pass.
* emacs: Move ?, q, s, m, =, and G to the common keymapGravatar Austin Clements2013-09-10
| | | | | | | | | The only user-visible effect of this should be that "G" now works in show mode (previously it was unbound for no apparent reason). This shared keymap gives us one place to put global commands, which both forces us to think about what commands should be global, and ensures their bindings can't diverge (like the missing "G" in show).
* emacs: Define a common shared keymap for all of notmuchGravatar Austin Clements2013-09-10
| | | | | This defines a single, currently empty keymap that all other notmuch mode maps inherit from.
* emacs: Make notmuch-help work with arbitrary keymapsGravatar Austin Clements2013-09-10
| | | | | | | | This converts notmuch-help to use map-keymap for all keymap traversal. This generally cleans up and simplifies construction of keymap documentation, and also makes notmuch-help support anything that can be in a keymap, including more esoteric stuff like multiple inheritance.
* emacs: Add unified refresh-this-buffer functionGravatar Austin Clements2013-09-10
| | | | | | | | This unifies the various refresh and poll-and-refresh functions we have for different modes. Now all modes bind "=" and "G" (except show, which doesn't bind "G" for some reason) to `notmuch-refresh-this-buffer' and `notmuch-poll-and-refresh-this-buffer', respectively.
* emacs: Move `notmuch-poll' to notmuch-libGravatar Austin Clements2013-09-10
|
* emacs: Remove notmuch-search quit continuationGravatar Austin Clements2013-09-10
| | | | | | Since notmuch-hello doesn't need this any more, we can remove this hack. This also eliminates `notmuch-search-quit', so now all modes bind "q" to `notmuch-kill-this-buffer'.
* emacs: Bind "s" to notmuch-search in hello-modeGravatar Austin Clements2013-09-10
| | | | | | Since there is now no difference between notmuch-hello-search and notmuch-search when called interactively, bind "s" to notmuch-search in notmuch-hello-mode-map. Now all modes bind "s" this way.
* emacs: Refresh hello whenever the user switches to the bufferGravatar Austin Clements2013-09-10
| | | | | | | | | | Previously, we refreshed hello when the user quit a search that was started from hello. This is fine assuming purely stack-oriented buffer use, but is quite fragile and requires hacks to search. This replaces that logic with a new approach that refreshes hello whenever the user switches to the hello buffer, regardless of how this happens.
* emacs: Consistently use configured sort orderGravatar Austin Clements2013-09-10
| | | | | | | | | | Previously, if `notmuch-search' was called interactively (bound to "s" in search and show, but not hello), it would always use newest-first. However, `notmuch-hello-search' (bound to "s" in hello) and `notmuch-hello-widget-search` would call it with the user-configured sort order. This inconsistency seems unintentional, so change `notmuch-search' to use the user-configured sort order when called interactively.
* emacs: add buttons for all multipart/related partsGravatar Istvan Marko2013-09-10
| | | | | | | | | When text/html parts include images as multipart/related and the text/plain alternative is used these images can be completely hidden with no easy way to access them or even find out that they are there. Make notmuch-show-insert-part-multipart/related add buttons for all parts, the first one visible the rest hidden.
* emacs: show: lazy part handling bugfixGravatar Mark Walters2013-09-10
| | | | | | | | | | | The lazy part handler had a bug that it allowed the button to be toggled to be specified. During toggling it needs to save and restore the text-properties for the button but it actually saved the text properties at point rather than from the button. In almost all cases this didn't matter as as point had the same text properties as the button. However, it is a bug and did cause incorrect behaviour in some cases: see id:87txhz14z6.fsf@qmul.ac.uk for details.
* notmuch-mutt: Fix tagging issuesGravatar Kevin J. McCarthy2013-09-08
| | | | | | | | | | | | | | | | | | This patch fixes three issues with "notmuch-mutt tag": 1. The message_id was not shell quoted. Thanks to Jason Miller for the bug report and patch. 2. The tags passed into tag_action() were not being properly quoted. The "join before shell_quote" was combining multiple tags into a single argument to notmuch tag: '+one -two -three' instead of '+one' '-two' '-three'. 3. A "--" was added between the tags and search-term as shown in the current notmuch-tag man page. Thanks to Tomi Ollila for suggesting the simple fix of using the list form of system(), which bypasses the shell.
* test: unset 'xpg_echo' bash shell optionGravatar Tomi Ollila2013-09-08
| | | | | | | | | | | When 'xpg_echo' bash shell option is unset (usually the default) echo builtin does not expand backslash-escape sequences by default (i.e. '\n' is echoed as '\n' instead of newline). Not all bash installations have this feature we depend on activated by default. Note that the feature is bash (and GNU /bin/echo) specific. It is used as it is convenient. If portability is needed (elsewhere) use printf(1) (also often available as a shell builtin).
* debian: remove unneeded notmuch-mutt dependenciesGravatar Kevin McCarthy2013-09-08
| | | | | Switching away from fdupes removes the dependency on libfile-which-perl and the need to recommend fdupes.
* notmuch-mutt: use notmuch --duplicate flagGravatar Kevin McCarthy2013-09-08
| | | | | | | | | | Change notmuch-mutt to use the new --duplicate=1 flag for duplicate removal. This will remove duplicates based on message-id at the notmuch level. Previously we were using fdupes or generating sha sums after the search. This version will be faster, but will enable the possibility of hiding search results due to accidental/malicious duplicate message-ids.
* emacs: fix notmuch-mua-reply point placement when signature involvedGravatar Tomi Ollila2013-09-08
| | | | | | | | | | | | | | | | | | | | | | When composing a reply, notmuch-mua-reply attempts to cite the the original message by inserting it before the user signature, if one is present. The existing method used to search the signature separator backward from the end of the buffer and then move one line up. In case of variable `message-signature-insert-empty-line' being nil this caused point to go to the beginning of '--text follows this line--' separator line, and citation was inserted there. This change checks the value of `message-signature-insert-empty-line' and doesn't move point if that is nil. Additional narrowing to the body region ensures that point never goes to the separator line (or beyond). `message-signature-setup-hook' or `message-setup-hook' may already have added some other content to the message body, therefore using simply (message-goto-body) to move point to the beginning of body might lead to unexpected results. Original patch from "Geoffrey H. Ferrari", continued with iterations from Jani and Mark.
* test: exit with nonzero value when not all tests completed successfullyGravatar Tomi Ollila2013-09-08
| | | | | | | | If any of the tests in our test system is not passing the execution of the test suite completes with nonzero exit value. It is better to rely on the exit value of the test system instead of some arbitrary strings in test output (or use both).
* emacs: insert quotable parts in reply as they are displayed in show viewGravatar Jani Nikula2013-09-05
| | | | | | | | | | | | | | | | In reply, insert quotable parts using notmuch-show-insert-bodypart instead of calling notmuch-mm-display-part-inline directly to render the quoted parts as they are rendered in show view. We use a temp buffer to not leak text properties from the show renderer into the reply. This way we also don't need to worry about narrowing or point placement. Credits to Mark Walters <markwalters1009@gmail.com> and Austin Clements <amdragon@MIT.EDU> for getting this part straight. The notable change is that replies to text/calendar parts quote the pretty printed output of icalendar-import-buffer rather than the ugly raw vcalendar.
* contrib: pick: test: buffer movementGravatar Mark Walters2013-09-04
|
* contrib: pick: test: stash message idGravatar Mark Walters2013-09-04
| | | | This is important to test as lots of subsequent tests will fail if this fails.
* contrib: pick: test: tag/untag whole threadGravatar Mark Walters2013-09-04
|
* contrib: pick: test: tag/untag single messageGravatar Mark Walters2013-09-04
|
* test: improve insert test reliability by checking message-id instead of countGravatar Jani Nikula2013-09-03
| | | | | There isn't a reported issue this would fix. Spotted by reading the test.
* test: add more maildir flag syncing related tests to insertGravatar Jani Nikula2013-09-03
| | | | Specifically test maildir flag syncing with insert.
* tags_to_maildir_flags: Don't rename if no flags changeGravatar Louis Rilling2013-09-03
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | notmuch_message_tags_to_maildir_flags() unconditionally moves messages from maildir directory "new/" to maildir directory "cur/", which makes messages lose their "new" status in the MUA. However some users want to keep this "new" status after, for instance, an auto-tagging of new messages. However, as Austin mentioned and according to the maildir specification, messages living in "new/" are not allowed to have flags, even if mutt allows it to happen. For this reason, this patch prevents moving messages from "new/" to "cur/", only if no flags have to be changed. It's hopefully enough to satisfy mutt (and maybe other MUAs showing the "new" status) users checking the "new" status. Changelog: * v2: Fix bool type as well as NULL returned despite having no errors (Austin Clements) * v4: Tag the related test (contributed by Michal Sojka) as working Signed-off-by: Louis Rilling <l.rilling@av7.net> [Condition for keeping messages in new/ was extended to satisfy all tests from the previous patch. -Michal Sojka] [Added by David Bremner, to keep the tests passing at each commit] update insert tests for new maildir synchronization rules As of id:1355952747-27350-4-git-send-email-sojkam1@fel.cvut.cz we are more conservative about moving messages from ./new to ./cur. This updates the insert tests to match
* test: Add some missing maildir synchronization testsGravatar Michal Sojka2013-09-03
| | | | | | As mentioned by Jani Nikula in id:87vcccp4y3.fsf@nikula.org, some cases of maildir synchronization are not covered by our tests. Let's add the missing tests.