aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
...
| * News for JSON-based searchAustin Clements2012-07-12
| |
| * emacs: Switch from text to JSON format for search resultsAustin Clements2012-07-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The JSON format eliminates the complex escaping issues that have plagued the text search format. This uses the incremental JSON parser so that, like the text parser, it can output search results incrementally. This slows down the parser by about ~4X, but puts us in a good position to optimize either by improving the JSON parser (evidence suggests this can reduce the overhead to ~40% over the text format) or by switching to S-expressions (evidence suggests this will more than double performance over the text parser). [1] This also fixes the incremental search parsing test. This has one minor side-effect on search result formatting. Previously, the date field was always padded to a fixed width of 12 characters because of how the text parser's regexp was written. The JSON format doesn't do this. We could pad it out in Emacs before formatting it, but, since all of the other fields are variable width, we instead fix notmuch-search-result-format to take the variable-width field and pad it out. For users who have customized this variable, we'll mention in the NEWS how to fix this slight format change. [1] id:"20110720205007.GB21316@mit.edu"
| * emacs: Implement an incremental JSON parserAustin Clements2012-07-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This parser is designed to read streaming JSON whose structure is known to the caller. Like a typical JSON parsing interface, it provides a function to read a complete JSON value from the input. However, it extends this with an additional function that requires the next value in the input to be a compound value and descends into it, allowing its elements to be read one at a time or further descended into. Both functions can return 'retry to indicate that not enough input is available. The parser supports efficient partial parsing, so there's no need to frame the input for correctness or performance. The bulk of the parsing is still done by Emacs' json.el, so any improvements or optimizations to that will benefit the incremental parser as well. Currently only descending into JSON lists is supported because that's all we need, but support for descending into JSON objects can be added in the future.
| * test: New test for incremental search output parsingAustin Clements2012-07-12
| | | | | | | | | | | | | | | | | | This advises the search process filter to make it process one character at a time in order to test the pessimal case for incremental search output parsing. The text parser fails this test because it gets tricked into thinking a parenthetical remark in a subject is the tag list.
| * emacs: Pass plist to `notmuch-search-show-result'Austin Clements2012-07-12
| | | | | | | | | | | | | | Rather than passing lots of arguments and then further passing those to `notmuch-search-insert-field', pass a plist containing all of the search result information. This plist is compatible with the JSON format search results.
| * emacs: Move search-target logic to `notmuch-search-show-result'Austin Clements2012-07-12
| | | | | | | | | | | | | | | | | | | | | | | | | | This is a simpler place to do this, since we can avoid any point motion and hence any save-excursions in `notmuch-search-process-filter', which in turn lets us put all of the search-target logic outside of any save-excursions. `notmuch-search-show-{result,error}' are now responsible for their own point motion. `notmuch-search-process-filter' could use some reindentation after this, but we're about to rewrite it entirely, so we won't bother.
| * emacs: Helper for reporting search parsing errorsAustin Clements2012-07-12
| | | | | | | | | | | | This removes the last bit of direct output from the parsing function. With the parser now responsible solely for parsing, we can swap it out for another parser.
| * emacs: Separate search line parsing and displayAustin Clements2012-07-12
| | | | | | | | | | | | | | Previously, much of the display of search lines was done in the same function that parsed the CLI's output. Now the parsing function only parses, and notmuch-search-show-result fully inserts the search result in the search buffer.
| * emacs: Clean up notmuch-search-show-resultAustin Clements2012-07-12
| | | | | | | | | | This simplifies the code and makes it no longer cubic in the number of result fields.
| * contib/nmbug/nmbug-status: leftover whitespaces, indentation & quotingTomi Ollila2012-07-12
| | | | | | | | | | | | | | | | | | | | | | | | The initial nmbug-status was pretty consistent in it's whitespacing but a few lines had some leftover slips. Those are now "corrected". Also, most of the code used ' as quoting char. As in Python one can use ' and " interchangeably some code used " instead of '. However the usage of those were inconsistent. Now all quotes that python parses are ':s (only quoted content uses ":s). No functional changes.
| * contrib/nmbug/ nmbug-status: restored out['subject']... block levelTomi Ollila2012-07-12
| | | | | | | | | | | | | | In reformatting the line 111 accidentally indented to one indentation level too much (happens easily when interactively indenting python code using emacs). The line now has 4 spacess less indentation, thus restoring it to the block level it belongs.
| * contrib/nmbug: add nmbug-status scriptDavid Bremner2012-07-10
| | | | | | | | | | | | | | | | | | | | This is (almost) the same script as has been used for http://nmbug.tethera.net/status for a while now. The only change is that the configuration is not hardcoded anymore. By default the config is fetched from a special branch in the nmbug repo that contains only config info. The idea is that push access to this branch can be restricted a bit more than the tags, since it will change the appearence of the web pages.
| * contrib/nmbug: make nmbug a subdirectoryDavid Bremner2012-07-09
| | | | | | | | | | I want to ship the status tool here as well, along with a sample config file.
| * Add missing "tags" field to search schemaAustin Clements2012-07-09
| | | | | | | | | | This field is output by search, but it didn't make it into the documentation.
| * manpages: consistent "format" for NAME sectionTomi Ollila2012-07-09
| | | | | | | | | | | | The NAME section in manpages generally doesn't start with capital letter (unless the word is 'proper noun') and doesn't end with period. Notmuch manual pages now matches that "format".
| * test: add basic show, search --format=text testsPeter Wang2012-07-09
| | | | | | | | | | | | There didn't seem to be these basic tests for --format=text, as there are for --format=json. These are just the tests from the `json' script, with adjusted expected outputs.
| * debian: document tag action invocation fix in changelogStefano Zacchiroli2012-07-04
| |
| * notmuch-mutt: fix helper invocation for the tag actionStefano Zacchiroli2012-07-04
| | | | | | | | | | | | | | As it was before, "-inbox" was interpreted as a getopt option, rather than as a tag manipulation request. Making the action unusable. Closes: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=678012
| * Minor correction to devel/schemataMark Walters2012-06-30
| | | | | | | | | | | | In id:"87sjdm12d1.fsf@awakening.csail.mit.edu" Austin pointed out that devel/schemata needs a slight correction with the new --entire-thread=false option. This is that correction.
| * emacs: Add configurable wrapping width for notmuch-wash-wrap-long-linesDaniel Schoepe2012-06-29
| | | | | | | | | | | | This introduces a variable to control after how many characters a line is wrapped by notmuch-wash-wrap-long-lines (still wrapping at the window width if it is lower).
| * 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.
| * emacs: make elide messages use notmuch-show for omitting messages.Mark Walters2012-06-29
| | | | | | | | | | | | | | | | | | Previously the elide messages code got the entire-thread from notmuch-show.c and then threw away all non-matching messages. This version calls notmuch-show.c without the --entire-thread flag so it never receives the non-matching messages in the first place. This makes it substantially faster.
| * Update devel/schemata for --entire-thread=falseMark Walters2012-06-29
| | | | | | | | Also remove the Json --entire-thread item from devel/TODO.
| * 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: command line parsing: allow default for keyword optionsMark Walters2012-06-29
| | | | | | | | | | | | | | This changes the parsing for "keyword" options so that if the option is specified with no argument the argument is parsed as if it were passed an empty string. This make it easier to add options to existing boolean arguments (the existing --option can default to TRUE).
| * ruby: extern linkage portability improvementTomi Ollila2012-06-29
| | | | | | | | | | | | | | | | | | | | | | | | Some C compilers are stricter when it comes to (tentative) definition of a variable -- in those compilers introducing variable without 'extern' keyword always allocates new 'storage' to the variable and linking all these modules fails due to duplicate symbols. This is reimplementation of Charlie Allom's patch: id:"1336481467-66356-1-git-send-email-charlie@mediasp.com", written originally by Ali Polatel. This version has more accurate commit message.
| * emacs: add pipe attachment commandMark Walters2012-06-22
| | | | | | | | | | | | | | Allow the user to pipe the attachment somewhere. Bound to '|' on the attachment button. Signed-off-by: Jameson Graef Rollins <jrollins@finestructure.net>
| * emacs: derive correct timestamp in FCC unique nameJesse Rosenthal2012-06-22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, the timestamp at the beginning of the FCC unique maildir name was derived incorrectly, thanks to an integer overflow. This changes the derivation of timestamp to use a float, and so will get the number correct at least until 2038. (It is still formatted with "%d" so it will show up as an integer.) Should we need to change it in the next 26 years to take the unix millenium into account, it will be invisible to users. This change is mostly a question of consistency, since the unique name is arbitrary anyway. But since most people use timestamps, and that was the original intention here as well, we might as well. Signed-off-by: Jesse Rosenthal <jrosenthal@jhu.edu>
| * News for updated maildir sync semanticsAustin Clements2012-06-10
| |
| * lib: Treat messages in new/ as maildir messages with no flags setAustin Clements2012-06-10
| | | | | | | | | | | | | | | | | | | | | | | | Previously, notmuch new only synchronized maildir flags to tags for files with a maildir "info" part. Since messages in new/ don't have an info part, notmuch would ignore them for flag-to-tag synchronization. This patch makes notmuch consider messages in new/ to be legitimate maildir messages that simply have no maildir flags set. The most visible effect of this is that such messages now automatically get the unread tag.
| * lib: Only synchronize maildir flags for messages in maildirsAustin Clements2012-06-10
| | | | | | | | | | | | | | | | | | | | | | | | | | Previously, we synchronized flags to tags for any message that looked like it had maildir flags in its file name, regardless of whether it was in a maildir-like directory structure. This was asymmetric with tag-to-flag synchronization, which only applied to messages in directories named new/ and cur/ (introduced by 95dd5fe5). This change makes our interpretation stricter and addresses this asymmetry by only synchronizing flags to tags for messages in directories named new/ or cur/. It also prepares us to treat messages in new/ as maildir messages, even though they lack maildir flags.
| * lib: Move _filename_is_in_maildirAustin Clements2012-06-10
| | | | | | | | | | | | This way notmuch_message_maildir_flags_to_tags can call it. It makes more sense for this to be just above all of the maildir synchronization code rather than mixed in the middle.
| * test: Add broken test for tag synchronization on files delivered to new/Austin Clements2012-06-10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently, notmuch new only synchronizes maildir flags to tags for files that have an "info" part. However, in maildir, new mail doesn't gain the info part until it moves from new/ to cur/. Hence, even though mail in new/ doesn't have an info part, it is still a maildir message and thus has maildir flags (though none of them set). The most visible effect of not synchronizing maildir flags for messages in new/ is that newly delivered messages don't get the unread tag (unless it is assigned by some other mechanism, like new.tags). This patch does *not* modify the test for messages in cur/ that do not have an "info" part. Unlike a message in new/, a message in cur/ without an info part is no longer a maildir message, and thus shouldn't be subject to maildir flag synchronization.
| * 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_context to use the new crypto structJameson Graef Rollins2012-06-10
| | | | | | | | This simplifies some more interfaces.
| * 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.
| * cli: new crypto structure to store crypto contexts and parameters, and ↵Jameson Graef Rollins2012-06-10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | functions to support it This new structure, notmuch_crypto_t, keeps all relevant crypto contexts and parameters together, and will make it easier to pass the stuff around and clean it up. The name of the crypto context inside this new struct will change, to reflect that it is actually a GPG context, which is a sub type of Crypto context. There are other types of Crypto contexts (Pkcs7 in particular, which we hope to support) so we want to be clear. The new crypto.c contains functions to return the proper context from the struct for a given protocol (and initialize it if needed), and to cleanup a struct by releasing the crypto contexts.
| * cli: use new typedef to deal with gmime 2.4/2.6 context incompatibilityJameson Graef Rollins2012-06-10
| | | | | | | | | | | | gmime 2.4 defines GMimeCipherContext, while 2.6 defines GMimeCryptoContext. typedef them both to notmuch_crypto_context_t to cover this discrepancy and remove a bunch of #ifdefs.
| * emacs: only strip "re:" in the beginning of subjectJani Nikula2012-06-07
| | | | | | | | | | Fix notmuch-show-strip-re by matching "re:" only in the beginning of the input string.
| * test: add test for emacs notmuch-show-strip-re functionJani Nikula2012-06-07
| | | | | | | | | | | | The function is used for stripping "re:" from subjects to generate "bare subjects". Include broken test for having "re:" in the middle of the subject.
| * nmbug: check whether every forked process exit with (non)zero valueTomi Ollila2012-06-03
| | | | | | | | | | | | If any of the forked process exits with nonzero value, terminate current operation -- nonzero exit value indicates failure and then there is no point continuing.
| * uncrustify.cfg: comments and more typesTomi Ollila2012-06-03
| | | | | | | | | | | | | | | | | | Changes to devel/uncrustify.cfg: * Updated header comment to state this is config file for *notmuch*. * Added comment about the reason of 'type' keyword used. * Added some more custom types woth 'type' keyword. * Have (every) multiline comment lines start with '*'.
| * emacs: Suppress warnings about using cl at runtimeAustin Clements2012-06-03
| | | | | | | | | | | | | | | | | | It was decided in the thread starting at [0] that it is okay for notmuch to use 'cl runtime functions. However, by default, these produce byte compiler warnings. This suppresses those using file-local variables. [0] id:"m262g864dz.fsf@wal122.wireless-pennnet.upenn.edu"
| * config: add quoting to fix IFS bugJameson Graef Rollins2012-06-03
| | | | | | | | | | | | Without proper quoting the DEFAULT_IFS was getting set incorrectly, which was causing problems with the storage of some variables later in the script. Quoting fixes the problem.
| * Merge tag '0.13.2'David Bremner2012-06-03
| |\ | | | | | | | | | notmuch 0.13.2 release
| | * debian: changelog stanza for 0.13.2-1David Bremner2012-06-02
| | |
| | * NEWS: update for 0.13.2David Bremner2012-06-02
| | |