aboutsummaryrefslogtreecommitdiffhomepage
path: root/emacs/notmuch-show.el
Commit message (Collapse)AuthorAge
...
* emacs: add notmuch-show-refresh-view functionGravatar Jameson Graef Rollins2011-10-06
| | | | | | | | | This function, like the equivalent for notmuch-search, just refreshes the current show view. Like in notmuch-search, this new function is bound to "=". If a prefix is given then the redisplay happens with the crypto-switch set, which displays the thread with the opposite logic of whatever is set in the notmuch-crypto-process-mime customization variable.
* emacs: Improve support for message/rfc822 parts.Gravatar Jameson Graef Rollins2011-09-05
| | | | | | | The insert-part-message/rfc822 function is overhauled to properly processes the new formatting of message/rfc822 parts. The json output for message parts now includes "headers" and "body" fields, which are now parsed and output appropriately.
* emacs: Fix to unconditionally display subject changes in collapsed thread viewGravatar Carl Worth2011-07-01
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The feature to show subject changes in the collapsed thread view was originally added (8ab433607) with an option (notmuch-show-always-show-subject) to display the subject for all messages, even when there was no change. The subsequent commit (4f04d273) changed the sense of the test (or to and) and the name of the controlling variable (notmuch-show-elide-same-subject). But this commit is broken in a few ways: 1. The original definition of notmuch-show-always-show-subject was left around But the variable isn't actually used in the code at all, so it just adds clutter and confusion to the customization interface. 2. The name and description of the controlling variable doesn't match the implementation The name suggests that setting the variable to t will cause repeated subjects to be elided, (suggesting that when it is nil all subjects will be shown). However, when the variable is nil, no subjects are shown. So a correct name for the variable in this sense would be notmuch-show-subject-changes. Showing subject changes is a useful feature, and should be on by default. (We don't want to bury generally useful features behind customizations that users have to find). Rather than fixing the name of the variable and changing its default value, here we remove the condition entirely, such that the feature is enabled unconditionally. So both the currently-used variable and the stale definition of the formerly-used are removed. Also, the one relevant test-suite result is updated, (showing the intial subject of a collapsed thread, and no subject display for later messages that do not change the subject).
* fix sum moar typos [user-visible documentation in code]Gravatar Pieter Praet2011-06-23
| | | | | | | | | | | | Various typo fixes in documentation within the code that can be made available to the user, (emacs function help strings, "notmuch help" output, notmuch man page, etc.). Signed-off-by: Pieter Praet <pieter@praet.org> Edited-by: Carl Worth <cworth@cworth.org> Restricted to just documentation and fixed fix of "comman" to "common" rather than "command".
* fix sum moar typos [comments in source code]Gravatar Pieter Praet2011-06-23
| | | | | | | | | | Various typo fixes in comments within the source code. Signed-off-by: Pieter Praet <pieter@praet.org> Edited-by: Carl Worth <cworth@cworth.org> Restricted to just source-code comments, (and fixed fix of "descriptios" to "descriptors" rather than "descriptions").
* emacs: Show all multipart/alternative parts by default.Gravatar Jameson Graef Rollins2011-06-22
| | | | | | | | | | | | | | | | | | This is patch is a temporary work-around for a slight regression that popped up in the part handling reorganization. Currently, text/plain parts are always preferred, if present, over other non-text/plain parts in multipart/alternative. However, this means that if there is a blank text/plain part, no content will be displayed. One way to get around this is to set the "notmuch-show-all-multipart/alternative-parts" customization variable to True ('t'), which will cause all parts to always be displayed. Since we want to move forward with the next release, we're going to set this variable true by default, to make sure that no content is unretrievably hidden from the user. Once we come up with a better solution for easy display of hidden parts we can set this back to a default value of 'nil'.
* Simplify message and headers visibility code in notmuch-show view.Gravatar Dmitry Kurochkin2011-06-15
| | | | | | | | | | | | Before the change, headers and message visibility functions took extra care to correctly set `buffer-invisibility-spec'. This was needed because headers overlay `invisible' property had only headers' invisibility spec. So visibility of headers was determined only by the headers invisibility spec. The patch sets headers overlay `invisible' property a list with both the headers and the message invisibility spec. This makes headers invisible if either of them is added to the `buffer-invisibility-spec' and allows to simplify the code.
* Set higher priority for headers and hidden citation overlays.Gravatar Dmitry Kurochkin2011-06-15
| | | | | | | | | | | Before the patch, message, headers and hidden citation overlays had zero priority. All these overlay have `invisible' property. Emacs documentation says that we should not make assumptions about which overlay will prevail when they have the same priority [1]. It happens to work as we need, but we should not rely on undocumented behavior. [1] http://www.gnu.org/s/emacs/manual/html_node/elisp/Overlay-Properties.html
* Set message invisibility spec properties before inserting the body.Gravatar Dmitry Kurochkin2011-06-15
| | | | | This would allow body-inserting code (in particular, wash button-inserting code) to use message invisibility specs.
* Pass message to the `notmuch-show-insert-text/plain-hook' hook.Gravatar Dmitry Kurochkin2011-06-15
| | | | | | | | Before the change, the `notmuch-show-insert-text/plain-hook' was given only the `depth' argument. The patch adds another one - the message. Currently, the new message argument is not used by any on the hooks. But it will be used later to get access to message invisibility specs when wash buttons are inserted.
* Make `notmuch-show-clean-address' parsing-error-proof.Gravatar Dmitry Kurochkin2011-06-03
| | | | | | | | Mail-header-parse-address may fail for an invalid address. Before the change, this would result in empty notmuch-show buffer with an error message like: Scan error: "Unbalanced parentheses". The patch wraps the function in condition-case and returns unchanged address in case of error.
* emacs: fix notmuch-show-part-button to not include newlineGravatar Jameson Graef Rollins2011-06-03
| | | | | This makes the button cleaner, so that it doesn't include the entire rest of the line that the button is on.
* Don't re-compress .gz & al. in notmuch-show-save-part.Gravatar Dmitry Kurochkin2011-05-31
| | | | | | | | | | | | | | | | | | | | | | | | Write-region handles some file names specially, see Emacs Lisp manual section 25.11 Making Certain File Names "Magic" [1]. This is a nice feature for normal text editing, but it is not desirable if we need to save raw file content (e.g. attachment). In particular, this affects archives and may result in corrupted attachments saved with notmuch-show-save-part (attachment button click handler). Turns out, smart GNUS folks encountered the same problem and implemented write-region wrapper which inhibits some file name handlers. In particular, this wrapper is used in mm-save-part, which is why notmuch-save-attachments that uses it works fine with archives. The patch replaces write-region with mm-write-region in notmuch-show-save-part. Also it removes coding-system-for-write and require-final-newline setting in notmuch-show-save-part. The former is set in mm-write-region. The latter seems to be unneeded because mm-save-part does not use it. [1] http://www.gnu.org/s/emacs/manual/html_node/elisp/Magic-File-Names.html
* emacs: Give mutlipart/{signed, encrypted} their own part handler.Gravatar Jameson Graef Rollins2011-05-27
| | | | | | | | This is the best way to make the displayed output for decrypted/verified messages clearer. The special sigstatus and encstatus buttons are now displayed under the part header button. The part header button is also tweaked to provide information to user about how to proces crypto.
* emacs: Do not attempt to render arbitrary application parts.Gravatar Jameson Graef Rollins2011-05-27
| | | | | | | We probably shouldn't have been doing this anyway, but we do it here specifically because we don't want the content of the application/pgp-encrypted parts to be displayed and cluttering the message show.
* emacs: Add support for PGP/MIME verification/decryptionGravatar Jameson Graef Rollins2011-05-27
| | | | | | | | | | | | | A new emacs configuration variable "notmuch-crypto-process-mime" controls the processing of PGP/MIME signatures and encrypted parts. When this is set true, notmuch-query will use the notmuch show --decrypt flag to decrypt encrypted messages and/or calculate the sigstatus of signed messages. If sigstatus is available, notmuch-show will place a specially color-coded header at the begining of the signed message. Also included is the ability to switch decryption/verification on/off on the fly, which is bound to M-RET in notmuch-search-mode.
* emacs: Allow the user to choose the "From" address when replying to a messageGravatar Thomas Jost2011-05-26
| | | | When pressing C-u r, the user will be prompted for the identity to use.
* emacs: Allow the user to choose the "From" address when forwarding a messageGravatar Thomas Jost2011-05-26
| | | | When pressing C-u f, the user will be prompted for the identity to use.
* emacs: Allow the user to choose the "From" address when composing a new messageGravatar Thomas Jost2011-05-26
| | | | When pressing C-u m, the user will be prompted for the identity to use.
* emacs: add notmuch-before- and notmuch-after-tag-hookGravatar Daniel Schoepe2011-05-24
| | | | | | | | This patch adds hooks that are run before/after messages are tagged From the emacs interface. In order to implement this and to avoid having hooks parse all the arguments to the notmuch binary again, I created a `notmuch-tag' function that other modules should use instead of running (notmuch-call-notmuch-process "tag" ...) directly.
* emacs: update notmuch-show.el to use new part outputGravatar Jameson Graef Rollins2011-05-24
| | | | | | | | | The command-line interface for extracting a single part from a message recently changed from: notmuch part --part=X to: notmuch show --format=raw --part=X
* emacs: Show cleaner `From:' addresses in the summary line.Gravatar David Edmondson2011-05-18
| | | | | | | | | | Remove double quotes and flatten "foo@bar.com <foo@bar.com>" to "foo@bar.com". Edited-by: Daniel Kahn Gillmor <dkg@fifthhorseman.net> (clean up expected output for emacs tests). Signed-off-by: Jameson Rollins <jrollins@finestructure.net>
* emacs: Add custom `notmuch-show-elide-same-subject'Gravatar David Edmondson2011-05-18
| | | | | | | | | This controls the appearance of collapsed messages in notmuch-show mode, avoiding redundancy for repeated subject). Remove `notmuch-show-always-show-subject'. Signed-off-by: Jameson Rollins <jrollins@finestructure.net>
* emacs: Add `notmuch-show-always-show-subject', allowing control overGravatar David Edmondson2011-05-18
| | | | | | the display of collapsed messages. Signed-off-by: Jameson Rollins <jrollins@finestructure.net>
* emacs: Allow renderer of multipart/related parts access to non-primary parts.Gravatar David Edmondson2011-05-18
| | | | | | | | | | | | | | Typically used to allow a `text/html' renderer access to images which are sent along with the HTML. This is not enabled by default, instead the user must execute `notmuch-show-setup-w3m' for it to take effect. Edited-by: Carl Worth <cworth@cworth.org> Add documentation string for notmuch-show-setup-23m and clean up warning about reference/assignment of free variable. Signed-off-by: Jameson Rollins <jrollins@finestructure.net>
* emacs: Optionally show all parts in multipart/alternative.Gravatar David Edmondson2011-05-18
| | | | | | | | | | | Add a variable `notmuch-show-all-multipart/alternative-parts' that allows the user to indicate that all candidate sub-parts of a multipart/alternative part should be shown rather than just the preferred part. The default is `nil', showing only the preferred part. This is mostly a debugging aid. Signed-off-by: Jameson Rollins <jrollins@finestructure.net>
* emacs: Render text/x-vcalendar parts.Gravatar David Edmondson2011-05-17
| | | | | | | Use code from icalendar.el to convert text/x-vcalendar parts to something suitable for use with the Emacs diary. Signed-off-by: Jameson Rollins <jrollins@finestructure.net>
* emacs: Allow indentation of multipart children.Gravatar David Edmondson2011-05-17
| | | | Signed-off-by: Jameson Rollins <jrollins@finestructure.net>
* emacs: Add `notmuch-show-multipart/alternative-discouraged'.Gravatar David Edmondson2011-05-17
| | | | | | | Also improved implementation of indication of which parts are not shown. Signed-off-by: Jameson Rollins <jrollins@finestructure.net>
* emacs: add more part handling functionsGravatar David Edmondson2011-05-17
| | | | | This adds new notmuch-show-insert-part functions to handle multipart/alternative and message/rfc822 parts.
* notmuch show: Properly nest MIME parts within mulipart partsGravatar Carl Worth2011-05-17
| | | | | | | | | | | | | | | | | | | | | | | Previously, notmuch show flattened all output, losing information about the nesting of the MIME hierarchy. Now, the output is properly nested, (both in the --format=text and --format=json output), so that clients can analyze the original MIME structure. Internally, this required splitting the final closing delimiter out of the various show_part functions and putting it into a new show_part_end function instead. Also, the show_part function now accepts a new "first" argument that is set not only for the first MIME part of a message, but also for each first MIME part within a series of multipart parts. This "first" argument controls the omission of a preceding comma when printing a part (for json). Many thanks to David Edmondson <dme@dme.org> for originally identifying the lack of nesting in the json output and submitting an early implementation of this feature. Thanks as well to Jameson Graef Rollins <jrollins@finestructure.net> for carefully shepherding David's patches through a remarkably long review process, patiently explaining them, and providing a cleaned up series that led to this final implementation. Jameson also provided the new emacs code here.
* emacs: View the output of pipe command when it failsGravatar Michal Sojka2011-01-26
| | | | | | | | | | | | | | | Previously, the user didn't know whether the pipe command succeeded or not. It was only possible to find it out by manually inspecting the work done (or not done) by the command or by manually switching to *notmuch-pipe* buffer and determine it from command output. For this the user had to first find the text corresponding to the last run of pipe command as the buffer accumulated the output from all pipe commands. This patch changes the following. The *notmuch-pipe* buffer is erased before every pipe command so it contains only the output from the last command. Additionally, when the command failed, the *notmuch-pipe* buffer is shown and an error message is displayed. with the output of pipe command.
* emacs: Use `view-mode' when examining raw messages.Gravatar David Edmondson2010-11-16
| | | | | | | Explained-by: Carl Worth: This gives convenient keybindings for navigating the file and for quitting from the buffer, (since, with a raw message file the user will generally want to just view the message, not edit it).
* emacs: mv notmuch-{show,common}-do-stashGravatar Jameson Rollins2010-11-11
| | | | | | | Here we move the notmuch-show/notmuch-show-do-stash function to notmuch-lib/notmuch-common-do-stash. Nothing in this function is notmuch-show mode specific, so this move will make it cleaner to be used by other modes (such as notmuch-search).
* emacs: Use the header line to show the subject of the thread.Gravatar David Edmondson2010-11-11
|
* emacs: Simplify subjects more aggressively.Gravatar David Edmondson2010-11-11
| | | | | | | | | | | | | | | Remove 're: ' or 'Re: ' from anywhere within a subject line rather than just at the beginning. This is to accommodate threads where a mailing list sometimes inserts a subject prefix. For example, if a thread has the subjects: [Orgmode] org-indent, org-inlinetask: patches on github Re: [Orgmode] org-indent, org-inlinetask: patches on github [Orgmode] Re: org-indent, org-inlinetask: patches on github the last of these would not have been considered the same and would therefore have been shown.
* emacs: Elide the display of repeated subjects in thread display mode.Gravatar David Edmondson2010-11-11
| | | | | Collapsed messages do not show a "Subject:" line if the subject is the same as that of the previous message.
* Don't use kill-this-buffer to kill notmuch emacs buffersGravatar Jameson Rollins2010-11-08
| | | | | | | | kill-this-buffer appears to be a function intended specifically for use in the menu bar, and causes problem killing notmuch buffers when multiple frames have been used. This patch replaces kill-this-buffer with notmuch-kill-this-buffer, which in turn just simply calls (kill-buffer (current-buffer)).
* emacs: Fix notmuch-show-pipe-message to use notmuch-command variableGravatar Michal Sojka2010-11-06
| | | | | Previously notmuch command name was hardcoded into this function, which made remote use of pipe command impossible.
* Rename "notmuch cat" to "notmuch show --format=raw"Gravatar Carl Worth2010-11-06
| | | | | | | | | This is part of an effort to avoid proliferation of excessive top-level notmuch commands. Also, "raw" better captures the functionality here, (as opposed to "cat" which is a fairly oblique reference to a bad Unix abbreviation whose metaphor doesn't work here since "notmuch cat" operates only on a single message and hence cannot "con'cat'enate" anything).
* emacs: Access raw messages via cat subcommandGravatar Michal Sojka2010-11-05
| | | | | | | | | | | | | | | | | | | This patch modifies the following commands to access the messages via cat subcommand: - view/save attachments ('v', 'w'), - view a raw message ('V') and - pipe a message to a command ('|'). With this patch, it is straightforward to use notmuch emacs interface with a remote database accessed over SSH. To do this, it is sufficient to redefine notmuch-command variable to contain the name of a script containing: ssh user@host notmuch "$@" If the ssh client has enabled connection sharing (ControlMaster option in OpenSSH), the emacs interface is almost as responsive as when notmuch is invoked locally.
* emacs: Fix the autoload commentsGravatar Carl Worth2010-10-29
| | | | | | | Remove them from non-top-level entry points, (such as the functions to set notmuch modes and the deprecated notmuch-folder function). And add one to the notmuch-hello function. Also, add missing documentation string to notmuch-hello.
* emacs: Use copy-sequence instead of copy-seq.Gravatar Carl Worth2010-10-28
| | | | | | | | | I don't see copy-seq documented within emacs at all, and some users have encountered failures of the form: notmuch-show-del-tags-worker: Symbol's function definition is void: copy-seq This should eliminate that problem.
* emacs: Avoid runtime use of `cl'.Gravatar David Edmondson2010-10-27
| | | | | | | | | | | | | | | | | | | | | | | | | The GNU Emacs Lisp Reference Manual section D.1 says: > * Please don't require the cl package of Common Lisp extensions at > run time. Use of this package is optional, and it is not part of > the standard Emacs namespace. If your package loads cl at run time, > that could cause name clashes for users who don't use that package. > > However, there is no problem with using the cl package at compile > time, with (eval-when-compile (require 'cl)). That's sufficient for > using the macros in the cl package, because the compiler expands > them before generating the byte-code. Follow this advice, requiring the following changes where `cl' was used at runtime: - replace `rassoc-if' in `notmuch-search-buffer-title' with the `loop' macro and inline code. At the same time find the longest prefix which matches the query rather than simply the last, - replace `union', `intersection' and `set-difference' in `notmuch-show-add-tag' and `notmuch-show-remove-tag' with local code to calculate the result of adding and removing a list of tags from another list of tags.
* emacs: Fix quoting of Message-Id to fix test case of Id containing ".."Gravatar Carl Worth2010-10-22
| | | | | | If Xapian sees unquoted ".." as in id:123..456 then it thinks that's a range specification. We avoid this problem by instead passing id:"123..456" to Xapian.
* emacs: Allow '|' to operate on multiple messages (by means of prefix argument).Gravatar Carl Worth2010-09-16
| | | | | | We extend the '|' command so that passing a prefix argument, (for example, "C-u |"), causes it to pipe all open messages in the current thread rather than just the single, current message.
* emacs: Fix line-wrapping for help message of notmuch-show mode.Gravatar Carl Worth2010-08-19
| | | | | | This was previously wrapped for unsubtituted command names. It looks much better in the notmuch-help (available with '?') if wrapped according to the length of the substituted command names.
* Add C-tab binding in notmuch-search mode as well.Gravatar Carl Worth2010-06-04
| | | | | We recently added this to notmuch-hello mode so we might as well support it in this mode as well for consistency.
* emacs: Tags should be shown with `notmuch-tag-face'.Gravatar David Edmondson2010-06-03
| | | | | Use the same face for tags in `notmuch-show' mode as that used in `notmuch-search' mode.
* emacs: Allow the display of absolute dates in the header line.Gravatar David Edmondson2010-06-03
| | | | | | | Add `notmuch-show-relative-dates' to control whether the summary line in `notmuch-show' mode displays relative dates (e.g. '26 mins. ago') or the full date string from the message. Default to `t' for compatibility with the previous behaviour.