diff --git a/Makefile.local b/Makefile.local index 6e78368c..fa07d81b 100644 --- a/Makefile.local +++ b/Makefile.local @@ -80,8 +80,8 @@ version.stamp: $(srcdir)/version echo $(VERSION) > $@ $(TAR_FILE): - if git tag -v $(VERSION) >/dev/null 2>&1; then \ - ref=$(VERSION); \ + if git tag -v $(UPSTREAM_TAG) >/dev/null 2>&1; then \ + ref=$(UPSTREAM_TAG); \ else \ ref="HEAD" ; \ echo "Warning: No signed tag for $(VERSION)"; \ diff --git a/NEWS b/NEWS index bcd311d4..983db2b5 100644 --- a/NEWS +++ b/NEWS @@ -1,6 +1,80 @@ -Notmuch 0.18~rc0 (2014-04-22) +Notmuch 0.18~rc1 (2014-05-04) ============================= +Overview +-------- + +This new release includes some enhancements to searching for messages +by filesystem location (`folder:` and `path:` prefixes under *General* +below). Saved searches in *Emacs* have also been enhanced to allow +distinct search orders for each one. Another enhancement to the +*Emacs* interface is that replies to encrypted messages are now +encrypted, reducing the risk of unintentional information disclosure. +The default dump output format has changed to the more robust +`batch-tag` format. The previously deprecated parsing of single +message mboxes has been removed. For detailed release notes, see +below. + +General +------- + +The `folder:` search prefix now requires an exact match + + The `folder:` prefix has been changed to search for email messages + by the exact, case sensitive maildir or MH folder name. Wildcard + matching (`folder:foo*`) is no longer supported. The new behaviour + allows for more accurate mail folder based searches, makes it + possible to search for messages in the top-level folder, and should + lead to less surprising results than the old behaviour. Users are + advised to see the `notmuch-search-terms` manual page for details, + and review how the change affects their existing `folder:` searches. + +There is a new `path:` search prefix. + + The new `path:` search prefix complements the `folder:` prefix. The + `path:` prefix searches for email messages that are in particular + directories within the mail store, optionally recursively using a + special syntax. See the `notmuch-search-terms` manual page for + details. + +Notmuch database upgrade due to `folder:` and `path:` changes + + The above mentioned changes to the `folder:` prefix and the addition + of `path:` prefix require a Notmuch database upgrade. This will be + done automatically, without prompting on the next time `notmuch new` + is run after the upgrade. The upgrade is not reversible, and the + upgraded database will not be readable by older versions of + Notmuch. As a safeguard, a database dump will be created in the + `.notmuch` directory before upgrading. + +Library changes +--------------- + +Notmuch database upgrade + + The libnotmuch consumers are reminded to handle database upgrades + properly, either by relying on running `notmuch new`, or checking + `notmuch_database_needs_upgrade()` and calling + `notmuch_database_upgrade()` as necessary. This has always been the + case, but in practise there have been no database upgrades in any + released version of Notmuch before now. + +Support for indexing mbox files has been dropped + + There has never been proper support for mbox files containing + multiple messages, and the support for single-message mbox files has + been deprecated since Notmuch 0.15. The support has now been + dropped, and all mbox files will be rejected during indexing. + +Message header parsing changes + + Notmuch previously had an internal parser for message headers. The + parser has now been dropped in favour of letting GMime parse both + the headers and the message MIME structure at the same pass. This is + mostly an internal change, but the GMime parser is stricter in its + interpretation of the headers. This may result in messages with + slightly malformed message headers being now rejected. + Command-Line Interface ---------------------- @@ -12,6 +86,25 @@ Command-Line Interface This option suppresses the progress and summary reports. +`notmuch insert` respects maildir.synchronize_flags config option + + Do not synchronize tags to maildir flags in `notmuch insert` if the + user does not want it. + +The commands set consistent exit status codes on failures + + The cli commands now consistently set exit status of 1 on failures, + except where explicitly otherwise noted. The notable expections are + the status codes for format version mismatches for commands that + support formatted output. + +Bug fix for checking configured new.tags for invalid tags + + `notmuch new` and `notmuch insert` now check the user configured + new.tags for invalid tags, and refuse to apply them, similar to + `notmuch tag`. Invalid tags are currently the empty string and tags + starting with `-`. + Emacs Interface --------------- @@ -82,6 +175,12 @@ Version variable these differ from each other. This is especially useful when using notmuch remotely. +Ido-completing-read initialization in Emacs 23 + + `ido-completing-read` in Emacs 23 versions 1 through 3 freezes unless + it is initialized. Defadvice-based *Ido* initialization is defined + for these Emacs versions. + Bug fix for saved searches with newlines in them Split lines confuse `notmuch count --batch`, so we remove embedded @@ -93,6 +192,25 @@ Bug fixes for sender identities and undesirable ways. Now it will use identities exactly as configured in `notmuch-identities`. +Replies to encrypted messages will be encrypted by default + + In the interest of maintaining confidentiality of communications, + the Notmuch Emacs interface now automatically adds the mml tag to + encrypt replies to encrypted messages. This should make it less + likely to accidentally reply to encrypted messages in plain text. + +Reply pushes mark before signature + + We push mark and set point on reply so that the user can easily cut + the quoted text. The mark is now pushed before the signature, if + any, instead of end of buffer so the signature is preserved. + +Message piping uses the originating buffer's working directory + + `notmuch-show-pipe-message` now uses the originating buffer's + current default directory instead of that of the `*notmuch-pipe*` + buffer's. + nmbug ----- diff --git a/bindings/python/notmuch/version.py b/bindings/python/notmuch/version.py index f15440d1..a10ecd93 100644 --- a/bindings/python/notmuch/version.py +++ b/bindings/python/notmuch/version.py @@ -1,2 +1,2 @@ # this file should be kept in sync with ../../../version -__VERSION__ = '0.18~rc0' +__VERSION__ = '0.18~rc1' diff --git a/debian/changelog b/debian/changelog index 72dbd45c..15fc994e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +notmuch (0.18~rc1-1) experimental; urgency=low + + * Upstream release candidate + - include encoding fix for vim client. + + -- David Bremner Sun, 04 May 2014 07:29:51 +0900 + notmuch (0.18~rc0-1) experimental; urgency=low * Upstream release candidate. diff --git a/doc/doxygen.cfg b/doc/doxygen.cfg index 65d5fb50..bfbfcab3 100644 --- a/doc/doxygen.cfg +++ b/doc/doxygen.cfg @@ -4,7 +4,7 @@ # Project related configuration options #--------------------------------------------------------------------------- DOXYFILE_ENCODING = UTF-8 -PROJECT_NAME = "Notmuch 0.17" +PROJECT_NAME = "Notmuch 0.18" PROJECT_NUMBER = PROJECT_BRIEF = PROJECT_LOGO = diff --git a/version b/version index 065d0c86..9f565a42 100644 --- a/version +++ b/version @@ -1 +1 @@ -0.18~rc0 +0.18~rc1 diff --git a/vim/notmuch.vim b/vim/notmuch.vim index d7b310c8..331e9300 100644 --- a/vim/notmuch.vim +++ b/vim/notmuch.vim @@ -86,17 +86,22 @@ endfunction function! s:compose_send() let b:compose_done = 1 let fname = expand('%') + let lines = getline(5, '$') - " remove headers - 0,4d - write +ruby << EOF + # Generate proper mail to send + text = VIM::evaluate('lines').join("\n") + fname = VIM::evaluate('fname') + transport = Mail.new(text) + transport.message_id = generate_message_id + transport.charset = 'utf-8' + File.write(fname, transport.to_s) +EOF let cmdtxt = g:notmuch_sendmail . ' -t -f ' . s:reply_from . ' < ' . fname let out = system(cmdtxt) let err = v:shell_error if err - undo - write echohl Error echo 'Eeek! unable to send mail' echo out @@ -572,9 +577,7 @@ ruby << EOF end m.cc = orig[:cc] m.from = $email - m.message_id = generate_message_id m.charset = 'utf-8' - m.content_transfer_encoding = '7bit' end lines = [] @@ -600,7 +603,7 @@ ruby << EOF reply.body = body_lines.join("\n") - lines += reply.to_s.lines.map { |e| e.chomp } + lines += reply.present.lines.map { |e| e.chomp } lines << "" cur = lines.count - 1 @@ -611,18 +614,13 @@ ruby << EOF def open_compose() lines = [] - lines << "Date: #{Time.now().strftime('%a, %-d %b %Y %T %z')}" lines << "From: #{$email}" lines << "To: " cur = lines.count lines << "Cc: " lines << "Bcc: " - lines << "Message-Id: #{generate_message_id}" lines << "Subject: " - lines << "Mime-Version: 1.0" - lines << "Content-Type: text/plain; charset=utf-8" - lines << "Content-Transfer-Encoding: 7bit" lines << "" lines << "" lines << "" @@ -633,7 +631,7 @@ ruby << EOF def folders_render() $curbuf.render do |b| folders = VIM::evaluate('g:notmuch_folders') - count_threads = VIM::evaluate('g:notmuch_folders_count_threads') + count_threads = VIM::evaluate('g:notmuch_folders_count_threads') == 1 $searches.clear folders.each do |name, search| q = $curbuf.query(search) @@ -919,7 +917,8 @@ ruby << EOF if mime_type != "text/html" text = decoded else - IO.popen("elinks --dump", "w+") do |pipe| + IO.popen(VIM::evaluate('exists("g:notmuch_html_converter") ? ' + + 'g:notmuch_html_converter : "elinks --dump"'), "w+") do |pipe| pipe.write(decode_body) pipe.close_write text = pipe.read @@ -927,6 +926,16 @@ ruby << EOF end text end + + def present + buffer = '' + header.fields.each do |f| + buffer << "%s: %s\r\n" % [f.name, f.to_s] + end + buffer << "\r\n" + buffer << body.to_s + buffer + end end end