aboutsummaryrefslogtreecommitdiffhomepage
path: root/emacs/Makefile.local
Commit message (Collapse)AuthorAge
* emacs: Introduce notmuch-jump: shortcut keys to saved searchesGravatar Austin Clements2014-08-05
| | | | | | | | | | | | | | | This introduces notmuch-jump, which is like a user-friendly, user-configurable global prefix map for saved searches. This provides a non-modal and much faster way to access saved searches than notmuch-hello. A user configures shortcut keys in notmuch-saved-searches, which are immediately accessible from anywhere in Notmuch under the "j" key (for "jump"). When the user hits "j", the minibuffer immediately shows a helpful table of bindings reminiscent of a completions buffer. This code is a combination of work from myself (originally, "notmuch-go"), David Edmondson, and modifications from Mark Walters.
* emacs install: make sure all components to be installed are thereGravatar Tomi Ollila2014-06-15
| | | | | | | | | `make install-emacs` will copy $(emacs_sources), $(emacs_images) and $(emacs_bytecode) to their target directories. $(emacs_bytecode) was already a prerequisite of make install-emacs as these obviously needed to be build. Until a while ago all of $(emacs_sources) was available in the repository, but now it includes `notmuch-version.el` which is generated. In the future we may have generated emacs images too.
* 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.
* 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.
* emacs: Avoid rebuilding .eldeps even when there's nothing to doGravatar Austin Clements2014-02-21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, we updated .eldeps only if the file contents actually needed to change. This was done to avoid unnecessary make restarts (if the .eldeps rule changes the mtime of .eldeps, make has to restart to collect the new dependencies). However, this meant that, after a modification to any .el file that did not change dependencies, .eldeps would always be out of date, so every make invocation would run the .eldeps rule, which is both expensive because it starts up Emacs and noisy. This was true even when there was nothing to do. E.g., $ make clean && make ... $ touch emacs/notmuch-lib.el && make ... $ make Use "make V=1" to see the verbose compile lines. EMACS emacs/.eldeps make: Nothing to be done for `all'. $ make Use "make V=1" to see the verbose compile lines. EMACS emacs/.eldeps make: Nothing to be done for `all'. Fix this by replacing .eldeps with two files with identical content. One tracks the mtime of the dependency information and triggers the Emacs call to rebuild dependencies only when it may be necessary. The other tracks the content only; this rule over-triggers in the same way the old rule did, but this rule is cheap and quiet.
* emacs: Makefile.local: HAVE_EMACS usage fixesGravatar Tomi Ollila2014-01-13
| | | | | | | | If we don't have emacs, disable targets that used EMACS while doing the recipes of that target. If we do have emacs, make install-emacs depend on *.elc files, as making the target will attempt to install those.
* emacs: add tree to the makefileGravatar Mark Walters2013-11-07
|
* emacs: Streaming S-expression parserGravatar Austin Clements2013-06-01
| | | | | | | | | | | | | | | | | This provides the same interface as the streaming JSON parser, but reads S-expressions incrementally. The only difference is that the `notmuch-sexp-parse-partial-list' helper does not handle interleaved error messages (since we now have the ability to separate these out at the invocation level), so it no longer takes an error function and does not need to do the horrible resynchronization that the JSON parser had to. Some implementation improvements have been made over the JSON parser. This uses a vector instead of a list for the parser data structure, since this allows faster access to elements (and modern versions of Emacs handle storage of small vectors efficiently). Private functions follow the "prefix--name" convention. And the implementation is much simpler overall because S-expressions are much easier to parse.
* emacs: Compute build dependencies to fix byte compile issuesGravatar Austin Clements2013-05-23
| | | | | | | | | | | | | | | | Previously, we simply byte compiled each Elisp source file independently. This is actually the wrong thing to do and can lead to issues with macros and performance issues with substitutions because 1) when the byte compiler encounters a (require 'x) form, it will load x.elc in preference to x.el, even if x.el is newer, and as a result may load old macro and substitution definitions and 2) if we update a macro or substitution definition in one file, we currently won't re-compile other files that depend on the file containing the definition. This patch addresses these problems by computing make dependency rules from the (require 'x) forms in the Elisp source files, which we inject into make's dependency database.
* emacs: create notmuch-tag.el, and move appropriate functions from notmuch.elGravatar Jameson Graef Rollins2012-04-29
| | | | | | | | Tagging functions are used in notmuch.el, notmuch-show.el, and notmuch-message.el. There are enough common functions for tagging that it makes sense to put them all in their own library. No code is modified, just moved around.
* emacs: Improved printing support.Gravatar David Edmondson2012-01-21
| | | | | | | | | | Add various functions to print notmuch messages and tie them together with a simple frontend. Add a binding ('#') in `notmuch-show-mode' to print the current message. one trailing space removed by db.
* Separate Emacs misc. files dir. from Emacs code dir.Gravatar Amadeusz Żołnowski2011-10-28
| | | | | New option --emacsetcdir was added, but it's set default to the same value as --emacslispdir for backward compatibility.
* Makefile: Make emacs compilation depend on global dependencies.Gravatar Carl Worth2011-06-28
| | | | | | | | We call these "global_deps" for a reason, after all! Without this, emacs compilation would proceed even if the configure script failed, (such as for a missing dependency). That's undesirable as it can cause the helpful error messages from the configure failure to scroll away.
* 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.
* build: Add support for non-source-directory builds.Gravatar 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.
* Makefile: Quote variables used as filenames in shell commandsGravatar Carl Worth2011-01-26
| | | | This allows support for filenames with spaces in them.
* configure: add options to disable emacs/zsh/bash and choose install dir.Gravatar 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
* Add notmuch-message.el to emacs/Makefile.localGravatar Jesse Rosenthal2010-04-27
| | | | | When notmuch-message.el was added to the emacs directory, I neglected to add it to the makefile as one of the emacs_sources. This patch adds it.
* Integrate notmuch-maildir-fcc into notmuchGravatar Sebastian Spaeth2010-04-26
| | | | | | | Require notmuch-maildir-fcc and also install it. Rename all jkr/* functions to notmuch-maildir-fcc-* Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
* emacs: Add more functions to clean up text/plain partsGravatar David Edmondson2010-04-26
| | | | | | | | | | | | | | | | | | Add: - notmuch-wash-wrap-long-lines: Wrap lines longer than the width of the current window whilst maintaining any citation prefix. - notmuch-wash-tidy-citations: Tidy up citations by: - compress repeated otherwise blank citation lines, - remove otherwise blank citation lines at the head and tail of a citation, - notmuch-wash-elide-blank-lines: Compress repeated blank lines and remove leading and trailing blank lines. None of these is enabled by default - add them to `notmuch-show-insert-text/plain-hook' to use. Reviewed-by: Carl Worth <cworth@cworth.org>: I previously committed a stale version of this patch.
* Revert "emacs: Add more functions to clean up text/plain parts"Gravatar Carl Worth2010-04-26
| | | | This reverts commit 97570954cb583cacac35b0235cbe449a07630ae3.
* emacs: Add more functions to clean up text/plain partsGravatar David Edmondson2010-04-24
| | | | | | | | | | | | | | | | | | | | | | | Add: - notmuch-wash-wrap-long-lines: Wrap lines longer than the width of the current window whilst maintaining any citation prefix. - notmuch-wash-tidy-citations: Tidy up citations by: - compress repeated otherwise blank citation lines, - remove otherwise blank citation lines at the head and tail of a citation and remove blank lines between attribution statements and the citation, - notmuch-wash-compress-blanks: Compress repeated blank lines and remove leading and trailing blank lines. Enable `notmuch-wash-tidy-citations' and `notmuch-wash-compress-blanks' by default by adding them to `notmuch-show-insert-text/plain-hook'. `notmuch-wash-wrap-long-lines' is not enabled by default. If `notmuch-wash-wrap-long-lines' is enabled, word wrapping of the buffer leads to an unappealing display of text, so provide a function to disable it and add it to the list of `notmuch-show-mode' hook functions.
* emacs: Add notmuch-address.el for address completion using notmuchGravatar David Edmondson2010-04-23
| | | | | | | | A tool `notmuch-addresses' is required to produce addresses which match a query string. An example of a suitable script can be found in the git repository at http://jkr.acm.jhu.edu/git/notmuch_addresses.git There are no doubt others.
* emacs: Re-arrange message sending codeGravatar David Edmondson2010-04-23
| | | | | | Define a new `mail-user-agent' (`notmuch-user-agent') and use it by default. Re-arrange various routines that send mail to use this (compose, reply, forward). Insert a `User-Agent:' header by default.
* emacs: Add notmuch-hello.el, a friendly frontend to notmuchGravatar David Edmondson2010-04-23
| | | | | | | This is based on the prototype that Carl Worth described in the TODO file. It provides a search bar as well as support for recent searches, saved searches, and a list of all tags in the database (as well as the number of messages with each tag).
* emacs: Move body markup to a separate fileGravatar David Edmondson2010-04-21
| | | | | | Move the citation and signature markup for text/plain parts to a new file (notmuch-wash.el) and call it using a hook mechanism rather than directly.
* Install emacs lisp files into a notmuch sub-directory of site-lisp.Gravatar Carl Worth2010-04-06
| | | | | Now that we have multiple emacs-lisp source files, it's just more polite this way.
* Makefile: Eliminate the "make install-emacs" target.Gravatar Carl Worth2010-04-06
| | | | | | | | | Instead, simply byte-compile the emacs source files as part of "make" and install them as part of "make install". The byte compilation is made conditional on the configure script finding the emacs binary. That way, "make; make install" will still work for someone that doesn't have emacs installed, (which was the only reason we had made a separate "make install-emacs" target in the first place).
* Makefiles: Eliminate the useless quiet_* functions.Gravatar Carl Worth2010-04-06
| | | | | | | | | | | | | | | | | | With the original quiet function, there's an actual purpose (hiding excessively long compiler command lines so that warnings and errors from the compiler can be seen). But with things like quiet_symlink there's nothing quieter. In fact "SYMLINK" is longer than "ln -sf". So all this is doing is hiding the actual command from the user for no real benefit. The only actual reason we implemented the quiet_* functions was to be able to neatly right-align the command name and left-align the arguments. Let's give up on that, and just left-align everything, simplifying the Makefiles considerably. Now, the only instances of a captialized command name in the output is if there's some actually shortening of the command itself.
* Makfiles: Make the top-level targets PHONYGravatar Carl Worth2010-04-05
| | | | Just to avoid any clash with files of the same names.
* notmuch-query.el: new file to support access to the notmuch database.Gravatar David Bremner2010-04-05
| | | | | | | | | | | | | | | | Initially this file provides one main function notmuch-query-get-threads, which takes a set of search terms, and returns a parsed set of matching threads as a lisp data structure. A set of notmuch-query-map-* functions are provided to help map functions over the data structure. The function notmuch-query-get-message-ids uses this machinery to get the set of message-ids matching a query. Edited-by: Carl Worth <cworth@cworth.org>: Change comment syntax, (";;" rather than ";" to make emacs-lisp mode happy), and eliminate some excess whitespace, as suggested by David Edmonson.
* emacs: Move notmuch-show functionality to notmuch-show.elGravatar David Edmondson2010-04-05
| | | | | | | To ease the transition to a JSON based implementation of `notmuch-show', move the current implementation into a separate file. Create `notmuch-lib.el' to hold common variables.
* Makefile.local: Automatically use makefile modeGravatar David Edmondson2010-04-03
| | | | | | | | | We add a magic line to the beginning of each Makefile.local file to help the editor know that it should use makefile mode for editing the file, (even though the filename isn't exactly "Makefile"). Edited-by: Carl Worth <cworth@cworth.org>: Expand treatment from emacs/Makefile.local to each instance of Makefile.local.
* Makefiles: Make the install rules quiet like the compilation rules.Gravatar Carl Worth2010-03-31
| | | | | The output from make is looking better all the time, (though the columns still aren't lined up).
* Makefiles: Eliminate shell for loops in rule definitions.Gravatar Carl Worth2010-03-31
| | | | | These just made the output look so ugly, and weren't actually making the rule definitions any simpler. Good riddance.
* Makefile: Fix Makefiles to depend on all child Makefile fragments.Gravatar Carl Worth2010-03-10
| | | | | | | | | | | | | | We were previously maintaining two lists of the child Makefile fragments---one for the includes and another for the dependencies. So, of course, they drifted and the dependency list wasn't up to date. We fix this by adding a single subdirs variable, and then using GNU Makefile substitution to generate both the include and the dependency lists. Some side effect of this change caused the '=' assignment of the dir variable to not work anymore. I'm not sure why that is, but using ':=' makes sense here and fixes the problem.
* Makefile: Add a message after "make install-emacs"Gravatar Carl Worth2010-03-10
| | | | | More help to guide the new user here. Tell the user how to actually invoke the emacs client now that it's installed.
* emacs: Move emacs UI (currently just one file) to subdirectory.Gravatar David Bremner2010-03-09
Add emacs/Makefile.local and emacs/Makefile. Move emacs targets into emacs/Makefile.local, but leave the byte compilation rule in the top level Makefile.