; emacs local configuration settings for notmuch source
; surmised by dkg on 2010-11-23 13:43:18-0500
+; amended by amdragon on 2011-06-06
-((c-mode . ((indent-tabs-mode . t)
- (tab-width . 8)
- (c-basic-offset . 4)
- (c-file-style . "linux"))))
+((c-mode
+ (indent-tabs-mode . t)
+ (tab-width . 8)
+ (c-basic-offset . 4)
+ (c-file-style . "linux"))
+ (c++-mode
+ (indent-tabs-mode . t)
+ (tab-width . 8)
+ (c-basic-offset . 4)
+ (c-file-style . "linux"))
+ (emacs-lisp-mode
+ (indent-tabs-mode . t)
+ (tab-width . 8))
+ (shell-mode
+ (indent-tabs-mode . t)
+ (tab-width . 8)
+ (sh-basic-offset . 4)
+ (sh-indentation . 4))
+ )
string. Instead it's now a list of cons cells where the car of each
cell is a regular expression to be matched against the sender
address, and the cdr is the name of a folder to use for an FCC. So
- the old fallback behavior can be achieved by including a fineal cell
+ the old fallback behavior can be achieved by including a final cell
of (".*" . "default-fcc-folder").
Vim interface improvements
--------------------------
Felipe Contreras provided a number of updates for the vim interface.
- These include optimiations, support for newer versions of vim, fixed
- support for sending mail on modern systmms, new commands, and
+ These include optimizations, support for newer versions of vim, fixed
+ support for sending mail on modern systems, new commands, and
various cleanups.
New bindings
Fix configure script to accept (and ignore) various standard options.
- For example, those that the gentoo build scripts expect configure to
+ For example, those that the Gentoo build scripts expect configure to
accept are now all accepted.
Test suite
Selective bulk tagging is now possible by selecting a region of
threads and then using either the '+' or '-' keybindings. Bulk
tagging is still available for all threads matching the current
- search with th '*' binding.
+ search with the '*' binding.
More meaningful buffer names for thread-view buffers.
Add support for a delete keybinding that adds a "deleted" tag to the
current message/thread and make searches not return deleted messages
-by default, (unless the user asks explicitly for deleted messags in
+by default, (unless the user asks explicitly for deleted messages in
the search query).
Add keybindings for next/previous thread.
indexing.
Replace the "notmuch part --part=id" command with "notmuch show
---part=id", (David Edmonson wants to rewrite some of "notmuch show" to
+--part=id", (David Edmondson wants to rewrite some of "notmuch show" to
provide more MIME-structure information in its output first).
Replace the "notmuch search-tags" command with "notmuch search
-notmuch/comapt
+notmuch/compat
This directory consists of two things:
-# See Makfefile.local for the list of files to be compiled in this
+# See Makefile.local for the list of files to be compiled in this
# directory.
all:
$(MAKE) -C .. all
fi
# Set several defaults (optionally specified by the user in
-# environemnt variables)
+# environment variables)
CC=${CC:-gcc}
CXX=${CXX:-g++}
CFLAGS=${CFLAGS:--O2}
# The directory to which man pages should be installed
mandir = ${MANDIR:=\$(prefix)/share/man}
-# The directory to which read-only (configuration) filesshould be installed
+# The directory to which read-only (configuration) files should be installed
sysconfdir = ${SYSCONFDIR:=\$(prefix)/etc}
# The directory to which emacs lisp files should be installed
-# See Makfefile.local for the list of files to be compiled in this
+# See Makefile.local for the list of files to be compiled in this
# directory.
all:
$(MAKE) -C .. all
(let ((found-target-pos nil)
(final-target-pos nil))
(let* ((saved-alist
- ;; Filter out empty saved seaches if required.
+ ;; Filter out empty saved searches if required.
(if notmuch-show-empty-saved-searches
notmuch-saved-searches
(loop for elem in notmuch-saved-searches
(notmuch-config-get "user.primary_email"))
(defun notmuch-user-other-email ()
- "Return the user.primary_email value (as a list) from the notmuch configuration."
+ "Return the user.other_email value (as a list) from the notmuch configuration."
(split-string (notmuch-config-get "user.other_email") "\n"))
(defun notmuch-kill-this-buffer ()
notmuch-fcc-dirs)
((and (listp notmuch-fcc-dirs)
- (= 1 (length (car notmuch-fcc-dirs))))
+ (stringp (car notmuch-fcc-dirs)))
;; Old style - no longer works.
(error "Invalid `notmuch-fcc-dirs' setting (old style)"))
(make-directory (concat path "/new/") t)
(make-directory (concat path "/tmp/") t))
((file-regular-p path)
- (error "%s is a file. Can't creat maildir." path))
+ (error "%s is a file. Can't create maildir." path))
(t
(error "I don't know how to create a maildir here"))))
"Use external viewers to view all attachments from the current message."
(interactive)
(with-current-notmuch-show-message
- ; We ovverride the mm-inline-media-tests to indicate which message
+ ; We override the mm-inline-media-tests to indicate which message
; parts are already sufficiently handled by the original
; presentation of the message in notmuch-show mode. These parts
; will be inserted directly into the temporary buffer of
messages from the thread matching this search term are shown if
non-nil.
-The optional BUFFER-NAME provides the neame of the buffer in
+The optional BUFFER-NAME provides the name of the buffer in
which the message thread is shown. If it is nil (which occurs
when the command is called interactively) the argument to the
function is used. "
without removing any tags, and '\\[notmuch-show-archive-thread]' to archive an entire thread
without scrolling through with \\[notmuch-show-advance-and-archive]).
-You can add or remove arbitary tags from the current message with
+You can add or remove arbitrary tags from the current message with
'\\[notmuch-show-add-tag]' or '\\[notmuch-show-remove-tag]'.
All currently available key bindings:
(format label-format lines-count)))
(defun notmuch-wash-region-to-button (msg beg end type prefix)
- "Auxilary function to do the actual making of overlays and buttons
+ "Auxiliary function to do the actual making of overlays and buttons
BEG and END are buffer locations. TYPE should a string, either
\"citation\" or \"signature\". PREFIX is some arbitrary text to
("authors" . "%-20s ")
("subject" . "%s ")
("tags" . "(%s)"))
- "Search result formating. Supported fields are:
+ "Search result formatting. Supported fields are:
date, count, authors, subject, tags
For example:
(setq notmuch-search-result-format \(\(\"authors\" . \"%-40s\"\)
:group 'notmuch)
(defcustom notmuch-after-tag-hook nil
- "Hooks that are run before tags of a message are modified.
+ "Hooks that are run after tags of a message are modified.
'tags' will contain the tags that were added or removed as
a list of strings of the form \"+TAG\" or \"-TAG\".
(defun notmuch-search-operate-all (action)
"Add/remove tags from all matching messages.
-Tis command adds or removes tags from all messages matching the
+This command adds or removes tags from all messages matching the
current search terms. When called interactively, this command
will prompt for tags to be added or removed. Tags prefixed with
'+' will be added and tags prefixed with '-' will be removed.
* @parent_object: parent #GMimeFilter
* @saw_nl: previous char was a \n
* @line: temporary buffer for line unfolding
- * @line_size: size of currently allocated nemory for @line
+ * @line_size: size of currently allocated memory for @line
* @lineptr: pointer to the first unused character in @line
*
* A filter to decode rfc2047 encoded headers
-# See Makfefile.local for the list of files to be compiled in this
+# See Makefile.local for the list of files to be compiled in this
# directory.
all:
$(MAKE) -C .. all
install: install-$(dir)
-# The (often-reused) $dir works fine within targets/pre-requisites,
+# The (often-reused) $dir works fine within targets/prerequisites,
# but cannot be used reliably within commands, so copy its value to a
# variable that is not reused.
lib := $(dir)
*
* Multiple terms of given prefix:
*
- * reference: All message IDs from In-Reply-To and Re ferences
+ * reference: All message IDs from In-Reply-To and References
* headers in the message.
*
* tag: Any tags associated with this message by the user.
* ASCII integer. The initial database version
* was 1, (though a schema existed before that
* were no "version" database value existed at
- * all). Succesive versions are allocated as
+ * all). Successive versions are allocated as
* changes are made to the database (such as by
* indexing new fields).
*
* incremented for each thread ID.
*
* thread_id_* A pre-allocated thread ID for a particular
- * message. This is actually an arbitarily large
+ * message. This is actually an arbitrarily large
* family of metadata name. Any particular name is
* formed by concatenating "thread_id_" with a message
* ID (or the SHA1 sum of a message ID if it is very
}
/* Parse an RFC 822 message-id, discarding whitespace, any RFC 822
- * comments, and the '<' and '>' delimeters.
+ * comments, and the '<' and '>' delimiters.
*
* If not NULL, then *next will be made to point to the first character
* not parsed, (possibly pointing to the final '\0' terminator.
/* Given a legal 'path' for the database, return the relative path.
*
- * The return value will be a pointer to the originl path contents,
+ * The return value will be a pointer to the original path contents,
* and will be either the original string (if 'path' was relative) or
* a portion of the string (if path was absolute and begins with the
* database path).
* In all cases, we assign to the current message the first thread_id
* found (through either parent or child). We will also merge any
* existing, distinct threads where this message belongs to both,
- * (which is not uncommon when mesages are processed out of order).
+ * (which is not uncommon when messages are processed out of order).
*
* Finally, if no thread ID has been found through parent or child, we
* call _notmuch_message_generate_thread_id to generate a new thread
if((ctx->count[0] += len) < len)
++(ctx->count[1]);
- while(len >= space) /* tranfer whole blocks if possible */
+ while(len >= space) /* transfer whole blocks if possible */
{
memcpy(((unsigned char*)ctx->wbuf) + pos, sp, space);
sp += space; len -= space; space = SHA1_BLOCK_SIZE; pos = 0;
{
#endif
#if 0
-} /* Appleasing Emacs */
+} /* Appeasing Emacs */
#endif
#include <stdint.h>
/* Parse 'text' and add a term to 'message' for each parsed word. Each
* term will be added both prefixed (if prefix_name is not NULL) and
- * also unprefixed). */
+ * also non-prefixed). */
notmuch_private_status_t
_notmuch_message_gen_terms (notmuch_message_t *message,
const char *prefix_name,
/* Get a string representation of a notmuch_status_t value.
*
- * The result is readonly.
+ * The result is read-only.
*/
const char *
notmuch_status_to_string (notmuch_status_t status);
*
* It's not strictly necessary to call this function. All memory from
* the notmuch_threads_t object will be reclaimed when the
- * containg query object is destroyed.
+ * containing query object is destroyed.
*/
void
notmuch_threads_destroy (notmuch_threads_t *threads);
"\tsynchronize_flags Valid values are true and false.\n"
"\n"
"\tIf true, then the following maildir flags (in message filenames)\n"
- "\twill be syncrhonized with the corresponding notmuch tags:\n"
+ "\twill be synchronized with the corresponding notmuch tags:\n"
"\n"
"\t\tFlag Tag\n"
"\t\t---- -------\n"
/* If we're looking at a symlink, we only want to add it if it
* links to a regular file, (and not to a directory, say).
*
- * Similarly, if the file is of unknown type (due to filesytem
+ * Similarly, if the file is of unknown type (due to filesystem
* limitations), then we also need to look closer.
*
* In either case, a stat does the trick.
* The munging is easy to detect, because it results in a
* redundant reply-to header, (with an address that already exists
* in either To or Cc). So in this case, we ignore the Reply-To
- * field and use the From header. Thie ensures the original sender
+ * field and use the From header. This ensures the original sender
* will get the reply even if not subscribed to the list. Note
* that the address in the Reply-To header will always appear in
* the reply.
* them indications to which email address this message was
* delivered.
* The Received: header is special in our get_header function
- * and is always concated.
+ * and is always concatenated.
*/
received = notmuch_message_get_header (message, "received");
if (received == NULL)
The
.B part
-command can used to output a single part of a multi-part MIME message.
+command can used to output a single part of a multipart MIME message.
.RS 4
.TP 4
Finally, results can be restricted to only messages within a
particular time range, (based on the Date: header) with a syntax of:
- <intial-timestamp>..<final-timestamp>
+ <initial-timestamp>..<final-timestamp>
Each timestamp is a number representing the number of seconds since
1970\-01\-01 00:00:00 UTC. This is not the most convenient means of
expressing date ranges, but until notmuch is fixed to accept a more
convenient form, one can use the date program to construct
-timestamps. For example, with the bash shell the folowing syntax would
+timestamps. For example, with the bash shell the following syntax would
specify a date range to return messages from 2009\-10\-01 until the
current time:
notmuch_help_command (void *ctx, int argc, char *argv[]);
static const char search_terms_help[] =
- "\tSeveral notmuch commands accept a comman syntax for search\n"
+ "\tSeveral notmuch commands accept a common syntax for search\n"
"\tterms.\n"
"\n"
"\tThe search terms can consist of free-form text (and quoted\n"
-The debian packaging exists in the top-level "debian" directory within
-this source-code respository.
+The Debian packaging exists in the top-level "debian" directory within
+this source-code repository.
-# See Makfefile.local for the list of files to be compiled in this
+# See Makefile.local for the list of files to be compiled in this
# directory.
all:
$(MAKE) -C .. all
This works similar to test_expect_equal (see above) but is used to
mark a test that demonstrates a known breakage, (that is, the
- author of the test expectes "output" and "expected" to differ until
+ author of the test expects "output" and "expected" to differ until
the breakage is fixed). See test_expect_failure for details.
test_debug <script>
generate_message
Generates a message with an optional template. Most tests will
- actually prefere to call add_message. See below.
+ actually prefer to call add_message. See below.
add_message
This function should be called at the beginning of a test file
when a test needs to operate on a non-empty body of messages. It
- will intialize the mail database to a known state of 50 sample
+ will initialize the mail database to a known state of 50 sample
messages, (culled from the early history of the notmuch mailing
list).
"$expected"
test_begin_subtest "signature verification with revoked key"
-# generate revokation certificate and load it to revoke key
+# generate revocation certificate and load it to revoke key
echo "y
1
Notmuch Test Suite key revocation (automated) $(date '+%F_%T%z')
output=$(notmuch search 'subject:"testing message sent via SMTP"' | notmuch_search_sanitize)
test_expect_equal "$output" "thread:XXX 1974-03-29 [1/1] Notmuch Test Suite; Testing message sent via SMTP (inbox)"
+test_begin_subtest "notmuch-fcc-dirs set to nil"
+test_emacs "(setq notmuch-fcc-dirs nil) (notmuch-mua-mail) (princ (buffer-string))" > OUTPUT
+cat <<EOF >EXPECTED
+From: Notmuch Test Suite <test_suite@notmuchmail.org>
+To:
+Subject:
+--text follows this line--
+EOF
+test_expect_equal_file OUTPUT EXPECTED
+
+# Make another FCC maildir specific for the next test
+mkdir -p mail/sent-string/cur
+mkdir -p mail/sent-string/new
+mkdir -p mail/sent-string/tmp
+
+test_begin_subtest "notmuch-fcc-dirs set to a string"
+test_emacs "(setq notmuch-fcc-dirs \"sent-string\") (notmuch-mua-mail) (princ (buffer-string))" > OUTPUT
+cat <<EOF >EXPECTED
+From: Notmuch Test Suite <test_suite@notmuchmail.org>
+To:
+Subject:
+Fcc: ${MAIL_DIR}/sent-string
+--text follows this line--
+EOF
+test_expect_equal_file OUTPUT EXPECTED
+
+# Make more FCC maildirs specific for the next test
+mkdir -p mail/sent-list-match/cur
+mkdir -p mail/sent-list-match/new
+mkdir -p mail/sent-list-match/tmp
+mkdir -p mail/failure/cur
+mkdir -p mail/failure/new
+mkdir -p mail/failure/tmp
+
+test_begin_subtest "notmuch-fcc-dirs set to a list (with match)"
+test_emacs "(setq notmuch-fcc-dirs '((\"notmuchmail.org\" . \"sent-list-match\") (\".*\" . \"failure\"))) (notmuch-mua-mail) (princ (buffer-string))" > OUTPUT
+cat <<EOF >EXPECTED
+From: Notmuch Test Suite <test_suite@notmuchmail.org>
+To:
+Subject:
+Fcc: ${MAIL_DIR}/sent-list-match
+--text follows this line--
+EOF
+test_expect_equal_file OUTPUT EXPECTED
+
+# Make another FCC maildir specific for the next test
+mkdir -p mail/sent-list-catch-all/cur
+mkdir -p mail/sent-list-catch-all/new
+mkdir -p mail/sent-list-catch-all/tmp
+
+test_begin_subtest "notmuch-fcc-dirs set to a list (catch-all)"
+test_emacs "(setq notmuch-fcc-dirs '((\"example.com\" . \"failure\") (\".*\" . \"sent-list-catch-all\"))) (notmuch-mua-mail) (princ (buffer-string))" > OUTPUT
+cat <<EOF >EXPECTED
+From: Notmuch Test Suite <test_suite@notmuchmail.org>
+To:
+Subject:
+Fcc: ${MAIL_DIR}/sent-list-catch-all
+--text follows this line--
+EOF
+test_expect_equal_file OUTPUT EXPECTED
+
+test_begin_subtest "notmuch-fcc-dirs set to a list (no match)"
+test_emacs "(setq notmuch-fcc-dirs '((\"example.com\" . \"failure\") (\"nomatchhere.net\" . \"failure\"))) (notmuch-mua-mail) (princ (buffer-string))" > OUTPUT
+cat <<EOF >EXPECTED
+From: Notmuch Test Suite <test_suite@notmuchmail.org>
+To:
+Subject:
+--text follows this line--
+EOF
+test_expect_equal_file OUTPUT EXPECTED
+
test_begin_subtest "Reply within emacs"
# We sed away everything before the ^From in the output to avoid getting
# confused by messages such as "Parsing /home/cworth/.mailrc... done"
# test created directory document in the database but this document
# was not linked as subdirectory of $MAIL_DIR. Therefore notmuch new
# could not reach the cur/ directory and its files in it during
-# recurive traversal.
+# recursive traversal.
#
# XXX: The above sounds like a bug that should be fixed. If notmuch is
# creating new directories in the mail store, then it should be
EOF
test_expect_equal_file OUTPUT EXPECTED
-test_begin_subtest "--format=text --part=5, inline attachement"
+test_begin_subtest "--format=text --part=5, inline attachment"
notmuch show --format=text --part=5 'id:87liy5ap00.fsf@yoom.home.cworth.org' >OUTPUT
cat <<EOF >EXPECTED
\fattachment{ ID: 5, Content-type: text/plain
error "bug in test script: Missing test_expect_equal in ${BASH_SOURCE[1]}:${BASH_LINENO[0]}"
fi
test_subtest_name="$1"
- # Remember stdout and stderr file descriptios and redirect test
+ # Remember stdout and stderr file descriptors and redirect test
# output to the previously prepared file descriptors 3 and 4 (see
# below)
if test "$verbose" != "t"; then exec 4>test.output 3>&4; fi
add_message [subject]=uuencodetest '[date]="Sat, 01 Jan 2000 12:00:00 -0000"' \
'[body]="This message is used to ensure that notmuch correctly handles a
message containing a block of uuencoded data. First, we have a marker
-this content beforeuudata . Then we beging the uunencoded data itself:
+this content beforeuudata . Then we begin the uuencoded data itself:
begin 644 bogus-uuencoded-data
M0123456789012345678901234567890123456789012345678901234567890
-MOBVIOUSLY, THIS IS NOT ANY SORT OF USEFUL UUNECODED DATA.
+MOBVIOUSLY, THIS IS NOT ANY SORT OF USEFUL UUENCODED DATA.
MINSTEAD THIS IS JUST A WAY TO ENSURE THAT THIS BLOCK OF DATA
MIS CORRECTLY IGNORED WHEN NOTMUCH CREATES ITS INDEX. SO WE
MINCLUDE A DURINGUUDATA MARKER THAT SHOULD NOT RESULT IN ANY
You are presented with the search results when you run :NotMuch.
Keybindings:
- <Space> - show the selected thread colapsing unmatched items
+ <Space> - show the selected thread collapsing unmatched items
<Enter> - show the entire selected thread
a - archive message (remove inbox tag)
f - filter the current search terms
if part_end
" FIXME: this is a hack for handling two folds being added for one line
- " we should handle addinga fold in a function
+ " we should handle adding a fold in a function
if len(foldinfo) && foldinfo[1] < foldinfo[2]
call add(info['folds'], foldinfo[0:3])
let info['foldtext'][foldinfo[1]] = foldinfo[4]
function! s:NM_tag(filter, tags)
let filter = len(a:filter) ? a:filter : [<SID>NM_search_thread_id()]
if !len(filter)
- throw 'Eeek! I couldn''t find the thead id!'
+ throw 'Eeek! I couldn''t find the thread id!'
endif
let args = ['tag']
call extend(args, a:tags)