Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package maildir-utils for openSUSE:Factory 
checked in at 2021-08-18 08:55:57
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/maildir-utils (Old)
 and      /work/SRC/openSUSE:Factory/.maildir-utils.new.1899 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "maildir-utils"

Wed Aug 18 08:55:57 2021 rev:24 rq:912426 version:1.6.3

Changes:
--------
--- /work/SRC/openSUSE:Factory/maildir-utils/maildir-utils.changes      
2021-08-11 11:47:51.913699729 +0200
+++ /work/SRC/openSUSE:Factory/.maildir-utils.new.1899/maildir-utils.changes    
2021-08-18 08:56:45.578915099 +0200
@@ -1,0 +2,13 @@
+Mon Aug 16 14:19:42 UTC 2021 - Michael Vetter <mvet...@suse.com>
+
+- Update to 1.6.3:
+  * A few more updates -- lazy indexing and thread-subjects, org
+    link config.
+
+-------------------------------------------------------------------
+Mon Aug 16 14:18:19 UTC 2021 - Michael Vetter <mvet...@suse.com>
+
+- Update to 1.6.2:
+  * Some more fixes for problems found in the 1.6 series.
+
+-------------------------------------------------------------------
@@ -4 +17,5 @@
-- Update to 1.6.1
+- Update to 1.6.1:
+  * Fixes for some problems found by early adopters.
+  NOTE: After upgrading, you need to call mu init, with your preferred
+  parameters before you can use mu/mu4e. This is because the underlying
+  database-schema has changed.

Old:
----
  mu-1.6.1.tar.xz

New:
----
  mu-1.6.3.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ maildir-utils.spec ++++++
--- /var/tmp/diff_new_pack.IFB7U3/_old  2021-08-18 08:56:46.006914595 +0200
+++ /var/tmp/diff_new_pack.IFB7U3/_new  2021-08-18 08:56:46.010914590 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           maildir-utils
-Version:        1.6.1
+Version:        1.6.3
 Release:        0
 Summary:        Maildir indexer and searcher
 License:        GPL-3.0-or-later

++++++ mu-1.6.1.tar.xz -> mu-1.6.3.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mu-1.6.1/Makefile.in new/mu-1.6.3/Makefile.in
--- old/mu-1.6.1/Makefile.in    2021-07-31 01:06:26.000000000 +0200
+++ new/mu-1.6.3/Makefile.in    2021-08-12 18:07:59.000000000 +0200
@@ -15,7 +15,7 @@
 @SET_MAKE@
 
 # aminclude_static.am generated automatically by Autoconf
-# from AX_AM_MACROS_STATIC on Sat Jul 31 02:06:25 EEST 2021
+# from AX_AM_MACROS_STATIC on Thu Aug 12 19:07:58 EEST 2021
 
 VPATH = @srcdir@
 am__is_gnu_make = { \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mu-1.6.1/aminclude_static.am 
new/mu-1.6.3/aminclude_static.am
--- old/mu-1.6.1/aminclude_static.am    2021-07-31 01:06:25.000000000 +0200
+++ new/mu-1.6.3/aminclude_static.am    2021-08-12 18:07:58.000000000 +0200
@@ -1,6 +1,6 @@
 
 # aminclude_static.am generated automatically by Autoconf
-# from AX_AM_MACROS_STATIC on Sat Jul 31 02:06:25 EEST 2021
+# from AX_AM_MACROS_STATIC on Thu Aug 12 19:07:58 EEST 2021
 
 
 # Code coverage
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mu-1.6.1/configure new/mu-1.6.3/configure
--- old/mu-1.6.1/configure      2021-07-31 01:06:24.000000000 +0200
+++ new/mu-1.6.3/configure      2021-08-12 18:07:57.000000000 +0200
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for mu 1.6.1.
+# Generated by GNU Autoconf 2.69 for mu 1.6.3.
 #
 # Report bugs to <https://github.com/djcb/mu/issues>.
 #
@@ -11,7 +11,7 @@
 # This configure script is free software; the Free Software Foundation
 # gives unlimited permission to copy, distribute and modify it.
 #
-# Copyright (C) 2008-2020 Dirk-Jan C. Binnema
+# Copyright (C) 2008-2021 Dirk-Jan C. Binnema
 ## -------------------- ##
 ## M4sh Initialization. ##
 ## -------------------- ##
@@ -592,8 +592,8 @@
 # Identity of this package.
 PACKAGE_NAME='mu'
 PACKAGE_TARNAME='mu'
-PACKAGE_VERSION='1.6.1'
-PACKAGE_STRING='mu 1.6.1'
+PACKAGE_VERSION='1.6.3'
+PACKAGE_STRING='mu 1.6.3'
 PACKAGE_BUGREPORT='https://github.com/djcb/mu/issues'
 PACKAGE_URL=''
 
@@ -1444,7 +1444,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures mu 1.6.1 to adapt to many kinds of systems.
+\`configure' configures mu 1.6.3 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1515,7 +1515,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of mu 1.6.1:";;
+     short | recursive ) echo "Configuration of mu 1.6.3:";;
    esac
   cat <<\_ACEOF
 
@@ -1674,14 +1674,14 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-mu configure 1.6.1
+mu configure 1.6.3
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
 This configure script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it.
 
-Copyright (C) 2008-2020 Dirk-Jan C. Binnema
+Copyright (C) 2008-2021 Dirk-Jan C. Binnema
 _ACEOF
   exit
 fi
@@ -2223,7 +2223,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by mu $as_me 1.6.1, which was
+It was created by mu $as_me 1.6.3, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -3094,7 +3094,7 @@
 
 # Define the identity of the package.
  PACKAGE='mu'
- VERSION='1.6.1'
+ VERSION='1.6.3'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -22622,7 +22622,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by mu $as_me 1.6.1, which was
+This file was extended by mu $as_me 1.6.3, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -22688,7 +22688,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; 
s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-mu config.status 1.6.1
+mu config.status 1.6.3
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mu-1.6.1/configure.ac new/mu-1.6.3/configure.ac
--- old/mu-1.6.1/configure.ac   2021-07-31 00:57:23.000000000 +0200
+++ new/mu-1.6.3/configure.ac   2021-08-12 18:07:03.000000000 +0200
@@ -15,8 +15,8 @@
 ## Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 
 AC_PREREQ([2.68])
-AC_INIT([mu],[1.6.1],[https://github.com/djcb/mu/issues],[mu])
-AC_COPYRIGHT([Copyright (C) 2008-2020 Dirk-Jan C. Binnema])
+AC_INIT([mu],[1.6.3],[https://github.com/djcb/mu/issues],[mu])
+AC_COPYRIGHT([Copyright (C) 2008-2021 Dirk-Jan C. Binnema])
 AC_CONFIG_HEADERS([config.h])
 AC_CONFIG_SRCDIR([mu/mu.cc])
 # libtoolize wants to put some stuff in here; if you have an old
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mu-1.6.1/guile/stamp-vti new/mu-1.6.3/guile/stamp-vti
--- old/mu-1.6.1/guile/stamp-vti        2021-07-31 01:06:33.000000000 +0200
+++ new/mu-1.6.3/guile/stamp-vti        2021-08-12 18:08:05.000000000 +0200
@@ -1,4 +1,4 @@
 @set UPDATED 17 March 2021
 @set UPDATED-MONTH March 2021
-@set EDITION 1.6.1
-@set VERSION 1.6.1
+@set EDITION 1.6.3
+@set VERSION 1.6.3
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mu-1.6.1/guile/version.texi 
new/mu-1.6.3/guile/version.texi
--- old/mu-1.6.1/guile/version.texi     2021-07-29 08:56:24.000000000 +0200
+++ new/mu-1.6.3/guile/version.texi     2021-08-12 18:08:05.000000000 +0200
@@ -1,4 +1,4 @@
 @set UPDATED 17 March 2021
 @set UPDATED-MONTH March 2021
-@set EDITION 1.6.1
-@set VERSION 1.6.1
+@set EDITION 1.6.3
+@set VERSION 1.6.3
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mu-1.6.1/lib/Makefile.in new/mu-1.6.3/lib/Makefile.in
--- old/mu-1.6.1/lib/Makefile.in        2021-07-31 01:06:26.000000000 +0200
+++ new/mu-1.6.3/lib/Makefile.in        2021-08-12 18:07:59.000000000 +0200
@@ -15,7 +15,7 @@
 @SET_MAKE@
 
 # aminclude_static.am generated automatically by Autoconf
-# from AX_AM_MACROS_STATIC on Sat Jul 31 02:06:25 EEST 2021
+# from AX_AM_MACROS_STATIC on Thu Aug 12 19:07:58 EEST 2021
 
 
 VPATH = @srcdir@
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mu-1.6.1/lib/index/Makefile.in 
new/mu-1.6.3/lib/index/Makefile.in
--- old/mu-1.6.1/lib/index/Makefile.in  2021-07-31 01:06:26.000000000 +0200
+++ new/mu-1.6.3/lib/index/Makefile.in  2021-08-12 18:07:59.000000000 +0200
@@ -15,7 +15,7 @@
 @SET_MAKE@
 
 # aminclude_static.am generated automatically by Autoconf
-# from AX_AM_MACROS_STATIC on Sat Jul 31 02:06:25 EEST 2021
+# from AX_AM_MACROS_STATIC on Thu Aug 12 19:07:58 EEST 2021
 
 VPATH = @srcdir@
 am__is_gnu_make = { \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mu-1.6.1/lib/index/mu-indexer.cc 
new/mu-1.6.3/lib/index/mu-indexer.cc
--- old/mu-1.6.1/lib/index/mu-indexer.cc        2021-07-29 08:53:38.000000000 
+0200
+++ new/mu-1.6.3/lib/index/mu-indexer.cc        2021-08-12 16:49:21.000000000 
+0200
@@ -115,12 +115,16 @@
                            Scanner::HandleType htype)
 {
         switch (htype) {
-        case Scanner::HandleType::EnterDir: {
+        case Scanner::HandleType::EnterDir:
+        case Scanner::HandleType::EnterNewCur: {
                 // in lazy-mode, we ignore this dir if its dirstamp suggest it
                 // is up-to-date (this is _not_ always true; hence we call it
-                // lazy-mode)
+                // lazy-mode); only for actual message dirs, since the dir
+                // tstamps may not bubble up.
                 dirstamp_ = store_.dirstamp(fullpath);
-                if (conf_.lazy_check && dirstamp_ == statbuf->st_mtime) {
+                if (conf_.lazy_check &&
+                    dirstamp_ == statbuf->st_mtime &&
+                    htype == Scanner::HandleType::EnterNewCur) {
                         g_debug("skip %s (seems up-to-date)", 
fullpath.c_str());
                         return false;
                 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mu-1.6.1/lib/index/mu-scanner.cc 
new/mu-1.6.3/lib/index/mu-scanner.cc
--- old/mu-1.6.1/lib/index/mu-scanner.cc        2021-07-28 23:02:30.000000000 
+0200
+++ new/mu-1.6.3/lib/index/mu-scanner.cc        2021-08-12 16:47:23.000000000 
+0200
@@ -96,14 +96,15 @@
         }
 
         if (S_ISDIR(statbuf.st_mode)) {
-
-                const auto res = handler_(fullpath, &statbuf, 
Scanner::HandleType::EnterDir);
-                if (!res) {
-                        //g_debug ("skipping dir %s", fullpath.c_str());
+                const auto new_cur = is_new_cur(dentry->d_name);
+                const auto htype   = new_cur ?
+                        Scanner::HandleType::EnterNewCur :
+                        Scanner::HandleType::EnterDir;
+                const auto res     = handler_(fullpath, &statbuf, htype);
+                if (!res)
                         return true; // skip
-                }
 
-                process_dir (fullpath, is_new_cur(dentry->d_name));
+                process_dir (fullpath, new_cur);
 
                 return handler_(fullpath, &statbuf, 
Scanner::HandleType::LeaveDir);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mu-1.6.1/lib/index/mu-scanner.hh 
new/mu-1.6.3/lib/index/mu-scanner.hh
--- old/mu-1.6.1/lib/index/mu-scanner.hh        2021-02-11 13:29:17.000000000 
+0100
+++ new/mu-1.6.3/lib/index/mu-scanner.hh        2021-08-12 16:46:22.000000000 
+0200
@@ -42,7 +42,12 @@
 ///
 class Scanner {
 public:
-        enum struct HandleType { File, EnterDir, LeaveDir };
+        enum struct HandleType {
+                File,
+                EnterNewCur, /* cur/ or new/ */
+                EnterDir, /* some other directory */
+                LeaveDir
+        };
 
         /// Prototype for a handler function
         using Handler     = std::function<bool(const std::string& fullpath,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mu-1.6.1/lib/mu-query-threads.cc 
new/mu-1.6.3/lib/mu-query-threads.cc
--- old/mu-1.6.1/lib/mu-query-threads.cc        2021-07-28 22:56:29.000000000 
+0200
+++ new/mu-1.6.3/lib/mu-query-threads.cc        2021-08-11 21:24:12.000000000 
+0200
@@ -366,6 +366,22 @@
         return str;
 }
 
+static bool // compare subjects, ignore anything before the last ':<space>*'
+subject_matches (const std::string& sub1, const std::string& sub2)
+{
+       auto search_str =[](const std::string&s) -> const char* {
+               const auto pos = s.find_last_of(':');
+               if (pos == std::string::npos)
+                       return s.c_str();
+               else {
+                       const auto pos2 = s.find_first_not_of(' ', pos + 1);
+                       return s.c_str() + (pos2 == std::string::npos ? pos : 
pos2);
+               }
+       };
+
+       //g_debug ("'%s' '%s'", search_str(sub1), search_str(sub2));
+       return g_strcmp0(search_str(sub1), search_str(sub2)) == 0;
+}
 
 static bool
 update_container (Container& container, bool descending,
@@ -385,7 +401,6 @@
                 return false; // nothing else to do.
 
         auto& qmatch(*container.query_match);
-
         if (!container.parent)
                 qmatch.flags |= QueryMatch::Flags::Root;
         else if (!container.parent->query_match)
@@ -394,21 +409,10 @@
         if (!container.children.empty())
                 qmatch.flags |= QueryMatch::Flags::HasChild;
 
-        // see whether this message has the has the thread
-        // subject, ie.. the first message in this thread with the
-        // given subject.
-        if (qmatch.has_flag(QueryMatch::Flags::Root) ||
-            //qmatch.has_flag(QueryMatch::Flags::Orphan) ||
-            prev_subject.empty() ||
-            (qmatch.subject.find(prev_subject) > 5))
+        if (qmatch.has_flag(QueryMatch::Flags::Root) || prev_subject.empty() ||
+           !subject_matches(prev_subject, qmatch.subject))
                 qmatch.flags |= QueryMatch::Flags::ThreadSubject;
 
-        // g_debug ("%c%c: '%s' vs '%s'",
-        //          any_of(qmatch.flags & QueryMatch::Flags::Root) ? 'r' : 'c',
-        //          any_of(qmatch.flags & QueryMatch::Flags::ThreadSubject) ? 
'y' : 'n',
-        //          qmatch.subject.c_str(),
-        //          prev_subject.c_str());
-
         if (descending && container.parent) {
                 // trick xapian by giving it "inverse" sorting key so our
                 // ascending-date sorted threads stay in that order
@@ -428,20 +432,19 @@
 
 static void
 update_containers (Containers& children, bool descending, ThreadPath& tpath,
-                   size_t seg_size)
+                   size_t seg_size, std::string& prev_subject)
 {
         size_t idx{0};
-        std::string last_subject;
 
         for (auto&& c: children) {
                 tpath.emplace_back(idx++);
-
                 if (c->query_match) {
-                        update_container(*c, descending, tpath, seg_size,
-                                         last_subject);
-                        last_subject = c->query_match->subject;
+                       update_container(*c, descending, tpath, seg_size,
+                                         prev_subject);
+                       prev_subject = c->query_match->subject;
                 }
-                update_containers(c->children, descending, tpath, seg_size);
+                update_containers(c->children, descending, tpath, seg_size,
+                                 prev_subject);
                 tpath.pop_back();
         }
 }
@@ -457,9 +460,12 @@
 
         size_t idx{0};
         for (auto&& c: root_vec) {
-                tpath.emplace_back(idx++);
-                update_container(*c, descending, tpath, seg_size);
-                update_containers(c->children, descending, tpath, seg_size);
+               tpath.emplace_back(idx++);
+               std::string prev_subject;
+               if (update_container(*c, descending, tpath, seg_size))
+                       prev_subject = c->query_match->subject;
+               update_containers(c->children, descending, tpath, seg_size,
+                                 prev_subject);
                 tpath.pop_back();
         }
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mu-1.6.1/lib/mu-server.cc 
new/mu-1.6.3/lib/mu-server.cc
--- old/mu-1.6.1/lib/mu-server.cc       2021-07-31 00:13:44.000000000 +0200
+++ new/mu-1.6.3/lib/mu-server.cc       2021-08-04 22:51:08.000000000 +0200
@@ -20,6 +20,7 @@
 #include "config.h"
 
 #include "mu-msg-fields.h"
+#include "mu-msg.hh"
 #include "mu-server.hh"
 
 #include <iostream>
@@ -106,7 +107,6 @@
         void sent_handler (const Parameters& params);
         void view_handler (const Parameters& params);
 
-
 private:
         // helpers
         Sexp build_message_sexp(MuMsg *msg, unsigned docid,
@@ -119,6 +119,9 @@
                                  const std::string& maildirarg,
                                  MuFlags flags, bool new_name, bool no_view);
 
+        bool maybe_mark_as_read (MuMsg *msg, Store::Id docid);
+        bool maybe_mark_msgid_as_read (const  Mu::Query& query, const char* 
msgid);
+
         Store&           store_;
         Server::Output   output_;
         const CommandMap command_map_;
@@ -1127,13 +1130,12 @@
         output_sexp (std::move(lst));
 }
 
-static bool
-maybe_mark_as_read (Mu::Store& store, MuMsg *msg, Store::Id docid)
+
+bool
+Server::Private::maybe_mark_as_read (MuMsg *msg, Store::Id docid)
 {
         if (!msg)
                 throw Error{Error::Code::Store, "missing message"};
-        if (docid == Store::InvalidId)
-                throw Error{Error::Code::Store, "invalid docid"};
 
         const auto oldflags{mu_msg_get_flags (msg)};
         const auto newflags{get_flags (mu_msg_get_path(msg), "+S-u-N")};
@@ -1149,12 +1151,41 @@
                                      &gerr))
                 throw Error{Error::Code::File, &gerr, "failed to move 
message"};
 
-        /* after mu_msg_move_to_maildir, path will be the *new* path, and flags
-         * and maildir fields will be updated as wel */
-        if (!store.update_message (msg, docid))
+        /* after mu_msg_move_to_maildir, path will be the *new* path, and 
flags and maildir fields
+         * will be updated as wel */
+        if (!store().update_message (msg, docid))
                 throw Error{Error::Code::Store, "failed to store updated 
message"};
 
+        /* send an update */
+        Sexp::List update;
+        update.add_prop(":update", build_message_sexp(msg, docid, {}, 
MU_MSG_OPTION_NONE));
+        output_sexp(Sexp::make_list(std::move(update)));
+
         g_debug ("marked message %d as read => %s", docid, 
mu_msg_get_path(msg));
+
+        return true;
+}
+
+
+bool
+Server::Private::maybe_mark_msgid_as_read (const  Mu::Query& query, const 
char* msgid)
+{
+        if (!msgid)
+                return false; // nothing to do.
+
+        const auto docids{docids_for_msgid(query, std::string{msgid})};
+        for (auto&& docid: docids) {
+                MuMsg *msg = store().find_message(docid);
+                if (!msg)
+                        continue;
+                try {
+                        maybe_mark_as_read(msg, docid);
+                } catch (...) {
+                        mu_msg_unref(msg);
+                        throw;
+                }
+        }
+
         return true;
 }
 
@@ -1168,25 +1199,29 @@
         GError *gerr{};
         MuMsg *msg{};
 
-        if (!path.empty())
+        if (!path.empty()) { /* only use for old view (embedded msgs) */
+                docid = Store::InvalidId;
                 msg   = mu_msg_new_from_file (path.c_str(), NULL, &gerr);
-        else {
+        } else {
                 docid = determine_docids(query(), params).at(0);
                 msg   = store().find_message(docid);
         }
 
         if (!msg)
                 throw Error{Error::Code::Store, &gerr,
-                                "failed to find message for view"};
+                        "failed to find message for view"};
 
-        if (mark_as_read)
-                maybe_mark_as_read (store(), msg, docid);
+        if (mark_as_read) {
+                // maybe mark the main message as read.
+                maybe_mark_as_read(msg, docid);
+                /* maybe mark _all_ messsage with same message-id as read */
+                maybe_mark_msgid_as_read(query(), mu_msg_get_msgid(msg));
+        }
 
         Sexp::List seq;
-        seq.add_prop(":view", build_message_sexp(msg, docid, {}, 
message_options(params)));
-
+        seq.add_prop(":view", build_message_sexp(
+                             msg, docid, {}, message_options(params)));
         mu_msg_unref(msg);
-
         output_sexp (std::move(seq));
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mu-1.6.1/lib/mu-store.cc new/mu-1.6.3/lib/mu-store.cc
--- old/mu-1.6.1/lib/mu-store.cc        2021-07-31 00:46:24.000000000 +0200
+++ new/mu-1.6.3/lib/mu-store.cc        2021-07-31 16:54:33.000000000 +0200
@@ -291,7 +291,6 @@
 {
         if (metadata().schema_version != ExpectedSchemaVersion)
                 throw Mu::Error(Error::Code::SchemaMismatch,
-                                "expected schema-version %s, but got %s",
                                 "expected schema-version %s, but got %s; "
                                 "please use 'mu init'",
                                 ExpectedSchemaVersion,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mu-1.6.1/lib/utils/Makefile.in 
new/mu-1.6.3/lib/utils/Makefile.in
--- old/mu-1.6.1/lib/utils/Makefile.in  2021-07-31 01:06:26.000000000 +0200
+++ new/mu-1.6.3/lib/utils/Makefile.in  2021-08-12 18:07:59.000000000 +0200
@@ -15,7 +15,7 @@
 @SET_MAKE@
 
 # aminclude_static.am generated automatically by Autoconf
-# from AX_AM_MACROS_STATIC on Sat Jul 31 02:06:25 EEST 2021
+# from AX_AM_MACROS_STATIC on Thu Aug 12 19:07:58 EEST 2021
 
 
 VPATH = @srcdir@
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mu-1.6.1/lib/utils/mu-util.c 
new/mu-1.6.3/lib/utils/mu-util.c
--- old/mu-1.6.1/lib/utils/mu-util.c    2021-07-28 23:02:30.000000000 +0200
+++ new/mu-1.6.3/lib/utils/mu-util.c    2021-08-08 14:15:36.000000000 +0200
@@ -1,7 +1,5 @@
-/* -*-mode: c; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-*/
 /*
-**
-** Copyright (C) 2008-2016 Dirk-Jan C. Binnema <d...@djcbsoftware.nl>
+** Copyright (C) 2008-2021 Dirk-Jan C. Binnema <d...@djcbsoftware.nl>
 **
 ** This program is free software; you can redistribute it and/or modify
 ** it under the terms of the GNU General Public License as published by
@@ -19,13 +17,11 @@
 **
 */
 
-#if HAVE_CONFIG_H
 #include <config.h>
-#endif /*HAVE_CONFIG_H*/
 
-#ifndef _XOPEN_SOURCE
-#define _XOPEN_SOURCE (500)
-#endif /*_XOPEN_SOURCE*/
+#ifndef _GNU_SOURCE
+#define _GNU_SOURCE
+#endif /*_GNU_SOURCE*/
 
 #include "mu-util.h"
 #ifdef HAVE_WORDEXP_H
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mu-1.6.1/mu/Makefile.in new/mu-1.6.3/mu/Makefile.in
--- old/mu-1.6.1/mu/Makefile.in 2021-07-31 01:06:26.000000000 +0200
+++ new/mu-1.6.3/mu/Makefile.in 2021-08-12 18:07:59.000000000 +0200
@@ -15,7 +15,7 @@
 @SET_MAKE@
 
 # aminclude_static.am generated automatically by Autoconf
-# from AX_AM_MACROS_STATIC on Sat Jul 31 02:06:25 EEST 2021
+# from AX_AM_MACROS_STATIC on Thu Aug 12 19:07:58 EEST 2021
 
 VPATH = @srcdir@
 am__is_gnu_make = { \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mu-1.6.1/mu/mu.cc new/mu-1.6.3/mu/mu.cc
--- old/mu-1.6.1/mu/mu.cc       2021-07-28 22:56:29.000000000 +0200
+++ new/mu-1.6.3/mu/mu.cc       2021-08-03 11:46:33.000000000 +0200
@@ -1,5 +1,5 @@
 /*
-** Copyright (C) 2008-2020 Dirk-Jan C. Binnema <d...@djcbsoftware.nl>
+** Copyright (C) 2008-2021 Dirk-Jan C. Binnema <d...@djcbsoftware.nl>
 **
 ** This program is free software; you can redistribute it and/or modify it
 ** under the terms of the GNU General Public License as published by the
@@ -33,16 +33,16 @@
 static void
 show_version (void)
 {
-       const char* blurb =
-               "mu (mail indexer/searcher) version " VERSION "\n"
-               "Copyright (C) 2008-2020 Dirk-Jan C. Binnema\n"
-               "License GPLv3+: GNU GPL version 3 or later "
-               "<http://gnu.org/licenses/gpl.html>.\n"
-               "This is free software: you are free to change "
-               "and redistribute it.\n"
-               "There is NO WARRANTY, to the extent permitted by law.";
+        const char* blurb =
+                "mu (mail indexer/searcher) version " VERSION "\n"
+                "Copyright (C) 2008-2021 Dirk-Jan C. Binnema\n"
+                "License GPLv3+: GNU GPL version 3 or later "
+                "<http://gnu.org/licenses/gpl.html>.\n"
+                "This is free software: you are free to change "
+                "and redistribute it.\n"
+                "There is NO WARRANTY, to the extent permitted by law.";
 
-       g_print ("%s\n", blurb);
+        g_print ("%s\n", blurb);
 }
 
 
@@ -50,12 +50,12 @@
 handle_error (MuConfig *conf, MuError merr, GError **err)
 {
         if (!(err && *err))
-               return;
+                return;
 
         using Color = MaybeAnsi::Color;
         MaybeAnsi col{conf ? !conf->nocolor : false};
 
-       if (*err)
+        if (*err)
                 std::cerr << col.fg(Color::Red)        << "error" << 
col.reset() << ": "
                           << col.fg(Color::BrightYellow)
                           << ((*err) ? (*err)->message : "something when 
wrong")
@@ -63,35 +63,35 @@
 
         std::cerr << col.fg(Color::Green);
 
-       switch ((*err)->code) {
-       case MU_ERROR_XAPIAN_CANNOT_GET_WRITELOCK:
-               std::cerr << "Maybe mu is already running?\n";
-               break;
+        switch ((*err)->code) {
+        case MU_ERROR_XAPIAN_CANNOT_GET_WRITELOCK:
+                std::cerr << "Maybe mu is already running?\n";
+                break;
 
         case MU_ERROR_XAPIAN_NEEDS_REINDEX:
                 std::cerr << "Database needs (re)indexing.\n"
                           << "try 'mu index' "
                           << "(see mu-index(1) for details)\n";
-               return;
-       case MU_ERROR_IN_PARAMETERS:
-               if (conf && mu_config_cmd_is_valid(conf->cmd))
-                       mu_config_show_help (conf->cmd);
-               break;
-       case MU_ERROR_SCRIPT_NOT_FOUND:
-               std::cerr << "See the mu manpage for commands, or "
+                return;
+        case MU_ERROR_IN_PARAMETERS:
+                if (conf && mu_config_cmd_is_valid(conf->cmd))
+                        mu_config_show_help (conf->cmd);
+                break;
+        case MU_ERROR_SCRIPT_NOT_FOUND:
+                std::cerr << "See the mu manpage for commands, or "
                           << "'mu script' for the scripts\n";
-               break;
-       case MU_ERROR_XAPIAN_CANNOT_OPEN:
-               std::cerr << "Please (re)initialize mu with 'mu init' "
+                break;
+        case MU_ERROR_XAPIAN_CANNOT_OPEN:
+                std::cerr << "Please (re)initialize mu with 'mu init' "
                           << "see mu-init(1) for details\n";
-               return;
-       case MU_ERROR_XAPIAN_SCHEMA_MISMATCH:
-               std::cerr << "Please (re)initialize mu with 'mu init' "
+                return;
+        case MU_ERROR_XAPIAN_SCHEMA_MISMATCH:
+                std::cerr << "Please (re)initialize mu with 'mu init' "
                           << "see mu-init(1) for details\n";
-               return;
-       default:
-               break; /* nothing to do */
-       }
+                return;
+        default:
+                break; /* nothing to do */
+        }
 
         std::cerr << col.reset();
 }
@@ -100,41 +100,41 @@
 int
 main (int argc, char *argv[])
 {
-       GError   *err;
-       MuError   rv;
-       MuConfig *conf;
-
-       setlocale (LC_ALL, "");
-
-       err = NULL;
-       rv  = MU_OK;
-
-       conf = mu_config_init (&argc, &argv, &err);
-       if (!conf) {
-               rv = err ? (MuError)err->code : MU_ERROR;
-               goto cleanup;
-       } else if (conf->version) {
-               show_version ();
-               goto cleanup;
-       }
-
-       /* nothing to do */
-       if (conf->cmd == MU_CONFIG_CMD_NONE)
-               return 0;
-
-       if (!mu_runtime_init (conf->muhome, PACKAGE_NAME, conf->debug)) {
-               mu_config_uninit (conf);
-               return 1;
-       }
+        GError  *err;
+        MuError          rv;
+        MuConfig *conf;
+
+        setlocale (LC_ALL, "");
+
+        err = NULL;
+        rv  = MU_OK;
+
+        conf = mu_config_init (&argc, &argv, &err);
+        if (!conf) {
+                rv = err ? (MuError)err->code : MU_ERROR;
+                goto cleanup;
+        } else if (conf->version) {
+                show_version ();
+                goto cleanup;
+        }
+
+        /* nothing to do */
+        if (conf->cmd == MU_CONFIG_CMD_NONE)
+                return 0;
+
+        if (!mu_runtime_init (conf->muhome, PACKAGE_NAME, conf->debug)) {
+                mu_config_uninit (conf);
+                return 1;
+        }
 
-       rv = mu_cmd_execute (conf, &err);
+        rv = mu_cmd_execute (conf, &err);
 
 cleanup:
         handle_error (conf, rv, &err);
-       g_clear_error (&err);
+        g_clear_error (&err);
 
-       mu_config_uninit (conf);
-       mu_runtime_uninit ();
+        mu_config_uninit (conf);
+        mu_runtime_uninit ();
 
-       return rv;
+        return rv;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mu-1.6.1/mu4e/mu4e-headers.el 
new/mu-1.6.3/mu4e/mu4e-headers.el
--- old/mu-1.6.1/mu4e/mu4e-headers.el   2021-07-30 13:25:42.000000000 +0200
+++ new/mu-1.6.3/mu4e/mu4e-headers.el   2021-08-11 06:28:32.000000000 +0200
@@ -274,7 +274,7 @@
 (defvar mu4e-headers-full-label       '("F" . "???")
   "Non-fancy and fancy labels for full search in the mode-line.")
 (defvar mu4e-headers-related-label    '("R" . "????")
-  "Non-fancy and fancy labels for inclued-related search in the mode-line.")
+  "Non-fancy and fancy labels for include-related search in the mode-line.")
 
 ;;;; Various
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mu-1.6.1/mu4e/mu4e-message.el 
new/mu-1.6.3/mu4e/mu4e-message.el
--- old/mu-1.6.1/mu4e/mu4e-message.el   2021-05-31 20:25:56.000000000 +0200
+++ new/mu-1.6.3/mu4e/mu4e-message.el   2021-08-01 09:40:29.000000000 +0200
@@ -245,8 +245,7 @@
   (with-temp-buffer
     (insert body)
     (goto-char (point-min))
-    (while (re-search-forward "[
-????]" nil t)
+    (while (re-search-forward "\015????]" nil t)
       (replace-match
        (cond
         ((string= (match-string 0) "??") "'")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mu-1.6.1/mu4e/mu4e-meta.el 
new/mu-1.6.3/mu4e/mu4e-meta.el
--- old/mu-1.6.1/mu4e/mu4e-meta.el      2021-07-31 01:06:31.000000000 +0200
+++ new/mu-1.6.3/mu4e/mu4e-meta.el      2021-08-12 18:08:04.000000000 +0200
@@ -1,5 +1,5 @@
 ;; auto-generated
-(defconst mu4e-mu-version "1.6.1"
+(defconst mu4e-mu-version "1.6.3"
   "Required mu binary version; mu4e's version must agree with this.")
 
 (defconst mu4e-builddir "/home/djcb/Sources/mu"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mu-1.6.1/mu4e/mu4e-org.el 
new/mu-1.6.3/mu4e/mu4e-org.el
--- old/mu-1.6.1/mu4e/mu4e-org.el       2021-05-31 20:25:56.000000000 +0200
+++ new/mu-1.6.3/mu4e/mu4e-org.el       2021-08-10 21:10:39.000000000 +0200
@@ -36,6 +36,25 @@
   :group 'mu4e
   :group 'org)
 
+(defcustom mu4e-org-link-desc-func
+  (lambda (msg) (or (plist-get msg :subject) "No subject"))
+  "Function that takes a msg and returns a description.
+This can be used in org capture templates and storing links.
+
+Example usage:
+
+  (defun my-link-descr (msg)
+    (let ((subject (or (plist-get msg :subject)
+                       \"No subject\"))
+          (date (or (format-time-string mu4e-headers-date-format
+                    (mu4e-msg-field msg :date))
+                    \"No date\")))
+      (concat subject \" \" date)))
+
+  (setq org-mu4e-link-desc-func 'my-link-descr)"
+  :type '(function)
+  :group 'mu4e-org)
+
 (defvar mu4e-org-link-query-in-headers-mode nil
   "Prefer linking to the query rather than to the message.
 If non-nil, `org-store-link' in `mu4e-headers-mode' links to the
@@ -79,7 +98,7 @@
      :to                       (when to
                                  (mu4e~org-address to))
      :link                     (concat "mu4e:msgid:" msgid)
-     :description              (or (plist-get msg :subject) "No subject"))))
+     :description              (funcall mu4e-org-link-desc-func msg))))
 
 (defun mu4e-org-store-link ()
   "Store a link to a mu4e message or query.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mu-1.6.1/mu4e/mu4e-utils.el 
new/mu-1.6.3/mu4e/mu4e-utils.el
--- old/mu-1.6.1/mu4e/mu4e-utils.el     2021-07-31 00:51:32.000000000 +0200
+++ new/mu-1.6.3/mu4e/mu4e-utils.el     2021-08-12 17:02:41.000000000 +0200
@@ -644,7 +644,8 @@
            "Indexing... processed %d, updated %d" processed updated)
         (progn
           (mu4e-index-message
-           "Indexing completed; processed %d, updated %d, cleaned-up %d"
+           "%s completed; processed %d, updated %d, cleaned-up %d"
+           (if mu4e-index-lazy-check "Lazy indexing" "Indexing")
            processed updated cleaned-up)
           ;; call the updated hook if anything changed.
           (unless (zerop (+ updated cleaned-up))
@@ -945,7 +946,17 @@
 (defun mu4e-update-index ()
   "Update the mu4e index."
   (interactive)
-  (mu4e~proc-index  mu4e-index-cleanup mu4e-index-lazy-check))
+  (mu4e~proc-index mu4e-index-cleanup mu4e-index-lazy-check))
+
+(defun mu4e-update-index-nonlazy ()
+  "Update the mu4e index non-lazily.
+This is just a convenience wrapper for indexing the non-lazy way
+if you otherwise want to use `mu4e-index-lazy-check'."
+  (interactive)
+  (let ((mu4e-index-cleanup t) (mu4e-index-lazy-check nil))
+    (mu4e-update-index)))
+
+
 
 (defvar mu4e~update-buffer nil
   "Internal, store the buffer of the update process when
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mu-1.6.1/mu4e/mu4e-vars.el 
new/mu-1.6.3/mu4e/mu4e-vars.el
--- old/mu-1.6.1/mu4e/mu4e-vars.el      2021-07-17 14:01:23.000000000 +0200
+++ new/mu-1.6.3/mu4e/mu4e-vars.el      2021-08-12 17:02:23.000000000 +0200
@@ -129,10 +129,13 @@
 (defcustom mu4e-index-lazy-check nil
   "Whether to only use a 'lazy check' during reindexing.
 This influences how we decide whether a message
-needs (re)indexing or not. When this is set to t, mu only uses
-the directory timestamps to decide whether it needs to check the
-messages beneath it, which would miss messages that are modified
-outside mu. On the other hand, it's significantly faster."
+needs (re)indexing or not.
+
+When this is set to non-nil, mu only uses the directory
+timestamps to decide whether it needs to check the messages
+beneath it. This makes indexing much faster, but might miss some
+changes. For this, you might want to occasionally call
+`mu4e-update-index-nonlazy'."
   :type 'boolean
   :group 'mu4e
   :safe 'booleanp)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mu-1.6.1/mu4e/mu4e-view-common.el 
new/mu-1.6.3/mu4e/mu4e-view-common.el
--- old/mu-1.6.1/mu4e/mu4e-view-common.el       2021-07-24 11:12:51.000000000 
+0200
+++ new/mu-1.6.3/mu4e/mu4e-view-common.el       2021-08-08 17:07:23.000000000 
+0200
@@ -69,7 +69,7 @@
 
 (defcustom mu4e-view-actions
   '( ("capture message"  . mu4e-action-capture-message)
-     ("view as pdf"      . mu4e-action-view-as-pdf)
+     ("view in browser"  . mu4e-action-view-in-browser)
      ("show this thread" . mu4e-action-show-thread))
   "List of actions to perform on messages in view mode.
 The actions are cons-cells of the form:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mu-1.6.1/mu4e/mu4e-view-gnus.el 
new/mu-1.6.3/mu4e/mu4e-view-gnus.el
--- old/mu-1.6.1/mu4e/mu4e-view-gnus.el 2021-06-03 23:54:28.000000000 +0200
+++ new/mu-1.6.3/mu4e/mu4e-view-gnus.el 2021-08-12 16:58:53.000000000 +0200
@@ -73,8 +73,10 @@
     (buffer-substring-no-properties (point-min) (point-max))))
 
 (defun mu4e-action-view-in-browser (msg)
-  "Show current message MSG in browser, if it contains an html body."
-;;  (with-temp-buffer
+  "Show current MSG in browser if it includes an HTML-part.
+The variables `browse-url-browser-function',
+`browse-url-handlers', and `browse-url-default-handlers'
+determine which browser function to use."
   (with-temp-buffer
     (insert-file-contents-literally
      (mu4e-message-field msg :path) nil nil nil t)
@@ -422,6 +424,13 @@
   (advice-add 'gnus-set-mode-line :around #'mu4e~view-nop)
   (advice-add 'gnus-button-reply :around #'mu4e~view-button-reply)
   (advice-add 'gnus-msg-mail :around #'mu4e~view-msg-mail)
+
+  ;; advice gnus-block-private-groups to always return "."
+  ;; so that by default we block images.
+  (advice-add 'gnus-block-private-groups :around
+              (lambda(func &rest args)
+                (if (mu4e~view-mode-p)
+                    "." (apply func args))))
   (mu4e~view-mode-body))
 
 ;;; Massaging the message view
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mu-1.6.1/mu4e/mu4e.info new/mu-1.6.3/mu4e/mu4e.info
--- old/mu-1.6.1/mu4e/mu4e.info 2021-07-29 08:56:53.000000000 +0200
+++ new/mu-1.6.3/mu4e/mu4e.info 2021-08-12 18:08:07.000000000 +0200
@@ -19,7 +19,7 @@
 mu4e manual
 ***********
 
-Welcome to mu4e 1.6.1.
+Welcome to mu4e 1.6.3.
 
    mu4e (mu-for-emacs) is an e-mail client for GNU Emacs version 24.4 or
 higher, built on top of the mu(1) e-mail search engine.  mu4e is
@@ -622,8 +622,12 @@
        mu4e-index-lazy-check t)    ;; don't consider up-to-date dirs
 
    In many cases, the mentioned thoroughness might not be needed, and
-these settings give a very significant speed-up.  Note that you can of
-course occasionally run a thorough indexing round.
+these settings give a very significant speed-up.  If it does not work
+for you (e.g., mu4e fails to find some new messages), simply leave at
+the default.
+
+   Note that you can occasionally run a thorough indexing round using
+???mu4e-update-index-nonlazy???.
 
    For further details, please refer to the mu-index manpage; in
 particular, see .noindex and .noupdate which can help reducing the
@@ -1400,10 +1404,16 @@
 external images in HTML are not retrieved from external URLs because
 they can be used to track you.
 
+   Apart from that, you can also control whether to load remote images;
+since loading remote images is often used for privacy violations, by
+default this is not allowed.
+
    You can specify what URLs to block by setting ???gnus-blocked-images???
-to a regular exporession or to a function that will receive the message
-as an argument.  For example, to enable images in Github notifications,
-do the following:
+to a regular expression or to a function that will receive a single
+parameter which is not meaningful for mu4e.
+
+   For example, to enable images in Github notifications, you could use
+the following:
 
      (setq gnus-blocked-images
         (lambda(&optional _ignore)
@@ -1411,6 +1421,11 @@
               (mu4e-message-at-point) :from "notificati...@github.com")
              nil ".")))
 
+   ???mu4e??? inherits the default gnus-blocked-images from Gnus and ensures
+that it works with mu4e too.  However, mu4e is not Gnus, so if you have
+Gnus-specific settings for gnus-blocked-images, you should verify that
+they have the desired effect in ???mu4e??? as well.
+
 
 File: mu4e.info,  Node: MSGV Custom headers,  Next: MSGV Actions,  Prev: MSGV 
Rich-text and images,  Up: Message view
 
@@ -3578,7 +3593,8 @@
 *note Message view::.  When you are in *note Headers view::, ???M-x
 org-store-link??? links to the _query_ if
 ???mu4e-org-link-query-in-headers-mode??? is non-???nil???, and to the
-particular message otherwise (which is the default).
+particular message otherwise (which is the default).  You can customize
+the link description using ???mu4e-org-link-desc-func???.
 
    You can insert this link later with ???M-x org-insert-link???.  From
 org-mode, you can go to the query or message the link points to with
@@ -5676,144 +5692,144 @@
 Node: Folders18856
 Ref: Folders-Footnote-119659
 Node: Retrieval and indexing19938
-Node: Sending mail24191
-Node: Running mu4e26414
-Node: Main view27461
-Node: MV Overview27990
-Node: Basic actions29148
-Node: MV Bookmarks30001
-Node: Miscellaneous31374
-Node: Headers view32249
-Node: HV Overview33009
-Ref: HV Overview-Footnote-137331
-Ref: HV Overview-Footnote-237422
-Ref: HV Overview-Footnote-337529
-Node: Keybindings37629
-Node: HV Marking39679
-Node: Sorting and threading40842
-Ref: Sorting and threading-Footnote-142418
-Node: HV Custom headers42509
-Node: HV Actions44692
-Node: Split view45402
-Node: Message view46838
-Node: MSGV Overview47674
-Node: MSGV Keybindings48873
-Node: MSGV Rich-text and images51417
-Node: MSGV Custom headers53526
-Node: MSGV Actions54062
-Node: Editor view54819
-Node: EV Overview55618
-Node: EV Keybindings56033
-Node: Address autocompletion56689
-Ref: Address autocompletion-Footnote-158791
-Node: Compose hooks58836
-Node: Signing and encrypting62139
-Node: Queuing mail63153
-Node: Message signatures64447
-Node: Other settings65081
-Node: Searching65813
-Node: Queries66778
-Ref: Queries-Footnote-169887
-Node: Bookmarks70001
-Ref: Bookmarks-Footnote-174160
-Node: Maildir searches74203
-Node: Other search functionality76706
-Ref: Including related messages78610
-Ref: Skipping duplicates79229
-Node: Marking79818
-Node: Marking messages80653
-Node: What to mark for81445
-Ref: What to mark for-Footnote-183022
-Ref: What to mark for-Footnote-283119
-Node: Executing the marks83315
-Node: Trashing messages83761
-Node: Leaving the headers buffer84385
-Node: Built-in marking functions84818
-Node: Custom mark functions85374
-Node: Adding a new kind of mark87723
-Node: Contexts90923
-Node: What are contexts92090
-Node: Context policies93742
-Node: Contexts and special folders95215
-Node: Contexts example96611
-Node: Dynamic folders101484
-Node: Smart refiling102751
-Ref: Smart refiling-Footnote-1105284
-Node: Other dynamic folders105329
-Node: Actions106597
-Node: Defining actions107492
-Ref: Defining actions-Footnote-1108768
-Ref: Defining actions-Footnote-2108944
-Node: Headers view actions109131
-Node: Message view actions110061
-Node: Attachment actions110895
-Node: Example actions111680
-Node: Extending mu4e112071
-Node: Extension points112602
-Node: Available functions114394
-Node: Message functions115305
-Node: Contact functions118421
-Node: Utility functions119659
-Node: Old message view120881
-Ref: Old message view-Footnote-1122302
-Node: OMSGV Overview122352
-Node: OMSGV Keybindings124598
-Node: Attachments127459
-Ref: Attachments-Footnote-1128897
-Ref: Attachments-Footnote-2128960
-Node: Viewing images inline129068
-Ref: Viewing images inline-Footnote-1129896
-Node: Displaying rich-text messages129934
-Ref: Html2text functions132592
-Ref: Privacy aspects133347
-Ref: Displaying rich-text messages-Footnote-1133686
-Ref: Displaying rich-text messages-Footnote-2133851
-Node: OMSGV Crypto133893
-Ref: Decryption134982
-Ref: Verifying signatures135699
-Node: OMSGV Custom headers136704
-Node: OMSGV Actions137250
-Node: Other tools139113
-Node: Emacs default139849
-Node: Org-mode links140477
-Node: Org-contacts143205
-Ref: Org-contacts-Footnote-1144286
-Node: BBDB144360
-Ref: BBDB-Footnote-1145730
-Node: iCalendar145783
-Node: Sauron149031
-Ref: Sauron-Footnote-1150569
-Node: Speedbar150739
-Node: Dired151626
-Node: Hydra152142
-Ref: Hydra-Footnote-1153244
-Node: iCalendar Integration153287
-Node: Example configs154283
-Node: Minimal configuration154826
-Node: Longer configuration156037
-Node: Gmail configuration158733
-Node: CONF Other settings164112
-Node: FAQ164657
-Node: General165177
-Ref: mu-mu4e-differ165370
-Node: Retrieving mail170081
-Ref: Retrieving mail-Footnote-1173747
-Node: Reading messages173780
-Node: Writing messages179376
-Node: Known issues187930
-Node: Tips and Tricks189064
-Node: Fancy characters189451
-Node: Refiling messages190467
-Node: Saving outgoing messages194065
-Node: Confirmation before sending196599
-Node: How it works197203
-Node: High-level overview197704
-Node: mu server199204
-Node: Reading from the server200229
-Node: The message s-expression202585
-Ref: The message s-expression-Footnote-1205810
-Node: Debugging205997
-Node: GNU Free Documentation License207036
+Node: Sending mail24326
+Node: Running mu4e26549
+Node: Main view27596
+Node: MV Overview28125
+Node: Basic actions29283
+Node: MV Bookmarks30136
+Node: Miscellaneous31509
+Node: Headers view32384
+Node: HV Overview33144
+Ref: HV Overview-Footnote-137466
+Ref: HV Overview-Footnote-237557
+Ref: HV Overview-Footnote-337664
+Node: Keybindings37764
+Node: HV Marking39814
+Node: Sorting and threading40977
+Ref: Sorting and threading-Footnote-142553
+Node: HV Custom headers42644
+Node: HV Actions44827
+Node: Split view45537
+Node: Message view46973
+Node: MSGV Overview47809
+Node: MSGV Keybindings49008
+Node: MSGV Rich-text and images51552
+Node: MSGV Custom headers54143
+Node: MSGV Actions54679
+Node: Editor view55436
+Node: EV Overview56235
+Node: EV Keybindings56650
+Node: Address autocompletion57306
+Ref: Address autocompletion-Footnote-159408
+Node: Compose hooks59453
+Node: Signing and encrypting62756
+Node: Queuing mail63770
+Node: Message signatures65064
+Node: Other settings65698
+Node: Searching66430
+Node: Queries67395
+Ref: Queries-Footnote-170504
+Node: Bookmarks70618
+Ref: Bookmarks-Footnote-174777
+Node: Maildir searches74820
+Node: Other search functionality77323
+Ref: Including related messages79227
+Ref: Skipping duplicates79846
+Node: Marking80435
+Node: Marking messages81270
+Node: What to mark for82062
+Ref: What to mark for-Footnote-183639
+Ref: What to mark for-Footnote-283736
+Node: Executing the marks83932
+Node: Trashing messages84378
+Node: Leaving the headers buffer85002
+Node: Built-in marking functions85435
+Node: Custom mark functions85991
+Node: Adding a new kind of mark88340
+Node: Contexts91540
+Node: What are contexts92707
+Node: Context policies94359
+Node: Contexts and special folders95832
+Node: Contexts example97228
+Node: Dynamic folders102101
+Node: Smart refiling103368
+Ref: Smart refiling-Footnote-1105901
+Node: Other dynamic folders105946
+Node: Actions107214
+Node: Defining actions108109
+Ref: Defining actions-Footnote-1109385
+Ref: Defining actions-Footnote-2109561
+Node: Headers view actions109748
+Node: Message view actions110678
+Node: Attachment actions111512
+Node: Example actions112297
+Node: Extending mu4e112688
+Node: Extension points113219
+Node: Available functions115011
+Node: Message functions115922
+Node: Contact functions119038
+Node: Utility functions120276
+Node: Old message view121498
+Ref: Old message view-Footnote-1122919
+Node: OMSGV Overview122969
+Node: OMSGV Keybindings125215
+Node: Attachments128076
+Ref: Attachments-Footnote-1129514
+Ref: Attachments-Footnote-2129577
+Node: Viewing images inline129685
+Ref: Viewing images inline-Footnote-1130513
+Node: Displaying rich-text messages130551
+Ref: Html2text functions133209
+Ref: Privacy aspects133964
+Ref: Displaying rich-text messages-Footnote-1134303
+Ref: Displaying rich-text messages-Footnote-2134468
+Node: OMSGV Crypto134510
+Ref: Decryption135599
+Ref: Verifying signatures136316
+Node: OMSGV Custom headers137321
+Node: OMSGV Actions137867
+Node: Other tools139730
+Node: Emacs default140466
+Node: Org-mode links141094
+Node: Org-contacts143899
+Ref: Org-contacts-Footnote-1144980
+Node: BBDB145054
+Ref: BBDB-Footnote-1146424
+Node: iCalendar146477
+Node: Sauron149725
+Ref: Sauron-Footnote-1151263
+Node: Speedbar151433
+Node: Dired152320
+Node: Hydra152836
+Ref: Hydra-Footnote-1153938
+Node: iCalendar Integration153981
+Node: Example configs154977
+Node: Minimal configuration155520
+Node: Longer configuration156731
+Node: Gmail configuration159427
+Node: CONF Other settings164806
+Node: FAQ165351
+Node: General165871
+Ref: mu-mu4e-differ166064
+Node: Retrieving mail170775
+Ref: Retrieving mail-Footnote-1174441
+Node: Reading messages174474
+Node: Writing messages180070
+Node: Known issues188624
+Node: Tips and Tricks189758
+Node: Fancy characters190145
+Node: Refiling messages191161
+Node: Saving outgoing messages194759
+Node: Confirmation before sending197293
+Node: How it works197897
+Node: High-level overview198398
+Node: mu server199898
+Node: Reading from the server200923
+Node: The message s-expression203279
+Ref: The message s-expression-Footnote-1206504
+Node: Debugging206691
+Node: GNU Free Documentation License207730
 
 End Tag Table
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mu-1.6.1/mu4e/mu4e.texi new/mu-1.6.3/mu4e/mu4e.texi
--- old/mu-1.6.1/mu4e/mu4e.texi 2021-07-17 14:01:23.000000000 +0200
+++ new/mu-1.6.3/mu4e/mu4e.texi 2021-08-12 12:08:22.000000000 +0200
@@ -611,8 +611,12 @@
 @end lisp
 
 In many cases, the mentioned thoroughness might not be needed, and
-these settings give a very significant speed-up. Note that you can of
-course occasionally run a thorough indexing round.
+these settings give a very significant speed-up. If it does not work
+for you (e.g., @t{mu4e} fails to find some new messages), simply leave
+at the default.
+
+Note that you can occasionally run a thorough indexing round using
+@code{mu4e-update-index-nonlazy}.
 
 For further details, please refer to the @t{mu-index} manpage; in
 particular, see @t{.noindex} and @t{.noupdate} which can help reducing
@@ -1370,10 +1374,17 @@
 external images in HTML are not retrieved from external URLs because
 they can be used to track you.
 
+Apart from that, you can also control whether to load remote images;
+since loading remote images is often used for privacy violations, by
+default this is not allowed.
+
 You can specify what URLs to block by setting
-@code{gnus-blocked-images} to a regular exporession or to a function
-that will receive the message as an argument.  For example, to enable
-images in Github notifications, do the following:
+@code{gnus-blocked-images} to a regular expression or to a function
+that will receive a single parameter which is not meaningful for
+@t{mu4e}.
+
+For example, to enable images in Github notifications, you could use
+the following:
 
 @lisp
 (setq gnus-blocked-images
@@ -1383,6 +1394,11 @@
         nil ".")))
 @end lisp
 
+@code{mu4e} inherits the default @t{gnus-blocked-images} from Gnus and
+ensures that it works with @t{mu4e} too. However, mu4e is not Gnus, so
+if you have Gnus-specific settings for @t{gnus-blocked-images}, you
+should verify that they have the desired effect in @code{mu4e} as
+well.
 
 @node MSGV Custom headers
 @section Custom headers
@@ -3532,7 +3548,8 @@
 you are in @ref{Message view}. When you are in @ref{Headers view},
 @kbd{M-x org-store-link} links to the @emph{query} if
 @code{mu4e-org-link-query-in-headers-mode} is non-@code{nil}, and to
-the particular message otherwise (which is the default).
+the particular message otherwise (which is the default). You can
+customize the link description using @code{mu4e-org-link-desc-func}.
 
 You can insert this link later with @kbd{M-x org-insert-link}. From
 @t{org-mode}, you can go to the query or message the link points to
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mu-1.6.1/mu4e/stamp-vti new/mu-1.6.3/mu4e/stamp-vti
--- old/mu-1.6.1/mu4e/stamp-vti 2021-07-31 01:06:33.000000000 +0200
+++ new/mu-1.6.3/mu4e/stamp-vti 2021-08-12 18:08:06.000000000 +0200
@@ -1,4 +1,4 @@
-@set UPDATED 17 July 2021
-@set UPDATED-MONTH July 2021
-@set EDITION 1.6.1
-@set VERSION 1.6.1
+@set UPDATED 12 August 2021
+@set UPDATED-MONTH August 2021
+@set EDITION 1.6.3
+@set VERSION 1.6.3
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mu-1.6.1/mu4e/version.texi 
new/mu-1.6.3/mu4e/version.texi
--- old/mu-1.6.1/mu4e/version.texi      2021-07-29 08:56:34.000000000 +0200
+++ new/mu-1.6.3/mu4e/version.texi      2021-08-12 18:08:06.000000000 +0200
@@ -1,4 +1,4 @@
-@set UPDATED 17 July 2021
-@set UPDATED-MONTH July 2021
-@set EDITION 1.6.1
-@set VERSION 1.6.1
+@set UPDATED 12 August 2021
+@set UPDATED-MONTH August 2021
+@set EDITION 1.6.3
+@set VERSION 1.6.3

Reply via email to