aboutsummaryrefslogtreecommitdiffhomepage
Commit message (Collapse)AuthorAge
* emacs: hello: bugfix: make alphabetically sorted saved searches workGravatar Mark Walters2014-04-14
| | | | | | | | | | | My recent changes to the saved search format broke the alphabetically sorted saved sort option. This makes it work again. Also update docs for saved-search sort defcustom to match the new format. Finally, since the saved-search list is no longer an alist change the names in the sort function to avoid confusion.
* emacs: remove auto-signing of replies to signed messagesGravatar Jameson Graef Rollins2014-04-14
| | | | | | | | | | It was decided that auto-signing is potentially too troublesome for the apparently common case of users who enable crypto processing for the purpose of checking signature validity but who are not in a position to sign out-going messages. Users can still manually invoke signing as needed. Encrypting replies to encrypted messages is more of a security issue so we leave it in place.
* emacs: add $(srcdir) to notmuch-version.el.tmpl dependencyGravatar Tomi Ollila2014-04-13
| | | | This fixes out-of-tree build when generating emacs/notmuch-version.el.
* configure: add $(ZLIB_CFLAGS) to CONFIGURE_CFLAGSGravatar Tomi Ollila2014-04-13
| | | | As it is defined in CONFIGURE_CXXFLAGS.
* emacs: sign/encrypt replies to signed/encrypted messagesGravatar Jani Nikula2014-04-12
| | | | | | | | | | | | | | This is a simple approach to improving security when replying to signed or encrypted messages. If the message being replied to was signed, add mml tag to sign the reply. If the message being replied to was encrypted, add mml tag to sign and encrypt the reply. This may need configuration; I for one might want to encrypt replies to encrypted messages, but not always sign replies to signed messages. This still includes a slight bug: if any mml tags are added, they are included in the region containing the quoted parts. Killing the region will kill the mml tags too.
* test: verify tag backup generated by database upgradeGravatar David Bremner2014-04-12
| | | | | 'pre upgrade dump' is not much of a test, but at least this way we get somewhat sensible behaviour if it fails.
* notmuch-new: backup tags before database upgradeGravatar David Bremner2014-04-12
| | | | | | | | All we do here is calculate the backup filename, and call the existing dump routine. Also take the opportunity to add a message about being safe to interrupt.
* restore: transparently support gzipped inputGravatar David Bremner2014-04-12
| | | | | | We rely completely on zlib to do the right thing in detecting gzipped input. Since our dump format is chosen to be 7 bit ascii, this should be fine.
* test: restore with missing final newlineGravatar David Bremner2014-04-12
| | | | | Recent proposed patches for gzipped input had a bug with handling missing newlines that was not caught by the current test suite
* util: add gz_readlineGravatar David Bremner2014-04-12
| | | | | | The idea is to provide a more or less drop in replacement for readline to read from zlib/gzip streams. Take the opportunity to replace malloc with talloc.
* dump: support gzipped and atomic outputGravatar David Bremner2014-04-12
| | | | | | | | | | | | | The main goal is to support gzipped output for future internal calls (e.g. from notmuch-new) to notmuch_database_dump. The additional dependency is not very heavy since xapian already pulls in zlib. We want the dump to be "atomic", in the sense that after running the dump file is either present and complete, or not present. This avoids certain classes of mishaps involving overwriting a good backup with a bad or partial one.
* News for emacs saved-searches change.Gravatar Mark Walters2014-04-11
| | | | | | | The important point is that the changed search variable is not forward compatible (it *is* backwards compatible): that is previous version of notmuch-emacs will be unusable with a new style notmuch-saved-search variable.
* emacs: Add a sort-order option to saved-searchesGravatar Mark Walters2014-04-11
| | | | | | | | | This adds a sort-order option to saved-searches, stores it in the saved-search buttons (widgets), and uses the stored value when the button is pressed. Storing the sort-order in the widget was suggested by Jani in id:4c3876274126985683e888641b29cf18142a5eb8.1391771337.git.jani@nikula.org.
* emacs: hello: switch notmuch-hello-insert-buttons to plistsGravatar Mark Walters2014-04-11
| | | | | Switching notmuch-hello-insert-buttons to plists means we can easily pass extra options through to the buttons.
* emacs: hello: add a customize for saved-searchesGravatar Mark Walters2014-04-11
| | | | | | Make the defcustom for notmuch-saved-searches use the new plist format. It should still work with oldstyle saved-searches but will write the newstyle form.
* emacs: hello: use the saved-search helper functionsGravatar Mark Walters2014-04-11
| | | | | This uses the helper functions: the saved searches format has not changed yet but backwards compatibility means everything still works.
* emacs: hello: add helper functions for saved-searchesGravatar Mark Walters2014-04-11
| | | | | | Add helper functions to for saved searches to ease the transition to the new plist form while maintaining backwards compatibility. They will be used in the next patch.
* emacs: defun notmuch-hello-versions and bind 'v' in hello mode to itGravatar Tomi Ollila2014-04-10
| | | | | | If notmuch cli & notmuch emacs MUA versions differ, print also the emacs MUA version string (along with the cli version) to the minibuffer.
* emacs: add notmuch-version.el.tmpl and create notmuch-version.el from itGravatar Tomi Ollila2014-04-10
| | | | | | | | | The notmuch cli program and emacs lisp versions may differ (especially in remote usage). It helps to resolve problems if we can determine the versions of notmuch cli and notmuch emacs mua separately. The build process now creates notmuch-version.el from template file by filling the version info to notmuch-emacs-version variable.
* build: write version.stamp file containing $(VERSION) stringGravatar Tomi Ollila2014-04-10
| | | | | | | | | | This version file will be as prerequisite to the target files that use the version info for some purpose, like printing it for the user to examine. The contents of the version.stamp file is seldom read by the build system itself as the $(VERSION) variable has the same information. Thanks to Trevor, David and Mark for their contributions.
* nmbug: Add 'clone' and replace FETCH_HEAD with @{upstream}Gravatar W. Trevor King2014-04-08
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | With two branches getting fetched (master and config), the branch referenced by FETCH_HEAD is ambiguous. For example, I have: $ cat FETCH_HEAD 41d7bfa7184cc93c9dac139d1674e9530799e3b0 \ not-for-merge branch 'config' of http://nmbug.tethera.net/git/nmbug-tags acd379ccb973c45713eee9db177efc530f921954 \ not-for-merge branch 'master' of http://nmbug.tethera.net/git/nmbug-tags (where I wrapped the line by hand). This means that FETCH_HEAD references the config branch: $ git rev-parse FETCH_HEAD 41d7bfa7184cc93c9dac139d1674e9530799e3b0 which breaks all of the FETCH_HEAD logic in nmbug (where FETCH_HEAD is assumed to point to the master branch). Instead of relying on FETCH_HEAD, use @{upstream} as the remote-tracking branch that should be merged/diffed/integrated into HEAD. @{upstream} was added in Git v1.7.0 (2010-02-12) [1], so relying on it should be fairly safe. One tricky bit is that bare repositories don't set upstream tracking branches by default: $ git clone --bare http://nmbug.tethera.net/git/nmbug-tags.git nmbug-bare $ cd nmbug-bare $ git remote show origin * remote origin Fetch URL: http://nmbug.tethera.net/git/nmbug-tags.git Push URL: http://nmbug.tethera.net/git/nmbug-tags.git HEAD branch: master Local refs configured for 'git push': config pushes to config (up to date) master pushes to master (up to date) While in a non-bare clone: $ git clone http://nmbug.tethera.net/git/nmbug-tags.git $ cd nmbug-tags $ git remote show origin * remote origin Fetch URL: http://nmbug.tethera.net/git/nmbug-tags.git Push URL: http://nmbug.tethera.net/git/nmbug-tags.git HEAD branch: master Remote branches: config tracked master tracked Local branch configured for 'git pull': master merges with remote master Local ref configured for 'git push': master pushes to master (up to date) From the clone docs [2]: --bare:: Make a 'bare' Git repository… Also the branch heads at the remote are copied directly to corresponding local branch heads, without mapping them to `refs/remotes/origin/`. When this option is used, neither remote-tracking branches nor the related configuration variables are created. To use @{upstream}, we need to the local vs. remote-tracking distinction, so this commit adds 'nmbug clone', replacing the previously suggested --bare clone with a non-bare --no-checkout --separate-git-dir clone into a temporary work directory. After which: $ git rev-parse @{upstream} acd379ccb973c45713eee9db177efc530f921954 gives us the master-branch commit. Existing nmbug users will have to run the configuration tweaks and re-fetch by hand. If you don't have any local commits, you could also blow away your NMBGIT repository and re-clone from scratch: $ nmbug clone http://nmbug.tethera.net/git/nmbug-tags.git Besides removing the ambiguity of FETCH_HEAD, this commit allows users to configure which upstream branch they want nmbug to track via 'git config', in case they want to change their upstream repository. [1]: http://git.kernel.org/cgit/git/git.git/tree/Documentation/RelNotes/1.7.0.txt [2]: http://git.kernel.org/cgit/git/git.git/tree/Documentation/git-clone.txt
* release-checks: removed manual page version checkGravatar Tomi Ollila2014-04-08
| | | | | | | | | Manual pages are now generated and during the generation the version string is read from `version` file, so this (currently failing) test checking manual page versions can be removed. While at it, changed the case pattern *[^0-9.]* to its portable alternative *[!0-9.]*
* doc: added 'Init File' section to notmuch-emacs info sourceGravatar Tomi Ollila2014-04-08
| | | | | | While adding that fixed (also other) typos noticed by aspell(1) run, and capitalized Emacs and (most) Notmuch terms to match how emacs Info documentation seems to look in general.
* doc: move doxgen config from devel/ to doc/Gravatar David Bremner2014-04-08
| | | | a first step towards actually instally the API docs
* compat: add canonicalize_file_nameGravatar David Bremner2014-04-08
| | | | | | | | the POSIX 2008 behaviour of realpath is not available everywhere so we provide a simple wrapper function. We use (and provide) the gnu extension canonicalize_file_name to make it cleaner to test for the feature we need; otherwise we have to rely on realpath segfaulting if the second argument is null.
* debian: add build conflicts against ruby1.8Gravatar David Bremner2014-04-08
| | | | | Debian stable has ruby 1.9, so this should be OK. The issue is that the ruby bindings don't build if "ruby" points to ruby1.8
* debian: really delete madduck from uploadersGravatar David Bremner2014-04-06
| | | | | | I'm not sure how it got into debian/changelog without actually happening, but actually delete martin from debian/control per request in Debian bug #719100
* debian: ignore performance corpus when making source packageGravatar David Bremner2014-04-05
| | | | | | | Currently "make debian-snapshot" will include the performance corpus tarball in the source package, which slows things down and wastes disk space. tar-ignore is needed twice to keep the default exclude rules (e.g. to exclude .git)
* lib: replace the header parser with gmimeGravatar Jani Nikula2014-04-05
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The notmuch library includes a full blown message header parser. Yet the same message headers are parsed by gmime during indexing. Switch to gmime parsing completely. These are the main changes: * Gmime stops header parsing at the first invalid header, and presumes the message body starts from there. The current parser is quite liberal in accepting broken headers. The change means we will be much pickier about accepting invalid messages. * The current parser converts tabs used in header folding to spaces. Gmime preserve the tabs. Due to a broken python library used in mailman, there are plenty of mailing lists that produce headers with tabs in header folding, and we'll see plenty of tabs. (This change has been mitigated in preparatory patches.) * For pure header parsing, the current parser is likely faster than gmime, which parses the whole message rather than just the headers. Since we parse the message and its headers using gmime for indexing anyway, this avoids and extra header parsing round when adding new messages. In case of duplicate messages, we'll end up parsing the full message although just headers would be sufficient. All in all this should still speed up 'notmuch new'. * Calls to notmuch_message_get_header() may be slightly slower than previously for headers that are not indexed in the database, due to parsing of the whole message. Within the notmuch code base, notmuch reply is the only such user.
* lib: drop support for single-message mbox filesGravatar Jani Nikula2014-04-05
| | | | | | | We've supported mbox files containing a single message for historical reasons, but the support has been deprecated, with a warning message while indexing, since Notmuch 0.15. Finally drop the support, and consider all mbox files non-email.
* cli: abstract dump file open from the dump commandGravatar Jani Nikula2014-03-30
| | | | | Also expose the dump function to the rest of notmuch. No functional changes, except for slight improvement in error handling.
* cli: abstract database dumping from the dump commandGravatar Jani Nikula2014-03-30
| | | | | No functional changes, except for slight improvement in error handling.
* emacs: push mark before signature on replyGravatar Jani Nikula2014-03-30
| | | | | | | | We push mark on reply so user can cut the quote. Push the mark before signature, if any, instead of end of buffer so the signature is preserved. This is consistent with message-kill-to-signature.
* emacs: add defcustom notmuch-init-file and load it if existsGravatar Tomi Ollila2014-03-30
| | | | | | | So that users can easily organize their notmuch-specific configurations to separate file and they don't have to have notmuch configurations in *every* emacs installation they launch, especially if those need to '(require notmuch) to make the configurations possible.
* emacs: instruct user to autoload notmuch instead of require'ing itGravatar Tomi Ollila2014-03-30
| | | | | | | | | | | | | When (require 'notmuch) is added to ~/.emacs notmuch is loaded to every instance of emacs although it may not be used in majority of those instances. When (autoload 'notmuch "notmuch" ...) is added to ~/.emacs notmuch is loaded (only) when user invokes the notmuch function. User may want to add other entrypoints to notmuch by adding more autoloads -- the autoload instruction given should offer them clue how to do so.
* cli: fix notmuch help additional topicsGravatar Jani Nikula2014-03-27
| | | | The help for hooks was missing.
* test: conditionally test help system depending on configured supportGravatar Jani Nikula2014-03-26
| | | | | If neither sphinx nor rst2man is available, the notmuch man pages will not be available. Take this into account in the help system test.
* cli: Flush stdout before fork()ing to run hooksGravatar Austin Clements2014-03-25
| | | | | | | | | Without this flush, if stdout is block buffered (which will happen if it's a pipe or a file, for example) and the hook also writes to stdout, then notmuch new's output will appear *after* the hook output. This situation may be a little esoteric, but it's good practice to flush before you fork anyway.
* cli: sanitize the received header before scanning for repliesGravatar Jani Nikula2014-03-25
| | | | | This makes the from guessing agnostic to header folding by spaces or tabs.
* completion: complete directory parameters to directories onlyGravatar Jani Nikula2014-03-25
| | | | i.e. don't complete to files if only directories are acceptable.
* completion: add proper completion of folder: and path:Gravatar Jani Nikula2014-03-25
| | | | | Complete folder: to maildir folders and path: to directories in mail store.
* emacs: Use whitelist instead of blacklist for term escapingGravatar Austin Clements2014-03-25
| | | | | | | | | | | | Previously, the term escaper used a blacklist of characters that needed escaping. This blacklist turned out to be somewhat incomplete; for example, it did not contain non-whitespace ASCII control characters or Unicode "fancy quotes", both of which do require the term to be escaped. Switch to a whitelist of characters that are definitely safe to leave unquoted. This fixes the broken test introduced by the previous patch.
* test: Add broken test for Emacs boolean term escapingGravatar Austin Clements2014-03-25
| | | | | | The current term escaper gets most of these right, but fails to escape things containing Unicode "fancy quotes" or things containing non-whitespace control characters.
* test: conditionally test compact depending on configured supportGravatar Jani Nikula2014-03-25
| | | | | | I still have one machine with old enough Xapian to not have compaction support. Make the tests check for unsupported compact operation when compact is not available.
* doc: fix out-of-tree buildGravatar David Bremner2014-03-25
| | | | | | | | The subtle part is adding .rst and .py files to vpath so they can be used as dependencies without prefixing with $(srcdir) We also change the interface to mkbuildeps.py: rather than getting the containing directory from the conf file path, we go the other way.
* test: use $(srcdir) instead of . as include pathGravatar David Bremner2014-03-25
| | | | | This is needed for out of tree builds. The functional change is the modification of extra_cflags; the other changes are cosmetic.
* build: move canonical list of subdirectories to configure scriptGravatar David Bremner2014-03-25
| | | | | The configure script needs this list for out of tree builds. Grabbing it from the Makefile via sed was fragile and broken.
* emacs: tree: use orig-tags in searchGravatar Mark Walters2014-03-24
| | | | | | | This uses the recent functionality to show the tag changes in the tree buffer. Currently this is only used to show changes the tree buffer makes itself: i.e., it does not make display any changes reflecting tagging done by other notmuch-buffers.
* emacs: search: use orig-tags in searchGravatar Mark Walters2014-03-24
| | | | | | | This uses the recent functionality to show the tag changes in the search buffer. Currently this is only used to show changes the search buffer makes itself: i.e., it does not make display any changes reflecting tagging done by other notmuch-buffers.
* emacs: show: use orig-tags for tag displayGravatar Mark Walters2014-03-24
| | | | | This uses the previous patch to show the tag changes that have occured in the show buffer since it was last loaded/refreshed.