aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
...
* emacs: Only compile replacement functions for emacs < emacs-23Carl Worth2011-05-11
| | | | | | This avoids the emacs lisp compiler from emitting warnings on this replacement code, (which warnings would be hard for us to eliminate since we didn't write the code but copied it verbatim from emacs 23).
* vim: parse 'from' addressFelipe Contreras2011-05-04
| | | | | | In order to pass it to sendmail. Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
* vim: use sendmail directlyFelipe Contreras2011-05-04
| | | | | | | | The problem with 'mailx' is that it's not standardized, and it doesn't allow the -f option, which is pretty important on many sendmail configurations. Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
* vim: add myself (Felipe Contreras) as contributorFelipe Contreras2011-05-04
| | | | Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
* vim: implement archive in show viewFelipe Contreras2011-05-04
| | | | Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
* vim: refactor tagging stuffFelipe Contreras2011-05-04
| | | | Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
* TODO: Add item for remembing files detected as not email.Carl Worth2011-04-25
| | | | | | As recently discussed on the mailing list. See, for example: id:"874o5m802d.fsf@servo.factory.finestructure.net"
* test: Mark the search-insufficient-from-quoting tests to expect successCarl Worth2011-04-25
| | | | | | Theses were expected failures only due to a bug in GMime (with versions of GMime before 2.4.18). As of GMime version 2.4.18 this bug is fixed and these tests now pass.
* Merge remote-tracking branch 'amdragon/eager-metadata-v4'Carl Worth2011-04-25
|\
| * Fixup string list authorAustin Clements2011-03-21
| |
| * Add the tag list to the unified message metadata pass.Austin Clements2011-03-21
| | | | | | | | | | | | | | | | | | | | | | | | | | Now each caller of notmuch_message_get_tags only gets a new iterator, instead of a whole new list. In principle this could cause problems with iterating while modifying tags, but through the magic of talloc references, we keep the old tag list alive even after the cache in the message object is invalidated. This reduces my index search from the 3.102 seconds before the unified metadata pass to 1.811 seconds (1.7X faster). Combined with the thread search optimization in b3caef1f0659dac8183441357c8fee500a940889, that makes this query 2.5X faster than when I started.
| * Add the file name list to the unified message metadata pass.Austin Clements2011-03-21
| | | | | | | | | | | | | | | | | | | | | | | | | | Even if the caller never uses the file names, there is little cost to simply fetching the file name terms. However, retrieving the full paths requires additional database work, so the expansion from terms to full paths is performed lazily. This also simplifies clearing the filename cache, since that's now handled by the generic metadata cache code. This further reduces my inbox search from 3.102 seconds before the unified metadata pass to 2.206 seconds (1.4X faster).
| * Add a generic function to get a list of terms with some prefix.Austin Clements2011-03-21
| | | | | | | | | | | | Replace _notmuch_convert_tags with this and simplify _create_filenames_for_terms_with_prefix. This will also come in handy shortly to get the message file name list.
| * Implement an internal generic string list and use it.Austin Clements2011-03-21
| | | | | | | | | | | | | | | | | | | | | | | | This replaces the guts of the filename list and tag list, making those interfaces simple iterators over the generic string list. The directory, message filename, and tags-related code now build generic string lists and then wraps them in specific iterators. The real wins come in later patches, when we use these for even more generic functionality. As a nice side-effect, this also eliminates the annoying dependency on GList in the tag list.
| * Use a single unified pass to fetch scalar message metadata.Austin Clements2011-03-21
| | | | | | | | | | | | | | | | | | | | This performs a single pass over a message's term list to fetch the thread ID, message ID, and reply-to, rather than requiring a pass for each. Xapian decompresses the term list anew for each iteration, so this reduces the amount of time spent decompressing message metadata. This reduces my inbox search from 3.102 seconds to 2.555 seconds (1.2X faster).
* | use custom-face-edit value-type in notmuch-search-line-facesJameson Graef Rollins2011-04-25
|/ | | | | This enables the proper face customization UI for notmuch-search-line-faces.
* python: Remove completed TODO itemJames Vasile2011-03-16
| | | | | | | Really just a left-over TODO item in the code, nothing spectacular to see here. Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
* emacs: Define notmuch-search-process-filter-data before first use.Carl Worth2011-03-10
| | | | To avoid a wraning about a reference to a free variable when compiling.
* emacs: Don't drop error messages from "notmuch search"Carl Worth2011-03-10
| | | | | | | | | | | | | With the previous commit, unexpected output before or between search results would be displayed. However, trailing junk from the "notmuch search" output would still be silently swallowed. The most common case for an error message from "notmuch search" would be an invalid command-line, and in that case, there would be no search results and the trailing error message would get swallowed. We fix the process sentinel to check for leftover data and add it to the final buffer. We also add a test case to ensure this works.
* emacs: Fix notmuch-search-process-filter to handle incomplete linesCarl Worth2011-03-10
| | | | | | | | | This fixes the recently-added emacs-large-search-buffer test. This is as simple as saving any trailing input and then pre-prepending it on the next call. MAny thanks to Thomas Schwinge <thomas@schwinge.name> for tracking down this problem and contributing a preliminary version of this fix.
* emacs: Display any unexpected output from notmuch searchCarl Worth2011-03-10
| | | | | | | | | | | | | | Rather than silently swallowing unexpected output, the emacs interface will now display it. This will allow error messages to actually arrive at the emacs interface (though not in an especially pretty way). This also allows for easier investigation of the inadvertent swallowing of search results that span page boundaries (as demonstrated by the recent added emacs-large-search-buffer test). The page-boundary bug has been present since a commit from 2009-11-24: 93af7b574598637c2766dd1f8ef343962c9a8efb Many thanks to Thomas Schwinge for tracking that bug down and contributing the test for it.
* Rename/rewrite the new emacs-forgetfulness test (to emacs-large-search-buffer)Carl Worth2011-03-10
| | | | | | | | The new name is more descriptive of the bug being tested. Also, the test is rewritten slightly so that it's much more plain to see how the bug manifests itself, (that messages are droped from the emacs result at regular intervals). Primarily, this is by collapsing the large blobs used to inflate the message subjects.
* New test: Emacs' forgetfulness.Thomas Schwinge2011-03-10
| | | | Signed-off-by: Thomas Schwinge <thomas@schwinge.name>
* new: Update comments for add_files_recursiveCarl Worth2011-03-10
| | | | | | The most recent commit optimized the implementation of this function. This commit simply updates the relevant comments to match the new implementation.
* new: read db_files and db_subdirs only if mtime changedKarel Zak2011-03-10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The db_files and db_subdirs are unnecessary for unchanged directories. maildir with 10000 e-mails: old version: $ time ./notmuch new No new mail. real 0m0.053s user 0m0.028s sys 0m0.026s new version: $ time ./notmuch new No new mail. real 0m0.032s user 0m0.009s sys 0m0.023s Signed-off-by: Karel Zak <kzak@redhat.com> Reviewed-by: Austin Clements <amdragon@mit.edu> Looks good (faster than, but provably equivalent to the original code! notmuch_directory_get_child_* are side-effect free, db_files/db_subdirs aren't used between where they were set in the old code and where they are set in the new code, and db_files/db_subdirs are initialized to NULL when declared). Another timing data point: Old code: ./notmuch new 0.77s user 0.28s system 99% cpu 1.051 total New code: ./notmuch new 0.09s user 0.27s system 98% cpu 0.368 total
* build: Save configure options and re-use them for automatic runs of configureCarl Worth2011-03-10
| | | | | | | | | This supports the case of a user running "configure --prefix=/foo" then later updating the soruce (including the configure script) and re-running make. In this case, the make invocation will re-run configure. Before this change, this run of configure would lose the user's carefully chosen prefix. This is now fixed so that configrue is re-run with the user's options.
* build: Fix a plain "make" to automatically run configure.Carl Worth2011-03-10
| | | | The recent change to support non-source-directory builds broke this case.
* Merge remote branch 'amdragon/search-perf-3'Carl Worth2011-03-10
|\
| * Simplify _notmuch_doc_id_set_init interface.Austin Clements2011-01-30
| | | | | | | | | | | | Don't require the caller of _notmuch_doc_id_set_init to pass in a correct bound; instead compute it from the array. This simplifies the caller and makes this interface easier to use correctly.
| * Remove code repetition in the doc ID bitmap code.Austin Clements2011-01-30
| | | | | | | | | | | | Remove the repeated "sizeof (doc_ids->bitmap[0])" that bothered cworth by instead defining macros to compute the word and bit offset of a given bit in the doc ID set bitmap.
* | build: Add support for non-source-directory builds.Carl Worth2011-03-09
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Such as: mkdir build cd build ../configure make This is implemented by having the configure script set a srcdir variable in Makefile.config, and then sprinkling $(srcdir) into various make rules. We also use vpath directives to convince GNU make to find the source files from the original source directory.
* | TODO: Add item for the build system to support a non-source-dir buildCarl Worth2011-03-09
| | | | | | | | | | This would be a handy feature that many people would expect to just work.
* | json: Fix search result with no matches to be a valid json object.Carl Worth2011-03-09
| | | | | | | | | | | | | | | | In the original json code, search matching nothing would return a valid, empty json array (that is, "[]"). I broke this in commit 6dcb7592e32ed5140ea0c0357ce78d6a37af6066 when adding support for --output=threads|messages|tags. This time, while fixing the bug also add a test to the test suite to help avoid future regressions.
* | test: Rename and clarify the search-lwn testCarl Worth2011-03-09
| | | | | | | | | | | | | | | | Now that we understand the bug here, we rename this test to search-insufficient-from-quoting to clarify the bug being exercised, (which occurs when the From: line contains an unquoted '.' character). We also mark these tests as expected failures until the bug gets fixed.
* | search: Move lwn tests into their own file.Carl Worth2011-03-09
| | | | | | | | | | Since it's much easier to debug and fix these if they can be run on their own.
* | Add a few tests for searching LWN emails.Thomas Schwinge2011-03-09
| | | | | | | | | | | | These tests should pass -- but they currently don't. Signed-off-by: Thomas Schwinge <thomas@schwinge.name>
* | update for go-release-2011-02-01:Sebastien Binet2011-02-03
| | | | | | | | | | * M bindings/go/cmds/notmuch-addrlookup.go log.Exitf -> log.Fatalf
* | ruby: Add generated files to .gitignoreAli Polatel2011-02-03
| |
* | Clarify usage of `additional_headers' in test/test-lib.sh:generate_message.Thomas Schwinge2011-01-28
|/ | | | Signed-off-by: Thomas Schwinge <thomas@schwinge.name>
* emacs: send notmuch-query stderr to /dev/nullJameson Rollins2011-01-27
| | | | | | | | | | The call-process to notmuch in notmuch-query.el was previously sending stderr into the output buffer. This means that if there is any stderr the JSON parsing breaks. Unfortunately call-process does not support sending stderr to a separate buffer or to the minibuffer [0], but it does support sending it to /dev/null. So we do that here instead. [0] a bug was filed against emacs (#7842)
* new: Print progress estimates only when we have sufficient informationMichal Sojka2011-01-26
| | | | | | | | | | Without this patch, it might happen that the remaining time or processing rate were calculated just after start where nothing was processed yet. This resulted into division by a very small number (or zero) and the printed information was of little value. Instead of printing nonsenses we print only that the operation is in progress. The estimates will be printed later, after there is enough data.
* Makefile: Quote variables used as filenames in shell commandsCarl Worth2011-01-26
| | | | This allows support for filenames with spaces in them.
* configure: Drop global setting of IFS (without space in it).Michal Sojka2011-01-26
| | | | | | | | | This was originally intended to help support filenames with spaces in them, but this actually breaks things when someone sets a command with a space in it, (such as CC="ccache cc"). Instead, we now only set a custom IFS when acting on the newline-separated list of files from /sbin/ldconfig.
* emacs: View the output of pipe command when it failsMichal 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.
* test: Make it easier to resolve conflicts when adding new testsMichal Sojka2011-01-26
| | | | | | | | | | | Currently, there are two places in the test framework that contain very long list on a single line. Whenever a test is added (or changed) in several branches and these branches are merged, it results in conflict which is hard to resolve because one has to go through the whole long line to find where the conflict is. This patch splits these long lists to several lines so that the conflicts are easier to resolve.
* Fix installation of zsh completionMichal Sojka2011-01-26
|
* configure: add options to disable emacs/zsh/bash and choose install dir.Cédric Cabessa2011-01-26
| | | | | | | | | | | | | add --bashcompletiondir and --zshcompletiondir (like --emacslispdir) to choose installation dir for bash/zsh completion files Make some features optional: --without-emacs / --with-emacs=no do not install lisp file --without-bash-completion / --with-bash-completion=no do not install bash files --without-zsh-completion / --with-zsh-completion=no do not install zsh files By default, everything is enabled. You can reenable something with --with-feature=yes
* new: Enhance progress reportingMichal Sojka2011-01-26
| | | | | | | | | | | | | | | notmuch new reports progress only during the "first" phase when the files on disk are traversed and indexed. After this phase, other operations like rename detection and maildir flags synchronization are performed, but the user is not informed about them. Since these operations can take significant time, we want to inform the user about them. This patch enhances the progress reporting facility that was already present. The timer that triggers reporting is not stopped after the first phase but continues to run until all operations are finished. The rename detection and maildir flag synchronization are enhanced to report their progress.
* new: Add all initial tags at onceMichal Sojka2011-01-26
| | | | | | | | If there are several tags applied to the new messages, it is beneficial to store them to the database at one, because it saves some time, especially when the notmuch new is run for the first time. This patch decreased the time for initial import from 1h 35m to 1h 14m.
* Do not defer maildir flag synchronization for new messagesAustin Clements2011-01-26
| | | | | | | | | | | | | | | | | | | | | | | | This is a simplified version of a patch originally by Michal Sojka <sojkam1@fel.cvut.cz> which is designed to have the same performance benefits. Michal said the following: When notmuch new is run for the first time, it is not necessary to defer maildir flags synchronization to later because we already know that no files will be removed. Performing the maildinr flag synchronization immediately after the message is added to the database has the advantage that the message is likely hot in the disk cache so the synchronization is faster. Additionally, we also save one database query for each message, which must be performed when the operation is deferred. Without this patch, the first notmuch new of 200k messages (3 GB) took 1h and 46m out of which 20m was maildir flags synchronization. With this patch, the whole operation took only 1h and 36m. Unlike Michal's patch, this version does the deferral for any new message, rather than doing it only on the first run of "notmuch new".