[mutt] 01/02: New upstream NeoMutt release, 2016-08-08.

Faidon Liambotis paravoid at moszumanska.debian.org
Mon Aug 8 11:51:17 UTC 2016


This is an automated email from the git hooks/post-receive script.

paravoid pushed a commit to branch master
in repository mutt.

commit 77cf5a5eeb56dbeec50e7f44df7c0285f60e0ed1
Author: Faidon Liambotis <paravoid at debian.org>
Date:   Mon Aug 8 14:46:18 2016 +0300

    New upstream NeoMutt release, 2016-08-08.
    
    * New upstream NeoMutt release, 2016-08-08.
      - Drop patch features/809802_timeout_hook.patch, merged upstream.
      - Drop patch debian/patches/features/multiple-fcc.patch, merged upstream.
      - Drop patch imap-sidebar-update-bug.patch, was an upstream backport.
      - Refresh patch neomutt-devel/sensible-browser.patch.
---
 debian/changelog                                   |   10 +
 debian/patches/features/809802_timeout_hook.patch  |  109 -
 debian/patches/features/multiple-fcc.patch         |   79 -
 ...omutt-20160723.patch => neomutt-20160808.patch} | 2293 +++++++++++++++-----
 .../neomutt-devel/imap-sidebar-update-bug.patch    |   46 -
 .../patches/neomutt-devel/sensible-browser.patch   |   10 +-
 debian/patches/series                              |    5 +-
 7 files changed, 1722 insertions(+), 830 deletions(-)

diff --git a/debian/changelog b/debian/changelog
index febef1b..28553d5 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,13 @@
+mutt (1.6.2-2) UNRELEASED; urgency=medium
+
+  * New upstream NeoMutt release, 2016-08-08.
+    - Drop patch features/809802_timeout_hook.patch, merged upstream.
+    - Drop patch debian/patches/features/multiple-fcc.patch, merged upstream.
+    - Drop patch imap-sidebar-update-bug.patch, was an upstream backport.
+    - Refresh patch neomutt-devel/sensible-browser.patch.
+
+ -- Faidon Liambotis <paravoid at debian.org>  Mon, 08 Aug 2016 14:43:51 +0300
+
 mutt (1.6.2-1) unstable; urgency=medium
 
   * New upstream release.
diff --git a/debian/patches/features/809802_timeout_hook.patch b/debian/patches/features/809802_timeout_hook.patch
deleted file mode 100644
index d9672e6..0000000
--- a/debian/patches/features/809802_timeout_hook.patch
+++ /dev/null
@@ -1,109 +0,0 @@
-From: "Matteo F. Vescovi" <mfv at debian.org>
-Date: Sat, 9 Jan 2016 14:47:53 +0100
-Subject: 809802_timeout_hook
-
-Patch provided by gustavo panizzo <gfa at zumbi.com.ar>
----
- curs_main.c |  4 +++-
- hook.c      | 29 ++++++++++++++++++++++++++++-
- init.h      |  1 +
- mutt.h      |  7 ++++---
- protos.h    |  1 +
- 5 files changed, 37 insertions(+), 5 deletions(-)
-
---- a/curs_main.c
-+++ b/curs_main.c
-@@ -949,8 +949,10 @@ int mutt_index_menu (void)
- 
-       dprint(4, (debugfile, "mutt_index_menu[%d]: Got op %d\n", __LINE__, op));
- 
--      if (op == -1)
-+      if (op == -1) {
-+        mutt_timeout_hook(".");
- 	continue; /* either user abort or timeout */
-+      }
- 
-       mutt_curs_set (1);
- 
---- a/hook.c
-+++ b/hook.c
-@@ -154,7 +154,7 @@ int mutt_parse_hook (BUFFER *buf, BUFFER
- 	ptr->rx.not == not &&
- 	!mutt_strcmp (pattern.data, ptr->rx.pattern))
-     {
--      if (data & (M_FOLDERHOOK | M_SENDHOOK | M_SEND2HOOK | M_MESSAGEHOOK | M_ACCOUNTHOOK | M_REPLYHOOK | M_CRYPTHOOK))
-+      if (data & (M_FOLDERHOOK | M_SENDHOOK | M_SEND2HOOK | M_MESSAGEHOOK | M_ACCOUNTHOOK | M_REPLYHOOK | M_CRYPTHOOK | M_TIMEOUTHOOK))
-       {
- 	/* these hooks allow multiple commands with the same
- 	 * pattern, so if we've already seen this pattern/command pair, just
-@@ -506,6 +506,33 @@ LIST *mutt_crypt_hook (ADDRESS *adr)
-   return _mutt_list_hook (adr->mailbox, M_CRYPTHOOK);
- }
- 
-+
-+void mutt_timeout_hook (const char *chs)
-+{
-+  HOOK* hook;
-+  BUFFER token;
-+  BUFFER err;
-+  char buf[STRING];
-+
-+  err.data = buf;
-+  err.dsize = sizeof (buf);
-+  memset (&token, 0, sizeof (token));
-+
-+  for (hook = Hooks; hook; hook = hook->next)
-+  {
-+    if (! (hook->command && (hook->type & M_TIMEOUTHOOK)))
-+      continue;
-+
-+    if (mutt_parse_rc_line (hook->command, &token, &err) == -1)
-+    {
-+      FREE (&token.data);
-+      mutt_error ("%s", err.data);
-+      mutt_sleep (1);
-+
-+      return;
-+    }
-+  }
-+}
- #ifdef USE_SOCKET
- void mutt_account_hook (const char* url)
- {
---- a/init.h
-+++ b/init.h
-@@ -4315,6 +4315,7 @@ const struct command_t Commands[] = {
-   { "spam",		parse_spam_list,	M_SPAM },
-   { "nospam",		parse_spam_list,	M_NOSPAM },
-   { "subscribe",	parse_subscribe,	0 },
-+  { "timeout-hook",	mutt_parse_hook,	M_TIMEOUTHOOK },
-   { "toggle",		parse_set,		M_SET_INV },
-   { "unalias",		parse_unalias,		0 },
-   { "unalternative_order",parse_unlist,		UL &AlternativeOrderList },
---- a/mutt.h
-+++ b/mutt.h
-@@ -159,10 +159,11 @@ typedef enum
- #define M_ACCOUNTHOOK	(1<<9)
- #define M_REPLYHOOK	(1<<10)
- #define M_SEND2HOOK     (1<<11)
-+#define M_TIMEOUTHOOK	(1<<12)
- #ifdef USE_COMPRESSED
--#define M_OPENHOOK	(1<<12)
--#define M_APPENDHOOK	(1<<13)
--#define M_CLOSEHOOK	(1<<14)
-+#define M_OPENHOOK	(1<<13)
-+#define M_APPENDHOOK	(1<<14)
-+#define M_CLOSEHOOK	(1<<15)
- #endif
- 
- /* tree characters for linearize_tree and print_enriched_string */
---- a/protos.h
-+++ b/protos.h
-@@ -154,6 +154,7 @@ const char *mutt_get_name (ADDRESS *);
- char *mutt_get_parameter (const char *, PARAMETER *);
- LIST *mutt_crypt_hook (ADDRESS *);
- char *mutt_make_date (char *, size_t);
-+void mutt_timeout_hook (const char *);
- 
- const char *mutt_make_version (void);
- 
diff --git a/debian/patches/features/multiple-fcc.patch b/debian/patches/features/multiple-fcc.patch
deleted file mode 100644
index bdadb5c..0000000
--- a/debian/patches/features/multiple-fcc.patch
+++ /dev/null
@@ -1,79 +0,0 @@
-From: Antonio Radici <antonio at debian.org>
-Date: Tue, 4 Mar 2014 15:40:45 +0100
-Subject: multiple-fcc
-
-A patch that allows multiple FCC separated by commas,
-written by Omen Wild.
-
-Original website: http://www.mandarb.com/mutt/
-Bug asking for the inclusion: #586454
-
-Changed by Richard Russon <rich at flatcap.org> to apply on top of neomutt.
----
- protos.h  |  1 +
- send.c    |  2 +-
- sendlib.c | 32 ++++++++++++++++++++++++++++++++
- 3 files changed, 34 insertions(+), 1 deletion(-)
-
---- a/protos.h
-+++ b/protos.h
-@@ -385,6 +385,7 @@ int mutt_user_is_recipient (HEADER *);
- void mutt_update_num_postponed (void);
- int mutt_wait_filter (pid_t);
- int mutt_which_case (const char *);
-+int mutt_write_multiple_fcc (const char *path, HEADER *hdr, const char *msgid, int, char *, char **);
- int mutt_write_fcc (const char *path, HEADER *hdr, const char *msgid, int, char *, char **);
- int mutt_write_mime_body (BODY *, FILE *);
- int mutt_write_mime_header (BODY *, FILE *);
---- a/send.c
-+++ b/send.c
-@@ -1975,7 +1975,7 @@ full_fcc:
-        * message was first postponed.
-        */
-       msg->received = time (NULL);
--      if (mutt_write_fcc (fcc, msg, NULL, 0, NULL, &finalpath) == -1)
-+      if (mutt_write_multiple_fcc (fcc, msg, NULL, 0, NULL, &finalpath) == -1)
-       {
- 	/*
- 	 * Error writing FCC, we should abort sending.
---- a/sendlib.c
-+++ b/sendlib.c
-@@ -2756,6 +2756,38 @@ static void set_noconv_flags (BODY *b, s
-   }
- }
- 
-+/* Handle a Fcc with multiple, comma separated entries. */
-+int mutt_write_multiple_fcc (const char *path, HEADER *hdr, const char *msgid,
-+	int post, char *fcc, char **finalpath)
-+{
-+   char fcc_tok[_POSIX_PATH_MAX];
-+   char fcc_expanded[_POSIX_PATH_MAX];
-+   char *tok = NULL;
-+   int status;
-+
-+  strfcpy(fcc_tok, path, _POSIX_PATH_MAX);
-+
-+   tok = strtok(fcc_tok, ",");
-+   dprint(1, (debugfile, "Fcc: initial mailbox = '%s'\n", tok));
-+   /* mutt_expand_path already called above for the first token */
-+   if((status = mutt_write_fcc (tok, hdr, NULL, 0, NULL, finalpath)) != 0)
-+	  return status;
-+
-+   while((tok = strtok(NULL, ",")) != NULL) {
-+	  if(*tok) {
-+		 /* Only call mutt_expand_path iff tok has some data */
-+		 dprint(1, (debugfile, "Fcc: additional mailbox token = '%s'\n", tok));
-+		 strfcpy(fcc_expanded, tok, sizeof(fcc_expanded));
-+		 mutt_expand_path(fcc_expanded, sizeof(fcc_expanded));
-+		 dprint(1, (debugfile, "     Additional mailbox expanded = '%s'\n", fcc_expanded));
-+		 if((status = mutt_write_fcc (fcc_expanded, hdr, NULL, 0, NULL, finalpath)) != 0)
-+			return status;
-+	  }
-+   }
-+
-+   return 0;
-+}
-+
- int mutt_write_fcc (const char *path, HEADER *hdr, const char *msgid,
- 		    int post, char *fcc, char **finalpath)
- {
diff --git a/debian/patches/neomutt-20160723.patch b/debian/patches/neomutt-20160808.patch
similarity index 94%
rename from debian/patches/neomutt-20160723.patch
rename to debian/patches/neomutt-20160808.patch
index 4547cad..6898c2a 100644
--- a/debian/patches/neomutt-20160723.patch
+++ b/debian/patches/neomutt-20160808.patch
@@ -1,9 +1,36 @@
 diff --git a/ChangeLog.neomutt b/ChangeLog.neomutt
 new file mode 100644
-index 0000000..d648ab8
+index 0000000..b2b16f6
 --- /dev/null
 +++ b/ChangeLog.neomutt
-@@ -0,0 +1,135 @@
+@@ -0,0 +1,162 @@
++2016-08-08  Richard Russon  <rich at flatcap.org>
++* New Features
++  - Timeout Hook - Run a command periodically
++  - Multiple fcc - Save multiple copies of outgoing mail
++* Contrib
++  - Keybase Integration
++    Joshua Jordi (JakkinStewart)
++* Devel
++  - Attached - Prevent missing attachments
++    Darshit Shah (darnir)
++  - Virtual Unmailboxes - Remove unwanted virtual mailboxes
++    Richard Russon (flatcap)
++* Bug Fixes
++  - Sidebar's inbox occasionally shows zero/wrong value
++  - Fix crash opening a second compressed mailbox
++* Config
++  - Look for /etc/NeoMuttrc and ~/.neomuttrc
++* Docs
++  - Fix broken links, typos
++  - Update project link
++  - Fix version string in the manual
++* Build
++  - Add option to disable fmemopen
++  - Install all the READMEs and contribs
++  - Big overhaul of the build
++    Darshit Shah (darnir)
++
 +2016-07-23  Richard Russon  <rich at flatcap.org>
 +* New Motto: "Teaching an Old Dog New Tricks"
 +  - Thanks to Alok Singh
@@ -561,402 +588,11 @@ index 0000000..1452e86
 +
 +* Fri Jan 28 2000 Vsevolod Volkov <vvv at mutt.kiev.ua>
 +- update to 1.1.2
-diff --git a/GPL b/GPL
-index b6f92f3..0daa041 100644
---- a/GPL
-+++ b/GPL
-@@ -1,73 +1,74 @@
--		    GNU GENERAL PUBLIC LICENSE
--		       Version 2, June 1991
-+GNU General Public License
-+==========================
- 
-- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
--                 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
-- Everyone is permitted to copy and distribute verbatim copies
-- of this license document, but changing it is not allowed.
-+_Version 2, June 1991_  
-+_Copyright © 1989, 1991 Free Software Foundation, Inc.,_  
-+_51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA_
- 
--			    Preamble
-+Everyone is permitted to copy and distribute verbatim copies
-+of this license document, but changing it is not allowed.
- 
--  The licenses for most software are designed to take away your
-+### Preamble
-+
-+The licenses for most software are designed to take away your
- freedom to share and change it.  By contrast, the GNU General Public
- License is intended to guarantee your freedom to share and change free
- software--to make sure the software is free for all its users.  This
- General Public License applies to most of the Free Software
- Foundation's software and to any other program whose authors commit to
- using it.  (Some other Free Software Foundation software is covered by
--the GNU Library General Public License instead.)  You can apply it to
-+the GNU Lesser General Public License instead.)  You can apply it to
- your programs, too.
- 
--  When we speak of free software, we are referring to freedom, not
-+When we speak of free software, we are referring to freedom, not
- price.  Our General Public Licenses are designed to make sure that you
- have the freedom to distribute copies of free software (and charge for
- this service if you wish), that you receive source code or can get it
- if you want it, that you can change the software or use pieces of it
- in new free programs; and that you know you can do these things.
- 
--  To protect your rights, we need to make restrictions that forbid
-+To protect your rights, we need to make restrictions that forbid
- anyone to deny you these rights or to ask you to surrender the rights.
- These restrictions translate to certain responsibilities for you if you
- distribute copies of the software, or if you modify it.
- 
--  For example, if you distribute copies of such a program, whether
-+For example, if you distribute copies of such a program, whether
- gratis or for a fee, you must give the recipients all the rights that
- you have.  You must make sure that they, too, receive or can get the
- source code.  And you must show them these terms so they know their
- rights.
- 
--  We protect your rights with two steps: (1) copyright the software, and
--(2) offer you this license which gives you legal permission to copy,
-+We protect your rights with two steps: **(1)** copyright the software, and
-+**(2)** offer you this license which gives you legal permission to copy,
- distribute and/or modify the software.
- 
--  Also, for each author's protection and ours, we want to make certain
-+Also, for each author's protection and ours, we want to make certain
- that everyone understands that there is no warranty for this free
- software.  If the software is modified by someone else and passed on, we
- want its recipients to know that what they have is not the original, so
- that any problems introduced by others will not reflect on the original
- authors' reputations.
- 
--  Finally, any free program is threatened constantly by software
-+Finally, any free program is threatened constantly by software
- patents.  We wish to avoid the danger that redistributors of a free
- program will individually obtain patent licenses, in effect making the
- program proprietary.  To prevent this, we have made it clear that any
- patent must be licensed for everyone's free use or not licensed at all.
- 
--  The precise terms and conditions for copying, distribution and
-+The precise terms and conditions for copying, distribution and
- modification follow.
--

--		    GNU GENERAL PUBLIC LICENSE
--   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
- 
--  0. This License applies to any program or other work which contains
-+### TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-+
-+**0.** This License applies to any program or other work which contains
- a notice placed by the copyright holder saying it may be distributed
--under the terms of this General Public License.  The "Program", below,
--refers to any such program or work, and a "work based on the Program"
-+under the terms of this General Public License.  The “Program”, below,
-+refers to any such program or work, and a “work based on the Program”
- means either the Program or any derivative work under copyright law:
- that is to say, a work containing the Program or a portion of it,
- either verbatim or with modifications and/or translated into another
- language.  (Hereinafter, translation is included without limitation in
--the term "modification".)  Each licensee is addressed as "you".
-+the term “modification”.)  Each licensee is addressed as “you”.
- 
- Activities other than copying, distribution and modification are not
- covered by this License; they are outside its scope.  The act of
-@@ -76,7 +77,7 @@ is covered only if its contents constitute a work based on the
- Program (independent of having been made by running the Program).
- Whether that is true depends on what the Program does.
- 
--  1. You may copy and distribute verbatim copies of the Program's
-+**1.** You may copy and distribute verbatim copies of the Program's
- source code as you receive it, in any medium, provided that you
- conspicuously and appropriately publish on each copy an appropriate
- copyright notice and disclaimer of warranty; keep intact all the
-@@ -87,30 +88,28 @@ along with the Program.
- You may charge a fee for the physical act of transferring a copy, and
- you may at your option offer warranty protection in exchange for a fee.
- 
--  2. You may modify your copy or copies of the Program or any portion
-+**2.** You may modify your copy or copies of the Program or any portion
- of it, thus forming a work based on the Program, and copy and
- distribute such modifications or work under the terms of Section 1
- above, provided that you also meet all of these conditions:
- 
--    a) You must cause the modified files to carry prominent notices
--    stating that you changed the files and the date of any change.
--
--    b) You must cause any work that you distribute or publish, that in
--    whole or in part contains or is derived from the Program or any
--    part thereof, to be licensed as a whole at no charge to all third
--    parties under the terms of this License.
--
--    c) If the modified program normally reads commands interactively
--    when run, you must cause it, when started running for such
--    interactive use in the most ordinary way, to print or display an
--    announcement including an appropriate copyright notice and a
--    notice that there is no warranty (or else, saying that you provide
--    a warranty) and that users may redistribute the program under
--    these conditions, and telling the user how to view a copy of this
--    License.  (Exception: if the Program itself is interactive but
--    does not normally print such an announcement, your work based on
--    the Program is not required to print an announcement.)
--

-+* **a)** You must cause the modified files to carry prominent notices
-+stating that you changed the files and the date of any change.
-+* **b)** You must cause any work that you distribute or publish, that in
-+whole or in part contains or is derived from the Program or any
-+part thereof, to be licensed as a whole at no charge to all third
-+parties under the terms of this License.
-+* **c)** If the modified program normally reads commands interactively
-+when run, you must cause it, when started running for such
-+interactive use in the most ordinary way, to print or display an
-+announcement including an appropriate copyright notice and a
-+notice that there is no warranty (or else, saying that you provide
-+a warranty) and that users may redistribute the program under
-+these conditions, and telling the user how to view a copy of this
-+License.  (Exception: if the Program itself is interactive but
-+does not normally print such an announcement, your work based on
-+the Program is not required to print an announcement.)
-+
- These requirements apply to the modified work as a whole.  If
- identifiable sections of that work are not derived from the Program,
- and can be reasonably considered independent and separate works in
-@@ -131,26 +130,24 @@ with the Program (or with a work based on the Program) on a volume of
- a storage or distribution medium does not bring the other work under
- the scope of this License.
- 
--  3. You may copy and distribute the Program (or a work based on it,
-+**3.** You may copy and distribute the Program (or a work based on it,
- under Section 2) in object code or executable form under the terms of
- Sections 1 and 2 above provided that you also do one of the following:
- 
--    a) Accompany it with the complete corresponding machine-readable
--    source code, which must be distributed under the terms of Sections
--    1 and 2 above on a medium customarily used for software interchange; or,
--
--    b) Accompany it with a written offer, valid for at least three
--    years, to give any third party, for a charge no more than your
--    cost of physically performing source distribution, a complete
--    machine-readable copy of the corresponding source code, to be
--    distributed under the terms of Sections 1 and 2 above on a medium
--    customarily used for software interchange; or,
--
--    c) Accompany it with the information you received as to the offer
--    to distribute corresponding source code.  (This alternative is
--    allowed only for noncommercial distribution and only if you
--    received the program in object code or executable form with such
--    an offer, in accord with Subsection b above.)
-+* **a)** Accompany it with the complete corresponding machine-readable
-+source code, which must be distributed under the terms of Sections
-+1 and 2 above on a medium customarily used for software interchange; or,
-+* **b)** Accompany it with a written offer, valid for at least three
-+years, to give any third party, for a charge no more than your
-+cost of physically performing source distribution, a complete
-+machine-readable copy of the corresponding source code, to be
-+distributed under the terms of Sections 1 and 2 above on a medium
-+customarily used for software interchange; or,
-+* **c)** Accompany it with the information you received as to the offer
-+to distribute corresponding source code.  (This alternative is
-+allowed only for noncommercial distribution and only if you
-+received the program in object code or executable form with such
-+an offer, in accord with Subsection b above.)
- 
- The source code for a work means the preferred form of the work for
- making modifications to it.  For an executable work, complete source
-@@ -168,8 +165,8 @@ access to copy from a designated place, then offering equivalent
- access to copy the source code from the same place counts as
- distribution of the source code, even though third parties are not
- compelled to copy the source along with the object code.
--

--  4. You may not copy, modify, sublicense, or distribute the Program
-+
-+**4.** You may not copy, modify, sublicense, or distribute the Program
- except as expressly provided under this License.  Any attempt
- otherwise to copy, modify, sublicense or distribute the Program is
- void, and will automatically terminate your rights under this License.
-@@ -177,7 +174,7 @@ However, parties who have received copies, or rights, from you under
- this License will not have their licenses terminated so long as such
- parties remain in full compliance.
- 
--  5. You are not required to accept this License, since you have not
-+**5.** You are not required to accept this License, since you have not
- signed it.  However, nothing else grants you permission to modify or
- distribute the Program or its derivative works.  These actions are
- prohibited by law if you do not accept this License.  Therefore, by
-@@ -186,7 +183,7 @@ Program), you indicate your acceptance of this License to do so, and
- all its terms and conditions for copying, distributing or modifying
- the Program or works based on it.
- 
--  6. Each time you redistribute the Program (or any work based on the
-+**6.** Each time you redistribute the Program (or any work based on the
- Program), the recipient automatically receives a license from the
- original licensor to copy, distribute or modify the Program subject to
- these terms and conditions.  You may not impose any further
-@@ -194,7 +191,7 @@ restrictions on the recipients' exercise of the rights granted herein.
- You are not responsible for enforcing compliance by third parties to
- this License.
- 
--  7. If, as a consequence of a court judgment or allegation of patent
-+**7.** If, as a consequence of a court judgment or allegation of patent
- infringement or for any other reason (not limited to patent issues),
- conditions are imposed on you (whether by court order, agreement or
- otherwise) that contradict the conditions of this License, they do not
-@@ -225,8 +222,8 @@ impose that choice.
- 
- This section is intended to make thoroughly clear what is believed to
- be a consequence of the rest of this License.
--

--  8. If the distribution and/or use of the Program is restricted in
-+
-+**8.** If the distribution and/or use of the Program is restricted in
- certain countries either by patents or by copyrighted interfaces, the
- original copyright holder who places the Program under this License
- may add an explicit geographical distribution limitation excluding
-@@ -234,20 +231,20 @@ those countries, so that distribution is permitted only in or among
- countries not thus excluded.  In such case, this License incorporates
- the limitation as if written in the body of this License.
- 
--  9. The Free Software Foundation may publish revised and/or new versions
-+**9.** The Free Software Foundation may publish revised and/or new versions
- of the General Public License from time to time.  Such new versions will
- be similar in spirit to the present version, but may differ in detail to
- address new problems or concerns.
- 
- Each version is given a distinguishing version number.  If the Program
--specifies a version number of this License which applies to it and "any
--later version", you have the option of following the terms and conditions
-+specifies a version number of this License which applies to it and “any
-+later version”, you have the option of following the terms and conditions
- either of that version or of any later version published by the Free
- Software Foundation.  If the Program does not specify a version number of
- this License, you may choose any version ever published by the Free Software
- Foundation.
- 
--  10. If you wish to incorporate parts of the Program into other free
-+**10.** If you wish to incorporate parts of the Program into other free
- programs whose distribution conditions are different, write to the author
- to ask for permission.  For software which is copyrighted by the Free
- Software Foundation, write to the Free Software Foundation; we sometimes
-@@ -255,19 +252,19 @@ make exceptions for this.  Our decision will be guided by the two goals
- of preserving the free status of all derivatives of our free software and
- of promoting the sharing and reuse of software generally.
- 
--			    NO WARRANTY
-+### NO WARRANTY
- 
--  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-+**11.** BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
- FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
- OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
--PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-+PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
- OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
- TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
- PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
- REPAIR OR CORRECTION.
- 
--  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-+**12.** IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
- WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
- REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
- INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-@@ -277,36 +274,35 @@ YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
- PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
- POSSIBILITY OF SUCH DAMAGES.
- 
--		     END OF TERMS AND CONDITIONS
--

--	    How to Apply These Terms to Your New Programs
-+END OF TERMS AND CONDITIONS
- 
--  If you develop a new program, and you want it to be of the greatest
-+### How to Apply These Terms to Your New Programs
-+
-+If you develop a new program, and you want it to be of the greatest
- possible use to the public, the best way to achieve this is to make it
- free software which everyone can redistribute and change under these terms.
- 
--  To do so, attach the following notices to the program.  It is safest
-+To do so, attach the following notices to the program.  It is safest
- to attach them to the start of each source file to most effectively
- convey the exclusion of warranty; and each file should have at least
--the "copyright" line and a pointer to where the full notice is found.
-+the “copyright” line and a pointer to where the full notice is found.
- 
-     <one line to give the program's name and a brief idea of what it does.>
-     Copyright (C) <year>  <name of author>
--
-+    
-     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 Free Software Foundation; either version 2 of the License, or
-     (at your option) any later version.
--
-+    
-     This program is distributed in the hope that it will be useful,
-     but WITHOUT ANY WARRANTY; without even the implied warranty of
-     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-     GNU General Public License for more details.
--
--    You should have received a copy of the GNU General Public License
--    along with this program; if not, write to the Free Software
--    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
--
-+    
-+    You should have received a copy of the GNU General Public License along
-+    with this program; if not, write to the Free Software Foundation, Inc.,
-+    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- 
- Also add information on how to contact you by electronic and paper mail.
- 
-@@ -318,23 +314,23 @@ when it starts in an interactive mode:
-     This is free software, and you are welcome to redistribute it
-     under certain conditions; type `show c' for details.
- 
--The hypothetical commands `show w' and `show c' should show the appropriate
-+The hypothetical commands `show w` and `show c` should show the appropriate
- parts of the General Public License.  Of course, the commands you use may
--be called something other than `show w' and `show c'; they could even be
-+be called something other than `show w` and `show c`; they could even be
- mouse-clicks or menu items--whatever suits your program.
- 
- You should also get your employer (if you work as a programmer) or your
--school, if any, to sign a "copyright disclaimer" for the program, if
-+school, if any, to sign a “copyright disclaimer” for the program, if
- necessary.  Here is a sample; alter the names:
- 
--  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
--  `Gnomovision' (which makes passes at compilers) written by James Hacker.
--
--  <signature of Ty Coon>, 1 April 1989
--  Ty Coon, President of Vice
-+    Yoyodyne, Inc., hereby disclaims all copyright interest in the program
-+    `Gnomovision' (which makes passes at compilers) written by James Hacker.
-+    
-+    <signature of Ty Coon>, 1 April 1989
-+    Ty Coon, President of Vice
- 
- This General Public License does not permit incorporating your program into
- proprietary programs.  If your program is a subroutine library, you may
- consider it more useful to permit linking proprietary applications with the
--library.  If this is what you want to do, use the GNU Library General
-+library.  If this is what you want to do, use the GNU Lesser General
- Public License instead of this License.
-diff --git a/LICENSE.md b/LICENSE.md
-new file mode 120000
-index 0000000..3a3e12b
---- /dev/null
-+++ b/LICENSE.md
-@@ -0,0 +1 @@
-+GPL
-\ No newline at end of file
 diff --git a/Makefile.am b/Makefile.am
-index 9ee3fae..ecdbfaf 100644
+index 9ee3fae..5df692c 100644
 --- a/Makefile.am
 +++ b/Makefile.am
-@@ -10,7 +10,11 @@ IMAP_SUBDIR = imap
+@@ -10,9 +10,13 @@ IMAP_SUBDIR = imap
  IMAP_INCLUDES = -I$(top_srcdir)/imap
  endif
  
@@ -966,8 +602,11 @@ index 9ee3fae..ecdbfaf 100644
  SUBDIRS = m4 po intl doc contrib $(IMAP_SUBDIR)
 +endif
  
- bin_SCRIPTS = muttbug flea $(SMIMEAUX_TARGET)
+-bin_SCRIPTS = muttbug flea $(SMIMEAUX_TARGET)
++bin_SCRIPTS = $(SMIMEAUX_TARGET)
  
+ if BUILD_HCACHE
+ HCVERSION = hcversion.h
 @@ -34,7 +38,7 @@ mutt_SOURCES = \
  	score.c send.c sendlib.c signal.c sort.c \
  	status.c system.c thread.c charset.c history.c lib.c \
@@ -1006,8 +645,9 @@ index 9ee3fae..ecdbfaf 100644
  	_regex.h OPS.MIX README.SECURITY remailer.c remailer.h browser.h \
  	mbyte.h lib.h extlib.c pgpewrap.c smime_keys.pl pgplib.h \
  	README.SSL smime.h group.h \
- 	muttbug pgppacket.h depcomp ascii.h BEWARE PATCHES patchlist.sh \
+-	muttbug pgppacket.h depcomp ascii.h BEWARE PATCHES patchlist.sh \
 -	ChangeLog mkchangelog.sh mutt_idna.h \
++	pgppacket.h depcomp ascii.h BEWARE PATCHES patchlist.sh \
 +	ChangeLog mkchangelog.sh mutt_idna.h sidebar.h OPS.SIDEBAR \
  	snprintf.c regex.c crypt-gpgme.h hcachever.sh.in sys_socket.h \
 -	txt2c.c txt2c.sh version.sh check_sec.sh
@@ -1027,7 +667,25 @@ index 9ee3fae..ecdbfaf 100644
  mutt_dotlock_SOURCES = mutt_dotlock.c
  mutt_dotlock_LDADD = $(LIBOBJS)
  mutt_dotlock_DEPENDENCIES = $(LIBOBJS)
-@@ -129,14 +144,15 @@ smime_keys: $(srcdir)/smime_keys.pl
+@@ -112,16 +127,12 @@ conststrings.c: txt2c config.status
+ 
+ CLEANFILES = mutt_dotlock.c keymap_alldefs.h $(BUILT_SOURCES)
+ 
+-DISTCLEANFILES= flea smime_keys txt2c po/$(PACKAGE).pot
++DISTCLEANFILES= smime_keys txt2c po/$(PACKAGE).pot
+ 
+ ACLOCAL_AMFLAGS = -I m4
+ 
+ LDADD = $(LIBOBJS) $(INTLLIBS)
+ 
+-flea:	muttbug.sh
+-	cp muttbug.sh flea
+-	chmod +x flea
+-
+ smime_keys: $(srcdir)/smime_keys.pl
+ 	cp $(srcdir)/smime_keys.pl smime_keys
+ 	chmod +x smime_keys
+@@ -129,14 +140,15 @@ smime_keys: $(srcdir)/smime_keys.pl
  keymap_defs.h: $(OPS) $(srcdir)/gen_defs
  	$(srcdir)/gen_defs $(OPS) > keymap_defs.h
  
@@ -1047,7 +705,7 @@ index 9ee3fae..ecdbfaf 100644
  	cmp -s reldate.h.tmp reldate.h || cp reldate.h.tmp reldate.h; \
  	rm reldate.h.tmp
  
-@@ -184,17 +200,6 @@ pclean:
+@@ -184,17 +196,6 @@ pclean:
  check-security:
  	(cd $(top_srcdir) && ./check_sec.sh)
  
@@ -1235,31 +893,32 @@ index 0000000..e39f80c
 +OP_SIDEBAR_TOGGLE_VIRTUAL "toggle between mailboxes and virtual mailboxes"
 +OP_SIDEBAR_TOGGLE_VISIBLE "make the sidebar (in)visible"
 diff --git a/PATCHES b/PATCHES
-index e69de29..62367db 100644
+index e69de29..6f0c09b 100644
 --- a/PATCHES
 +++ b/PATCHES
-@@ -0,0 +1,21 @@
-+patch-quasi-delete-neo-git
-+patch-progress-neo-git
-+patch-status-color-neo-git
-+patch-index-color-neo-git
-+patch-nested-if-neo-git
+@@ -0,0 +1,22 @@
++patch-compress-neo-git
 +patch-cond-date-neo-git
-+patch-tls-sni-neo-git
-+patch-sidebar-neo-git
-+patch-ifdef-neo-git
 +patch-fmemopen-neo-git
++patch-ifdef-neo-git
++patch-index-color-neo-git
 +patch-initials-neo-git
-+patch-trash-neo-git
-+patch-limit-current-thread-neo-git
-+patch-skip-quoted-neo-git
-+patch-compress-neo-git
 +patch-keywords-neo-git
-+patch-nntp-neo-git
++patch-limit-current-thread-neo-git
 +patch-lmdb-neo-git
-+patch-1.5.23.smime-encrypt-self.1
++patch-multiple-fcc-neo-git
++patch-nested-if-neo-git
 +patch-new-mail-neo-git
++patch-nntp-neo-git
++patch-progress-neo-git
++patch-quasi-delete-neo-git
++patch-sidebar-neo-git
++patch-skip-quoted-neo-git
 +patch-smime-encrypt-to-self-neo-git
++patch-status-color-neo-git
++patch-timeout-neo-git
++patch-tls-sni-neo-git
++patch-trash-neo-git
 diff --git a/README.SSL b/README.SSL
 index 75cac80..90290e0 100644
 --- a/README.SSL
@@ -2116,12 +1775,62 @@ index 0000000..716afb5
 @@ -0,0 +1 @@
 +README.neomutt
 \ No newline at end of file
+diff --git a/README.multiple-fcc b/README.multiple-fcc
+new file mode 100644
+index 0000000..e159d0b
+--- /dev/null
++++ b/README.multiple-fcc
+@@ -0,0 +1,44 @@
++multiple-fcc Patch
++==================
++
++Save multiple copies of outgoing mail
++
++Patch
++-----
++
++    To check if Mutt supports "multiple-fcc", look for "patch-multiple-fcc" in the mutt
++    version.
++
++    Dependencies
++    * mutt-1.6.2
++
++Introduction
++------------
++
++    This patch allows the user to save outgoing emails in multiple folders.
++
++    Folders should be listed separated by commas, **but no spaces**.
++
++    The "fcc" field of an email can be set in two ways:
++
++    * The <edit-fcc> command in the compose menu (default key: "f")
++    * Creating a `fcc-hook` in your `.muttrc`
++
++See Also
++--------
++
++    * NeoMutt project
++    * $record
++    * folder-hook
++
++Known Bugs
++----------
++
++    None
++
++Credits
++-------
++
++    * Omen Wild <omen at mandarb.com>
++    * Richard Russon <rich at flatcap.org>
++
 diff --git a/README.neomutt b/README.neomutt
 new file mode 100644
-index 0000000..a8d6b3b
+index 0000000..f0d2b23
 --- /dev/null
 +++ b/README.neomutt
-@@ -0,0 +1,83 @@
+@@ -0,0 +1,94 @@
 +# This is the NeoMutt Project
 +
 +## What is NeoMutt?
@@ -2148,6 +1857,7 @@ index 0000000..a8d6b3b
 +| Keywords             | Labels/Tagging for emails
 +| Limit-Current-Thread | Limit Index View to Current Thread
 +| LMDB                 | LMDB backend for the header cache
++| Multiple fcc         | Save multiple copies of outgoing mail
 +| Nested If            | Allow deeply nested conditionals in format strings
 +| New Mail Command     | Run a command when new mail arrives
 +| NNTP                 | Talk to a Usenet news server
@@ -2156,11 +1866,19 @@ index 0000000..a8d6b3b
 +| Quasi-Delete         | Hide emails from view, but don't delete them
 +| Sidebar              | Panel containing list of Mailboxes
 +| Skip-Quoted          | Skip Quoted Text
-+| SMIME Encrypt to Self| Save an self-encrypted copy of emails
++| SMIME Encrypt Self   | Save an self-encrypted copy of emails
 +| Status Color         | Theming of the Status Bar
++| Timeout Hook         | Run a command periodically
 +| TLS-SNI              | Negotiate with a Server for a Certificate
 +| Trash Folder         | Move 'deleted' emails to a trash folder
 +
++## Contributed Scripts and Config
++
++- Keybase Integration
++  Joshua Jordi (JakkinStewart)
++- vim-keybindings - Mutt config for vim users
++  Ivan Tham (pickfire)
++
 +## Where is NeoMutt?
 +
 +- Source Code:     https://github.com/neomutt/neomutt
@@ -2174,10 +1892,12 @@ index 0000000..a8d6b3b
 +
 +Here's a list of everyone who's helped NeoMutt:
 +
-+Alex Pearce, Antonio Radici, Christoph Berg, Chris Salzberg, David Sterba,
-+Evgeni Golov, Fabian Groffen, Fabio Alessandro Locati, Faidon Liambotis,
-+Karel Zak, Kurt Jaeger, Matteo Vescovi, Richard Hartmann, Richard Russon,
-+Udo Schweigert, Werner Fink.
++Alex Pearce, Ander Punnar, Antonio Radici, Chris Salzberg, Christoph Berg,
++Darshit Shah, David Sterba, Elimar Riesebieter, Evgeni Golov, Fabian Groffen,
++Fabio Alessandro Locati, Faidon Liambotis, Ivan Tham, Johannes Frankenau,
++Joshua Jordi, Karel Zak, Kurt Jaeger, Matteo Vescovi, Richard Hartmann,
++Richard Russon, Santiago Torres, Udo Schweigert, Werner Fink,
++Yoshiki Vázquez Baeza.
 +
 +## Original Patch Authors
 +
@@ -2751,7 +2471,7 @@ index 0000000..42a42b2
 +
 diff --git a/README.sidebar b/README.sidebar
 new file mode 100644
-index 0000000..6ee820b
+index 0000000..da710ff
 --- /dev/null
 +++ b/README.sidebar
 @@ -0,0 +1,143 @@
@@ -2765,12 +2485,12 @@ index 0000000..6ee820b
 +    If you haven't used the sidebar before, you might like to read the
 +    Sidebar Introduction:
 +
-+        http://www.neomutt.org/sidebar-intro.html
++        http://www.neomutt.org/feature/sidebar-intro
 +
 +    If you have used an older version of the Sidebar, please note that some
 +    of the configuration has changed.
 +
-+        http://www.neomutt.org/sidebar-intro.html#intro-sidebar-config-changes
++        http://www.neomutt.org/feature/sidebar-intro#intro-sidebar-config-changes
 +
 +Patch
 +-----
@@ -3080,6 +2800,53 @@ index 0000000..03a7fb4
 +    * Kirill A. Shutemov <kirill at shutemov.name>
 +    * Richard Russon <rich at flatcap.org>
 +
+diff --git a/README.timeout b/README.timeout
+new file mode 100644
+index 0000000..3b96a1c
+--- /dev/null
++++ b/README.timeout
+@@ -0,0 +1,41 @@
++Timeout Patch
++=============
++
++    Run a command periodically
++
++Patch
++-----
++
++    To check if Mutt supports "Timeout", look for "patch-timeout" in the mutt
++    version.
++
++    Dependencies
++    * mutt-1.6.2
++
++Introduction
++------------
++
++    This patch implements a new hook that is called periodically when Mutt
++    checks for new mail. This hook is called every `$timeout` seconds.
++
++Commands
++--------
++
++    timeout-hook .  MUTT-COMMAND
++
++See Also
++--------
++
++    * $timeout
++
++Known Bugs
++----------
++
++    None
++
++Credits
++-------
++
++    * Armin Wolfermann <armin at wolfermann.org>
++    * Richard Russon <rich at flatcap.org>
++
 diff --git a/README.tls-sni b/README.tls-sni
 new file mode 100644
 index 0000000..76d5052
@@ -6123,7 +5890,7 @@ index 6af817f..d555d92 100644
  	mutt_paddstr (COLS, buf);
 diff --git a/compress.c b/compress.c
 new file mode 100644
-index 0000000..3eb02a7
+index 0000000..65f52e4
 --- /dev/null
 +++ b/compress.c
 @@ -0,0 +1,826 @@
@@ -6234,6 +6001,7 @@ index 0000000..3eb02a7
 +
 +	FREE(&ctx->path);
 +	ctx->path = ctx->realpath;
++	ctx->realpath = NULL;
 +}
 +
 +/**
@@ -6621,7 +6389,6 @@ index 0000000..3eb02a7
 +
 +	if (get_size (ctx->realpath) != ci->size) {
 +		FREE(&ctx->compress_info);
-+		FREE(&ctx->realpath);
 +		mutt_error _("Mailbox was corrupted!");
 +		return -1;
 +	}
@@ -6992,23 +6759,113 @@ index 0000000..adf6a3e
 +
 +#endif /* _COMPRESS_H_ */
 diff --git a/configure.ac b/configure.ac
-index 6096dbb..c839b29 100644
+index 6096dbb..3573d91 100644
 --- a/configure.ac
 +++ b/configure.ac
-@@ -175,6 +175,47 @@ if test x$have_smime != xno ; then
- 	SMIMEAUX_TARGET="smime_keys"
- fi
+@@ -3,7 +3,10 @@ dnl Process this file with autoconf to produce a configure script.
+ dnl !!! WHEN ADDING NEW CONFIGURE TESTS, PLEASE ADD CODE TO MAIN.C !!!
+ dnl !!! TO DUMP THEIR RESULTS WHEN MUTT -V IS CALLED            !!!
+ 
+-AC_INIT([mutt],[m4_esyscmd(tr -d \\n <VERSION)])
++CFLAGS=$CFLAGS
++LDFLAGS=$LDFLAGS
++
++AC_INIT([NeoMutt], [m4_esyscmd(tr -d \\n <VERSION)], [https://github.com/neomutt/neomutt/issues], [mutt], [http://www.neomutt.org])
+ AC_CONFIG_SRCDIR(mutt.h)
+ AM_INIT_AUTOMAKE
+ AC_CONFIG_HEADERS([config.h])
+@@ -29,6 +32,10 @@ AC_MSG_RESULT($mutt_cv_prefix)
+ 
+ AC_PROG_CC
+ AC_PROG_CC_C99
++if test "$ac_cv_prog_cc_c99" = "no"; then
++  AC_ERROR([Compiler does not support C99. Aborting.])
++fi
++
+ AC_SEARCH_LIBS([strerror],[cposix])
+ if test "x$U" != "x"; then
+   AC_MSG_ERROR(Compiler not ANSI compliant)
+@@ -121,20 +128,16 @@ AC_DEFINE_UNQUOTED(SENDMAIL,"$ac_cv_path_SENDMAIL", [Where to find sendmail on y
+ OPS='$(srcdir)/OPS'
+ 
+ AC_MSG_CHECKING([whether to build with GPGME support])
+-AC_ARG_ENABLE(gpgme, AS_HELP_STRING([--enable-gpgme],[Enable GPGME support]),
+-[       if test x$enableval = xyes; then
+-		enable_gpgme=yes
+-	fi
+-])
++AC_ARG_ENABLE(gpgme, AS_HELP_STRING([--enable-gpgme],[Enable GPGME support]), enable_gpgme=$enableval, enable_gpgme=no)
+ 
+-if test x"$enable_gpgme" = xyes; then
+-   AC_MSG_RESULT(yes)
++AS_IF([test x$enable_gpgme = "xyes"], [
++   AC_MSG_RESULT([yes])
+    AM_PATH_GPGME(1.0.0, AC_DEFINE(CRYPT_BACKEND_GPGME, 1,
+ 		 [Defined, if GPGME support is enabled]),
+ 		 [gpgme_found=no])
+-   if test x"$gpgme_found" = xno; then
++   AS_IF([test x$gpgme_found = "xno"], [
+       AC_MSG_ERROR([*** GPGME not found ***])
+-   else
++   ], [
+       AM_PATH_GPGME(1.1.1, AC_DEFINE(HAVE_GPGME_PKA_TRUST, 1,
+ 				  [Define if GPGME supports PKA]))
+       #needed to get GPGME_LIBS and al correctly
+@@ -146,35 +149,67 @@ if test x"$enable_gpgme" = xyes; then
+       AC_CHECK_FUNCS([gpgme_op_export_keys])
+       LIBS="$saved_LIBS"
+       MUTT_LIB_OBJECTS="$MUTT_LIB_OBJECTS crypt-gpgme.o crypt-mod-pgp-gpgme.o crypt-mod-smime-gpgme.o"
+-   fi
+-else
++   ])
++], [
+    AC_MSG_RESULT([no])
+-fi
++])
  
-+AC_ARG_ENABLE(sidebar, AC_HELP_STRING([--enable-sidebar], [Enable Sidebar support]),
-+[       if test x$enableval = xyes ; then
-+		AC_DEFINE(USE_SIDEBAR, 1, [Define if you want support for the sidebar.])
-+		OPS="$OPS \$(srcdir)/OPS.SIDEBAR"
-+                MUTT_LIB_OBJECTS="$MUTT_LIB_OBJECTS sidebar.o"
-+        fi
+-AC_ARG_ENABLE(pgp, AS_HELP_STRING([--disable-pgp],[Disable PGP support]),
+-[       if test x$enableval = xno ; then
+-                have_pgp=no
+-        fi
++AC_ARG_ENABLE(pgp, AS_HELP_STRING([--disable-pgp],[Disable PGP support]), enable_pgp=$enableval, enable_pgp=yes)
++AS_IF([test x$enable_pgp != "xno"], [
++	   AC_DEFINE(CRYPT_BACKEND_CLASSIC_PGP, 1, [Define if you want classic PGP Support.])
++	   PGPAUX_TARGET="pgpring\$(EXEEXT) pgpewrap\$(EXEEXT)"
++	   MUTT_LIB_OBJECTS="$MUTT_LIB_OBJECTS pgp.o pgpinvoke.o pgpkey.o pgplib.o gnupgparse.o pgpmicalg.o pgppacket.o crypt-mod-pgp-classic.o"
+ ])
+ 
+-if test x$have_pgp != xno ; then
+-        AC_DEFINE(CRYPT_BACKEND_CLASSIC_PGP,1, [Define if you want classic PGP support.])
+-        PGPAUX_TARGET="pgpring\$(EXEEXT) pgpewrap\$(EXEEXT)"
+-        MUTT_LIB_OBJECTS="$MUTT_LIB_OBJECTS pgp.o pgpinvoke.o pgpkey.o pgplib.o gnupgparse.o pgpmicalg.o pgppacket.o crypt-mod-pgp-classic.o"
+-fi
++AC_ARG_ENABLE(smime, AS_HELP_STRING([--disable-smime],[Disable SMIME support]), enable_smime=$enableval, enable_smime=yes)
++AS_IF([test x$enable_smime != "xno"], [
++       AC_DEFINE(CRYPT_BACKEND_CLASSIC_SMIME, 1, [Define if you want classic S/MIME support.])
++       MUTT_LIB_OBJECTS="$MUTT_LIB_OBJECTS smime.o crypt-mod-smime-classic.o"
++       SMIMEAUX_TARGET="smime_keys"
 +])
-+
-+AC_ARG_ENABLE(notmuch, AC_HELP_STRING([--enable-notmuch], [Enable NOTMUCH support]),
-+[       if test x$enableval = xyes ; then
+ 
+-AC_ARG_ENABLE(smime, AS_HELP_STRING([--disable-smime],[Disable SMIME support]),
+-[	if test x$enableval = xno ; then
+-		have_smime=no
+-	fi
++AC_ARG_ENABLE(sidebar, AC_HELP_STRING([--enable-sidebar], [Enable Sidebar support]), enable_sidebar=$enableval, enable_sidebar=no)
++AS_IF([test x$enable_sidebar = "xyes"], [
++	   AC_DEFINE(USE_SIDEBAR, 1, [Define if you want support for the sidebar.])
++	   OPS="$OPS \$(srcdir)/OPS.SIDEBAR"
++	   MUTT_LIB_OBJECTS="$MUTT_LIB_OBJECTS sidebar.o"
+ ])
+- 
+-if test x$have_smime != xno ; then
+-	AC_DEFINE(CRYPT_BACKEND_CLASSIC_SMIME, 1, [Define if you want classic S/MIME support.])
+-	MUTT_LIB_OBJECTS="$MUTT_LIB_OBJECTS smime.o crypt-mod-smime-classic.o"
+-	SMIMEAUX_TARGET="smime_keys"
+-fi
+ 
++dnl Clean up this code. Maybe also use pkg_config
++AC_ARG_ENABLE(notmuch, AC_HELP_STRING([--enable-notmuch], [Enable NOTMUCH support]), enable_notmuch=$enableval, enable_notmuch=no)
++AS_IF([test x$enable_notmuch = "xyes"], [
 +		AC_CHECK_LIB(notmuch, notmuch_database_open,,
 +			AC_MSG_ERROR([Unable to find Notmuch library]))
 +		AC_DEFINE(USE_NOTMUCH,1,[ Define if you want support for the notmuch. ])
@@ -7027,23 +6884,24 @@ index 6096dbb..c839b29 100644
 +		[notmuch_api_3=no]
 +		)
 +		AC_MSG_RESULT([$notmuch_api_3])
-+        fi
 +])
 +AM_CONDITIONAL(BUILD_NOTMUCH, test x$need_notmuch = xyes)
 +
 +
 +AC_ARG_ENABLE(compressed, AC_HELP_STRING([--enable-compressed], [Enable compressed folders support]),
-+[       if test x$enableval = xyes ; then
-+                AC_DEFINE(USE_COMPRESSED, 1, [Define to enable compressed folders support.])
-+                MUTT_LIB_OBJECTS="$MUTT_LIB_OBJECTS compress.o"
-+        fi
++              enable_compressed=$enableval, enable_compressed=no
++)
++AS_IF([test x$enable_compressed = "xyes"], [
++	   AC_DEFINE(USE_COMPRESSED, 1, [Define to enable compressed folders support.])
++	   MUTT_LIB_OBJECTS="$MUTT_LIB_OBJECTS compress.o"
 +])
-+AM_CONDITIONAL(BUILD_COMPRESS, test x$need_compress = xyes)
++AM_CONDITIONAL(BUILD_COMPRESS, test x$enable_compressed = xyes)
 +
++dnl TODO: Clean this up. Needs some work understanding and fixing the AC_ARG_WITH
  AC_ARG_WITH(mixmaster, AS_HELP_STRING([--with-mixmaster@<:@=PATH@:>@],[Include Mixmaster support]),
    [if test "$withval" != no
     then
-@@ -281,7 +322,9 @@ main ()
+@@ -281,7 +316,9 @@ main ()
  	done
          AC_CHECK_LIB($cf_ncurses, initscr,
                  [MUTTLIBS="$MUTTLIBS -l$cf_ncurses"
@@ -7054,7 +6912,7 @@ index 6096dbb..c839b29 100644
                  if test "$cf_ncurses" = ncursesw; then
  			AC_CHECK_HEADERS(ncursesw/ncurses.h,[cf_cv_ncurses_header="ncursesw/ncurses.h"])
  		else
-@@ -309,10 +352,11 @@ main ()
+@@ -309,10 +346,11 @@ main ()
  AC_HEADER_STDC
  
  AC_CHECK_HEADERS(stdarg.h sys/ioctl.h ioctl.h sysexits.h)
@@ -7067,7 +6925,7 @@ index 6096dbb..c839b29 100644
  
  AC_MSG_CHECKING(for sig_atomic_t in signal.h)
  AC_EGREP_HEADER(sig_atomic_t,signal.h,
-@@ -354,7 +398,7 @@ AC_CHECK_TYPE(ssize_t, int)
+@@ -354,7 +392,7 @@ AC_CHECK_TYPE(ssize_t, int)
  
  AC_CHECK_FUNCS(fgetpos memmove setegid srand48 strerror)
  
@@ -7076,7 +6934,7 @@ index 6096dbb..c839b29 100644
  AC_REPLACE_FUNCS([strcasestr mkdtemp])
  
  AC_CHECK_FUNC(getopt)
-@@ -600,6 +644,15 @@ AC_ARG_ENABLE(imap, AS_HELP_STRING([--enable-imap],[Enable IMAP support]),
+@@ -600,6 +638,15 @@ AC_ARG_ENABLE(imap, AS_HELP_STRING([--enable-imap],[Enable IMAP support]),
  ])
  AM_CONDITIONAL(BUILD_IMAP, test x$need_imap = xyes)
  
@@ -7092,7 +6950,7 @@ index 6096dbb..c839b29 100644
  AC_ARG_ENABLE(smtp, AS_HELP_STRING([--enable-smtp],[include internal SMTP relay support]),
  	[if test $enableval = yes; then
  		AC_DEFINE(USE_SMTP, 1, [Include internal SMTP relay support])
-@@ -607,7 +660,7 @@ AC_ARG_ENABLE(smtp, AS_HELP_STRING([--enable-smtp],[include internal SMTP relay
+@@ -607,7 +654,7 @@ AC_ARG_ENABLE(smtp, AS_HELP_STRING([--enable-smtp],[include internal SMTP relay
  		need_socket="yes"
  	fi])
  
@@ -7101,7 +6959,13 @@ index 6096dbb..c839b29 100644
    MUTT_LIB_OBJECTS="$MUTT_LIB_OBJECTS bcache.o"
  fi
  
-@@ -855,6 +908,7 @@ AC_ARG_WITH(tokyocabinet, AS_HELP_STRING([--without-tokyocabinet],[Don't use tok
+@@ -850,11 +897,13 @@ AC_ARG_ENABLE(exact-address, AS_HELP_STRING([--enable-exact-address],[Enable reg
+ dnl -- start cache --
+ db_found=no
+ db_requested=auto
++hcache_db_used=no
+ AC_ARG_ENABLE(hcache, AS_HELP_STRING([--enable-hcache],[Enable header caching]))
+ AC_ARG_WITH(tokyocabinet, AS_HELP_STRING([--without-tokyocabinet],[Don't use tokyocabinet even if it is available]))
  AC_ARG_WITH(qdbm, AS_HELP_STRING([--without-qdbm],[Don't use qdbm even if it is available]))
  AC_ARG_WITH(gdbm, AS_HELP_STRING([--without-gdbm],[Don't use gdbm even if it is available]))
  AC_ARG_WITH(bdb, AS_HELP_STRING([--with-bdb@<:@=DIR@:>@],[Use BerkeleyDB4 if gdbm is not available]))
@@ -7109,29 +6973,127 @@ index 6096dbb..c839b29 100644
  
  db_found=no
  if test x$enable_hcache = xyes
-@@ -899,6 +953,15 @@ then
-         db_requested=bdb
+@@ -870,7 +919,7 @@ then
+ 
+     if test -n "$with_tokyocabinet" && test "$with_tokyocabinet" != "no"
+     then
+-      db_requested=tc
++      db_requested=TokyoCabinet
+     fi
+     if test -n "$with_qdbm" && test "$with_qdbm" != "no"
+     then
+@@ -878,7 +927,7 @@ then
+       then
+         AC_MSG_ERROR([more than one header cache engine requested.])
+       else
+-        db_requested=qdbm
++        db_requested=QDBM
        fi
      fi
+     if test -n "$with_gdbm" && test "$with_gdbm" != "no"
+@@ -887,7 +936,7 @@ then
+       then
+         AC_MSG_ERROR([more than one header cache engine requested.])
+       else
+-        db_requested=gdbm
++        db_requested=GDBM
+       fi
+     fi
+     if test -n "$with_bdb" && test "$with_bdb" != "no"
+@@ -896,13 +945,22 @@ then
+       then
+         AC_MSG_ERROR([more than one header cache engine requested.])
+       else
+-        db_requested=bdb
++        db_requested=BDB
++      fi
++    fi
 +    if test -n "$with_lmdb" && test "$with_lmdb" != "no"
 +    then
 +      if test "$db_requested" != "auto"
 +      then
 +        AC_MSG_ERROR([more than one header cache engine requested.])
 +      else
-+        db_requested=lmdb
-+      fi
-+    fi
++        db_requested=LMDB
+       fi
+     fi
      
      dnl -- Tokyo Cabinet --
      if test "$with_tokyocabinet" != "no" \
-@@ -1042,6 +1105,34 @@ then
+-	    && test "$db_requested" = auto -o "$db_requested" = tc
++	    && test "$db_requested" = auto -o "$db_requested" = TokyoCabinet
+     then
+       if test -n "$with_tokyocabinet" && test "$with_tokyocabinet" != "yes"
+       then
+@@ -914,7 +972,7 @@ then
+       AC_CHECK_LIB(tokyocabinet, tcbdbopen,
+         [MUTTLIBS="$MUTTLIBS -ltokyocabinet"
+          AC_DEFINE(HAVE_TC, 1, [Tokyo Cabinet Support])
+-         db_found=tc],
++         db_found=TokyoCabinet],
+         [CPPFLAGS="$OLDCPPFLAGS"
+          LDFLAGS="$OLDLDFLAGS"]))
+       if test "$db_requested" != auto && test "$db_found" != "$db_requested"
+@@ -925,7 +983,7 @@ then
+ 
+     dnl -- QDBM --
+     if test "$with_qdbm" != "no" && test $db_found = no \
+-	    && test "$db_requested" = auto -o "$db_requested" = qdbm
++	    && test "$db_requested" = auto -o "$db_requested" = QDBM
+     then
+       if test -n "$with_qdbm" && test "$with_qdbm" != "yes"
+       then
+@@ -946,7 +1004,7 @@ then
+       AC_CHECK_LIB(qdbm, vlopen,
+         [MUTTLIBS="$MUTTLIBS -lqdbm"
+          AC_DEFINE(HAVE_QDBM, 1, [QDBM Support])
+-         db_found=qdbm],
++         db_found=QDBM],
+         [CPPFLAGS="$OLDCPPFLAGS"
+          LDFLAGS="$OLDLDFLAGS"])
+       LIBS="$saved_LIBS"
+@@ -958,7 +1016,7 @@ then
+ 
+     dnl -- GDBM --
+     if test x$with_gdbm != xno && test $db_found = no \
+-	    && test "$db_requested" = auto -o "$db_requested" = gdbm
++	    && test "$db_requested" = auto -o "$db_requested" = GDBM
+     then
+         if test "$with_gdbm" != "yes"
+         then
+@@ -976,7 +1034,7 @@ then
+         then
+           AC_DEFINE(HAVE_GDBM, 1, [GDBM Support])
+           MUTTLIBS="$MUTTLIBS -lgdbm"
+-          db_found=gdbm
++          db_found=GDBM
+         fi
+         if test "$db_requested" != auto && test "$db_found" != "$db_requested"
+         then
+@@ -986,7 +1044,8 @@ then
+ 
+     dnl -- BDB --
+     ac_bdb_prefix="$with_bdb"
+-    if test x$ac_bdb_prefix != xno && test $db_found = no
++    if test x$with_bdb != xno && test $db_found = no \
++	    && test "$db_requested" = auto -o "$db_requested" = BDB
+     then
+         if test x$ac_bdb_prefix = xyes || test x$ac_bdb_prefix = x
+         then
+@@ -1036,17 +1095,46 @@ then
+             CPPFLAGS="$OLDCPPFLAGS -I$BDB_INCLUDE_DIR"
+             LIBS="$OLDLIBS -L$BDB_LIB_DIR -l$BDB_LIB"
+             AC_DEFINE(HAVE_DB4, 1, [Berkeley DB4 Support])
+-            db_found=bdb
++            db_found=BDB
+         else
+             AC_MSG_RESULT(no)
          fi
      fi
  
 +    dnl -- LMDB --
 +    if test x$with_lmdb != xno && test $db_found = no \
-+	    && test "$db_requested" = auto -o "$db_requested" = lmdb
++	    && test "$db_requested" = auto -o "$db_requested" = LMDB
 +    then
 +        if test "$with_lmdb" != "yes"
 +        then
@@ -7149,7 +7111,7 @@ index 6096dbb..c839b29 100644
 +        then
 +          AC_DEFINE(HAVE_LMDB, 1, [LMDB Support])
 +          MUTTLIBS="$MUTTLIBS -llmdb"
-+          db_found=lmdb
++          db_found=LMDB
 +        fi
 +        if test "$db_requested" != auto && test "$db_found" != "$db_requested"
 +        then
@@ -7159,8 +7121,15 @@ index 6096dbb..c839b29 100644
 +
      if test $db_found = no
      then
-         AC_MSG_ERROR([You need Tokyo Cabinet, QDBM, GDBM or Berkeley DB4 for hcache])
-@@ -1065,6 +1156,7 @@ AC_SUBST(MUTTLIBS)
+-        AC_MSG_ERROR([You need Tokyo Cabinet, QDBM, GDBM or Berkeley DB4 for hcache])
++        AC_MSG_ERROR([You need Tokyo Cabinet, QDBM, GDBM, Berkeley DB4 or LMDB for hcache])
+     fi
+ fi
++hcache_db_used=$db_found
+ dnl -- end cache --
+ 
+ AM_CONDITIONAL(BUILD_HCACHE, test x$db_found != xno)
+@@ -1065,6 +1153,7 @@ AC_SUBST(MUTTLIBS)
  AC_SUBST(MUTT_LIB_OBJECTS)
  AC_SUBST(LIBIMAP)
  AC_SUBST(LIBIMAPDEPS)
@@ -7168,7 +7137,7 @@ index 6096dbb..c839b29 100644
  
  dnl -- iconv/gettext --
  
-@@ -1076,6 +1168,13 @@ AC_ARG_ENABLE(iconv, AS_HELP_STRING([--disable-iconv],[Disable iconv support]),
+@@ -1076,6 +1165,13 @@ AC_ARG_ENABLE(iconv, AS_HELP_STRING([--disable-iconv],[Disable iconv support]),
  
  MUTT_AM_GNU_GETTEXT
  
@@ -7182,15 +7151,478 @@ index 6096dbb..c839b29 100644
  if test "$am_cv_func_iconv" != "yes"
  then
    AC_MSG_WARN([Configuring without iconv support. See INSTALL for details])
-@@ -1308,6 +1407,8 @@ if test $mutt_cv_langinfo_yesexpr = yes; then
+@@ -1308,6 +1404,12 @@ if test $mutt_cv_langinfo_yesexpr = yes; then
    AC_DEFINE(HAVE_LANGINFO_YESEXPR,1,[ Define if you have <langinfo.h> and nl_langinfo(YESEXPR). ])
  fi
  
-+AC_CHECK_FUNCS(fmemopen open_memstream)
++AC_CHECK_FUNCS(fmemopen open_memstream, [
++	AC_ARG_ENABLE(fmemopen, AS_HELP_STRING([--disable-fmemopen],[Do NOT use fmemopen]),
++	[],
++	[AC_DEFINE(USE_FMEMOPEN, 1, [Use fmemopen])])
++])
 +
  dnl Documentation tools
  have_openjade="no"
  AC_PATH_PROG([OSPCAT], [ospcat], [none])
+@@ -1343,5 +1445,24 @@ fi
+ 
+ AC_CONFIG_FILES(Makefile contrib/Makefile doc/Makefile imap/Makefile
+         intl/Makefile m4/Makefile po/Makefile.in
+-        hcachever.sh muttbug.sh doc/instdoc.sh)
++        hcachever.sh doc/instdoc.sh)
+ AC_OUTPUT
++
++AC_MSG_NOTICE([Summary of build options:
++
++  Version:           ${PACKAGE_VERSION}
++  Host OS:           ${host_os}
++  Install prefix:    ${prefix}
++  Compiler:          ${CC}
++  CFlags:            ${CFLAGS} ${CPPFLAGS}
++  LDFlags:           ${LDFLAGS}
++  Libs:              ${LIBS}
++
++  GPGME:             $enable_gpgme
++  PGP:               $enable_pgp
++  SMIME:             $enable_smime
++  Sidebar:           $enable_sidebar
++  Notmuch:           $enable_notmuch
++  Compressed Folder: $enable_compressed
++  Header Cache:      $hcache_db_used
++])
+diff --git a/contrib/Makefile.am b/contrib/Makefile.am
+index 4abd2c7..b5aaa69 100644
+--- a/contrib/Makefile.am
++++ b/contrib/Makefile.am
+@@ -13,6 +13,8 @@ EXTRA_DIST = language.txt language50.txt  \
+ 	iconv/README \
+ 	iconv/make.sh
+ 
++CONTRIB_DIRS = vim-keybindings keybase
++
+ install-data-local:
+ 	$(MKDIR_P) $(DESTDIR)$(docdir)/samples $(DESTDIR)$(docdir)/samples/iconv
+ 	for f in $(SAMPLES) ; do \
+@@ -21,11 +23,17 @@ install-data-local:
+ 	for f in $(srcdir)/iconv/*.rc ; do					\
+ 		$(INSTALL) -m 644 $$f $(DESTDIR)$(docdir)/samples/iconv	  ;	\
+ 	done
++	for d in $(CONTRIB_DIRS); do						\
++		cp -r $(srcdir)/$$d $(DESTDIR)$(docdir);			\
++	done
+ 
+ uninstall-local:
+ 	for f in $(SAMPLES) ; do \
+ 		rm -f $(DESTDIR)$(docdir)/samples/$$f ; \
+ 	done
++	for d in $(CONTRIB_DIRS); do						\
++		rm -fr $(DESTDIR)$(docdir)/$$d;	                		\
++	done
+ 	-rm -rf $(DESTDIR)$(docdir)/samples/iconv
+ 	-rmdir $(DESTDIR)$(docdir)/samples
+ 	-rmdir $(DESTDIR)$(docdir)
+diff --git a/contrib/keybase/.muttrc b/contrib/keybase/.muttrc
+new file mode 100644
+index 0000000..ff65db9
+--- /dev/null
++++ b/contrib/keybase/.muttrc
+@@ -0,0 +1,2 @@
++set editor = 'echo %s > ~/.mutt/keybaseMutt/.tmp; vim %s'
++macro compose K "<enter-command>unset wait_key<enter><shell-escape>python ~/.mutt/keybaseMutt/keybase.py<enter><enter-command>set wait_key<enter>
+diff --git a/contrib/keybase/KeybaseAndMutt.md b/contrib/keybase/KeybaseAndMutt.md
+new file mode 100644
+index 0000000..f23df9b
+--- /dev/null
++++ b/contrib/keybase/KeybaseAndMutt.md
+@@ -0,0 +1,39 @@
++To use Keybase in Mutt, the first thing that must be done (before even the macro) is setting your editor. This is important because we can replace the editor with any command we could think of. Mine looks like this.
++
++`set editor = 'echo %s > ~/.mutt/keybaseMutt/.tmp; vim %s'`
++
++It is crucially important, without this line nothing will work.
++
++What is really happening in that line is this. The echo command is echoing the contents of %s into a file. Typically, an editor will use %s to open the temporary file to let you create an email. We've just used it to work with a python script later on.
++
++Next, set a macro in the .muttrc
++
++`macro compose K "<enter-command>unset wait_key<enter><shell-escape>python ~/.mutt/keybaseMutt/keybase.py<enter><enter-command>set wait_key<enter>`
++
++You will need to place the python script in your ~/.mutt/keybaseMutt directory, creating it if it doesn't exist. If you wish to place the script elsewhere, change the macro to point to the script.
++
++The python script will take certain Keybase commands and run them. (Right now it will only let you encrypt or sign a message.)
++
++The output of the script will be written directly into the email. (Thank the devs for using /tmp/mutt* files.) As you may have guessed, the you will only be able to send inline encrypted messages. No MIME attachments.
++
++Creating encrypted email is now quite easy. All you need to do is press "K" and type something to the effect of `keybase encrypt [user]` or `keybase pgp encrypt [user]`.
++
++The script will direct all output into the temporary file and replace your message with an encrypted version.
++
++Signing is done the same way.
++
++Decryption and verification is a bit more tricky. Unfortunately, mutt doesn't use /tmp/mutt* files for emails that you receive, and I don't understand mutt well enough to find the email on the drive.
++
++To work around that, I've created several scripts to decrypt or verify messages. While you are reading an email that's been encrypted, use the pipe command in mutt ("|").
++
++You will be able to pipe the contents of the email into one of the scripts to decrypt or verify the message.
++
++How you do that is up to you, if you want to feed it the explicit location of the script, that will work fine. (Something like this `/home/[user]/path/to/script.sh`.)
++
++Or, if you know how to create paths (or if you put it in the `/bin` directory), you only need to feed it the name of the script (`script.sh`). Look it up if you don't know how. Its fun!
++
++There will be four separate scripts: verify.sh, decrypt.sh, pgpverify.sh, pgpdecrypt.sh
++
++Unfortunately, I wasn't able to find a way to condense them into one script. (Mainly because I'm a little short on time. That may change later.)
++
++Each script should be decently self-explanatory. The verify and decrypt scripts will work on keybase messages, while the pgpverify and pgpdecrypt scripts will work on keybase pgp messages.
+diff --git a/contrib/keybase/LICENSE b/contrib/keybase/LICENSE
+new file mode 100644
+index 0000000..cf1ab25
+--- /dev/null
++++ b/contrib/keybase/LICENSE
+@@ -0,0 +1,24 @@
++This is free and unencumbered software released into the public domain.
++
++Anyone is free to copy, modify, publish, use, compile, sell, or
++distribute this software, either in source code form or as a compiled
++binary, for any purpose, commercial or non-commercial, and by any
++means.
++
++In jurisdictions that recognize copyright laws, the author or authors
++of this software dedicate any and all copyright interest in the
++software to the public domain. We make this dedication for the benefit
++of the public at large and to the detriment of our heirs and
++successors. We intend this dedication to be an overt act of
++relinquishment in perpetuity of all present and future rights to this
++software under copyright law.
++
++THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
++EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
++MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
++IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
++OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
++ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
++OTHER DEALINGS IN THE SOFTWARE.
++
++For more information, please refer to <http://unlicense.org>
+diff --git a/contrib/keybase/README.md b/contrib/keybase/README.md
+new file mode 100644
+index 0000000..e2a53c6
+--- /dev/null
++++ b/contrib/keybase/README.md
+@@ -0,0 +1,39 @@
++# KeybaseMutt
++
++A work in progress. KeybaseMutt exists to let its users utilize Keybase within mutt. (Unfortunately, not natively (yet).)
++
++## Quick start
++
++Run the install script. It will set up the directory's and paths for you. Do what it says or suffer the consequences!
++
++Then just throw these into your .muttrc
++
++`set editor = 'echo %s > ~/.mutt/keybaseMutt/.tmp; vim %s'`
++
++`macro compose K "<enter-command>unset wait_key<enter><shell-escape>python ~/.mutt/keybaseMutt/keybase.py<enter><enter-command>set wait_key<enter>`
++
++Done!
++
++## How to use KeybaseMutt
++
++Write an email. In the screen right before you send your email (called the pager mode), press "K".
++
++![](pagerMode.png)
++(Press 'K' when you're here)
++
++You can now use four Keybase commands in this "shell". (I thought it best to limit the user to four commands for security reasons. Running unusual commands would overwrite the email, forcing the user to rewrite the email again.)
++
++The commands are:
++- `keybase encrypt [user]`
++- `keybase pgp encrypt [user]`
++- `keybase sign`
++- `keybase pgp sign`
++
++
++## Decrypting and verifying messages
++
++Unfortunately, there isn't an easy way to decrypt or verify messages through a macro. Instead, you'll need to use the pipe feature of mutt.
++
++Opening the email, you'll need to navigate to the actual attachment. (Press "V" when you're reading the email.)
++
++![](/)
+diff --git a/contrib/keybase/decrypt.sh b/contrib/keybase/decrypt.sh
+new file mode 100755
+index 0000000..56f8f21
+--- /dev/null
++++ b/contrib/keybase/decrypt.sh
+@@ -0,0 +1,2 @@
++#! /usr/bin/bash
++sed -n 's/^.*BEGIN KEYBASE/BEGIN KEYBASE/p' | keybase decrypt
+diff --git a/contrib/keybase/install.sh b/contrib/keybase/install.sh
+new file mode 100644
+index 0000000..2165938
+--- /dev/null
++++ b/contrib/keybase/install.sh
+@@ -0,0 +1,59 @@
++#! /usr/bin/bash
++
++# If no directory exists, make it exist.
++if [ -d "$HOME/.mutt/keybaseMutt" ]; then
++
++	# If someone already has a backup, complain.
++	if [ -d "$HOME/.mutt/keybaseMuttBACKUP" ]; then
++		#echo "$HOME/.mutt/keybaseMuttBACKUP exists"
++		echo "You are going to overwrite your backup. Are you sure you want to do this? [y|n]"
++		read overwrite
++
++		# If they want to delete their backup.
++		if [ $overwrite == 'y' ]; then
++			cp -R $HOME/.mutt/keybaseMutt $HOME/.mutt/keybaseMuttBACKUP
++			rm -r $HOME/.mutt/keybaseMutt
++			mkdir -p $HOME/.mutt/keybaseMutt/scripts
++
++		# Otherwise, abort mission.
++		else
++			echo "ABORT! ABORT! ABORT!"
++			exit 1
++		fi
++
++	elif [ ! -d "$HOME/.mutt/keybaseMuttBACKUP" ]; then
++		echo "Backing up previous install."
++		cp -R $HOME/.mutt/keybaseMutt $HOME/.mutt/keybaseMuttBACKUP
++		rm -r $HOME/.mutt/keybaseMutt
++		mkdir -p $HOME/.mutt/keybaseMutt/scripts
++	fi
++# Otherwise, make a backup
++elif [ ! -d "$HOME/.mutt/keybaseMutt" ]; then
++	echo "Installing your program..."
++	mkdir -p $HOME/.mutt/keybaseMutt/scripts
++
++fi
++
++# Copy my directory to your directory.
++cp ./keybase.py  $HOME/.mutt/keybaseMutt
++cp ./pgpdecrypt.sh $HOME/.mutt/keybaseMutt/scripts
++cp ./decrypt.sh $HOME/.mutt/keybaseMutt/scripts
++cp ./verify.sh $HOME/.mutt/keybaseMutt/scripts
++cp ./pgpverify.sh $HOME/.mutt/keybaseMutt/scripts
++
++# Yay! Stuff's installed!
++echo "You'll need to include a path to '~/.mutt/keybase/scripts' in your shell's rc file. If you've done this previously on your computer, press 'n'."
++echo "Do you use [b]ash, [k]sh, or [z]sh? [n]"
++echo "(You use $SHELL)"
++read shellInput
++if [ $shellInput == 'b' ]; then
++	echo 'export PATH="$PATH:~/.mutt/keybaseMutt/scripts"' >> $HOME/.bashrc
++elif [ $shellInput == 'k' ]; then
++	echo 'export PATH="$PATH:~/.mutt/keybaseMutt/scripts"' >> $HOME/.kshrc
++elif [ $shellInput == 'z' ]; then
++	echo 'export PATH="$PATH:~/.mutt/keybaseMutt/scripts"' >> $HOME/.zshrc
++else 
++	echo "If you use something another shell, you'll need to add the path manually."
++fi
++
++echo "Please restart your shell to be able to use the scripts (closing and reopening the terminal is easiest)."
+diff --git a/contrib/keybase/keybase.py b/contrib/keybase/keybase.py
+new file mode 100644
+index 0000000..33a6e1d
+--- /dev/null
++++ b/contrib/keybase/keybase.py
+@@ -0,0 +1,60 @@
++#! /usr/bin/env python
++# Written by Joshua Jordi
++
++import os
++
++def helpfunc():
++    print("Run keybase commands here as if you were using keybase. WARNING: this program is not capable of MIME formatting. Only inline.")
++    print("To encrypt, use keybase syntax. (ie. 'keybase encrypt jakkinstewart' or 'keybase pgp encrypt jakkinstewart') Do not include a '-i' or '-o'. This script uses them in the background. Including either flag will mess with the script. (Unless that's what you want to do.)")
++    print("Don't worry about finding or attaching the file, the macro will take care of that.")
++    print("To sign, give it the style ('sign' or 'pgp sign'. It will automatically include the signature in the file.")
++    print("This program will not be able to decrypt or verify messages. I've created separate scripts for that.")
++    print('Type "quit" to quit.')
++
++def encryptSign(parameters):
++    os.system('echo $HOME > .file')
++    directory = open('.file', 'r')
++    pwd = directory.read().strip('\n')
++    directory.close()
++    tmp = open("%s/.mutt/keybaseMutt/.tmp" % pwd, "r")
++    tmp = tmp.read().strip("\n")
++    print("Working....")
++    os.system('%s -i %s -o %s' % (parameters, tmp, tmp))
++    print("Done!")
++
++#def sign(parameters):
++#    os.system('pwd > .file')
++#    directory = open('.file', 'r')
++#    pwd = directory.read().strip('\n')
++#    directory.close()
++#    tmp = open('%s/.mutt/keybaseMutt/.tmp' % pwd, 'r')
++#    tmp = tmp.read().strip('\n')
++#    print("Working...")
++#    os.system('%s -i %s -o %s' % (parameters, tmp, tmp))
++#    print("Done!")
++
++exitVar = ''
++
++print("Type help to learn how to use me.")
++
++while exitVar.lower() != 'quit':
++    inputStuffs = input('mutt#: ')
++    if (inputStuffs.lower() == 'help'):
++        helpfunc()
++
++    elif ('encrypt' in inputStuffs):
++        encryptSign(inputStuffs)
++
++    #elif ('decrypt' in inputStuffs):
++    #    decrypt(inputStuffs)
++
++    elif ('sign' in inputStuffs):
++        encryptSign(inputStuffs)
++
++    elif ('quit' in inputStuffs or 'exit' in inputStuffs):
++        exitVar = 'quit'
++
++    else:
++        print("You didn't use a known keybase command.")
++
++os.system('rm .file')
+diff --git a/contrib/keybase/pagerMode.png b/contrib/keybase/pagerMode.png
+new file mode 100644
+index 0000000..67bbaaa
+--- /dev/null
++++ b/contrib/keybase/pagerMode.png
+@@ -0,0 +1,104 @@
++Image: contrib/keybase/pagerMode.png
++  Format: PNG (Portable Network Graphics)
++  Mime type: image/png
++  Class: DirectClass
++  Geometry: 1920x1080+0+0
++  Resolution: 28.35x28.35
++  Print size: 67.7249x38.0952
++  Units: PixelsPerCentimeter
++  Type: TrueColorAlpha
++  Endianess: Undefined
++  Colorspace: sRGB
++  Depth: 8-bit
++  Channel depth:
++    red: 8-bit
++    green: 8-bit
++    blue: 8-bit
++    alpha: 1-bit
++  Channel statistics:
++    Pixels: 2073600
++    Red:
++      min: 0 (0)
++      max: 255 (1)
++      mean: 11.0294 (0.0432526)
++      standard deviation: 41.9071 (0.164342)
++      kurtosis: 19.6164
++      skewness: 4.48748
++      entropy: 0.124006
++    Green:
++      min: 0 (0)
++      max: 255 (1)
++      mean: 15.4209 (0.0604743)
++      standard deviation: 48.059 (0.188467)
++      kurtosis: 10.1961
++      skewness: 3.30564
++      entropy: 0.125644
++    Blue:
++      min: 0 (0)
++      max: 255 (1)
++      mean: 17.8106 (0.0698455)
++      standard deviation: 53.3012 (0.209024)
++      kurtosis: 6.79917
++      skewness: 2.88192
++      entropy: 0.12681
++    Alpha:
++      min: 255 (1)
++      max: 255 (1)
++      mean: 255 (1)
++      standard deviation: 0 (0)
++      kurtosis: 0
++      skewness: 0
++      entropy: 0
++  Image statistics:
++    Overall:
++      min: 0 (0)
++      max: 255 (1)
++      mean: 11.0652 (0.0433931)
++      standard deviation: 41.5538 (0.162956)
++      kurtosis: 16.9911
++      skewness: 4.25117
++      entropy: 0.0941149
++  Rendering intent: Perceptual
++  Gamma: 0.45455
++  Chromaticity:
++    red primary: (0.64,0.33)
++    green primary: (0.3,0.6)
++    blue primary: (0.15,0.06)
++    white point: (0.3127,0.329)
++  Background color: white
++  Border color: srgba(223,223,223,1)
++  Matte color: grey74
++  Transparent color: none
++  Interlace: PNG
++  Intensity: Undefined
++  Compose: Over
++  Page geometry: 1920x1080+0+0
++  Dispose: Undefined
++  Iterations: 0
++  Compression: Zip
++  Orientation: Undefined
++  Properties:
++    date:create: 2016-08-08T00:24:12+01:00
++    date:modify: 2016-08-08T00:24:12+01:00
++    png:bKGD: chunk was found (see Background color, above)
++    png:gAMA: gamma=0.45454544 (See Gamma, above)
++    png:IHDR.bit-depth-orig: 8
++    png:IHDR.bit_depth: 8
++    png:IHDR.color-type-orig: 6
++    png:IHDR.color_type: 6 (RGBA)
++    png:IHDR.interlace_method: 1 (Adam7 method)
++    png:IHDR.width,height: 1920, 1080
++    png:pHYs: x_res=2835, y_res=2835, units=1
++    png:sRGB: intent=0 (Perceptual Intent)
++    png:tIME: 2016-08-02T01:56:19Z
++    signature: 6e197070d4a6309391194ab16ff6e0574063792cf5b86777f944fae85b101d7e
++  Artifacts:
++    filename: contrib/keybase/pagerMode.png
++    verbose: true
++  Tainted: False
++  Filesize: 128KB
++  Number pixels: 2.074M
++  Pixels per second: 518.4GB
++  User time: 0.000u
++  Elapsed time: 0:01.000
++  Version: ImageMagick 6.9.3-0 Q16 x86_64 2016-02-03 http://www.imagemagick.org
+diff --git a/contrib/keybase/pgpdecrypt.sh b/contrib/keybase/pgpdecrypt.sh
+new file mode 100755
+index 0000000..e36e5fe
+--- /dev/null
++++ b/contrib/keybase/pgpdecrypt.sh
+@@ -0,0 +1,3 @@
++#! /usr/bin/bash
++
++gawk '/BEGIN/{y=1}y' | keybase pgp decrypt
+diff --git a/contrib/keybase/pgpverify.sh b/contrib/keybase/pgpverify.sh
+new file mode 100755
+index 0000000..ebacffb
+--- /dev/null
++++ b/contrib/keybase/pgpverify.sh
+@@ -0,0 +1,2 @@
++#! /usr/bin/bash
++gawk '/BEGIN/{y=1}y' | keybase pgp verify
+diff --git a/contrib/keybase/verify.sh b/contrib/keybase/verify.sh
+new file mode 100755
+index 0000000..c9813eb
+--- /dev/null
++++ b/contrib/keybase/verify.sh
+@@ -0,0 +1,2 @@
++#! /usr/bin/bash
++sed -n 's/^.*BEGIN KEYBASE/BEGIN KEYBASE/p' | keybase verify
 diff --git a/contrib/vim-keybindings/README.md b/contrib/vim-keybindings/README.md
 new file mode 100644
 index 0000000..2beeb08
@@ -7673,7 +8105,7 @@ index 3178f22..2145946 100644
      {
        k = (k == (size_t)(-1)) ? 1 : n;
 diff --git a/curs_main.c b/curs_main.c
-index a76aac9..54c61d9 100644
+index a76aac9..646097d 100644
 --- a/curs_main.c
 +++ b/curs_main.c
 @@ -22,12 +22,18 @@
@@ -8049,7 +8481,19 @@ index a76aac9..54c61d9 100644
        else if (option (OPTBRAILLEFRIENDLY))
  	move (menu->current - menu->top + menu->offset, 0);
        else
-@@ -758,6 +1026,14 @@ int mutt_index_menu (void)
+@@ -681,8 +949,10 @@ int mutt_index_menu (void)
+ 
+       dprint(4, (debugfile, "mutt_index_menu[%d]: Got op %d\n", __LINE__, op));
+ 
+-      if (op == -1)
++      if (op == -1) {
++        mutt_timeout_hook();
+ 	continue; /* either user abort or timeout */
++      }
+ 
+       mutt_curs_set (1);
+ 
+@@ -758,6 +1028,14 @@ int mutt_index_menu (void)
        mutt_curs_set (1);	/* fallback from the pager */
      }
  
@@ -8064,7 +8508,7 @@ index a76aac9..54c61d9 100644
      switch (op)
      {
  
-@@ -808,6 +1084,161 @@ int mutt_index_menu (void)
+@@ -808,6 +1086,161 @@ int mutt_index_menu (void)
  	menu_current_bottom (menu);
  	break;
  
@@ -8226,7 +8670,7 @@ index a76aac9..54c61d9 100644
        case OP_JUMP:
  
  	CHECK_MSGCOUNT;
-@@ -904,12 +1335,35 @@ int mutt_index_menu (void)
+@@ -904,12 +1337,35 @@ int mutt_index_menu (void)
  	}
          break;
  
@@ -8263,7 +8707,7 @@ index a76aac9..54c61d9 100644
  	{
  	  if (menu->oldcurrent >= 0)
  	  {
-@@ -1150,19 +1604,172 @@ int mutt_index_menu (void)
+@@ -1150,19 +1606,172 @@ int mutt_index_menu (void)
  	  menu->redraw = REDRAW_FULL;
  	break;
  
@@ -8306,8 +8750,7 @@ index a76aac9..54c61d9 100644
 +			mutt_sort_headers (Context, 0);
 +		menu->current = oldcur->virtual;
 +		menu->redraw = REDRAW_STATUS | REDRAW_INDEX;
- 
--	/* fallback to the readonly case */
++
 +		if (oldcur->collapsed || Context->collapsed) {
 +			menu->current = mutt_uncollapse_thread(Context, CURHDR);
 +			mutt_set_virtual(Context);
@@ -8341,7 +8784,7 @@ index a76aac9..54c61d9 100644
 +	  char msgbuf[STRING];
 +	  progress_t progress;
 +	  int px;
- 
++
 +	  if (!Context->quiet) {
 +	    snprintf(msgbuf, sizeof (msgbuf), _("Update labels..."));
 +	    mutt_progress_init(&progress, msgbuf, M_PROGRESS_MSG,
@@ -8395,7 +8838,8 @@ index a76aac9..54c61d9 100644
 +	menu->redraw |= REDRAW_STATUS;
 +	break;
 +      }
-+
+ 
+-	/* fallback to the readonly case */
 +      case OP_MAIN_VFOLDER_FROM_QUERY:
 +	buf[0] = '\0';
 +        if (mutt_get_field ("Query: ", buf, sizeof (buf), M_NM_QUERY) != 0 || !buf[0])
@@ -8408,7 +8852,7 @@ index a76aac9..54c61d9 100644
 +	else
 +	  main_change_folder(menu, op, buf, sizeof (buf), &oldcount, &index_hint, 0);
 +	break;
-+
+ 
 +      case OP_MAIN_CHANGE_VFOLDER:
 +#endif
 +#ifdef USE_SIDEBAR
@@ -8443,7 +8887,7 @@ index a76aac9..54c61d9 100644
            cp = _("Open mailbox");
  
  	buf[0] = '\0';
-@@ -1177,82 +1784,76 @@ int mutt_index_menu (void)
+@@ -1177,82 +1786,76 @@ int mutt_index_menu (void)
  	    break;
  	  }
  	}
@@ -8582,7 +9026,7 @@ index a76aac9..54c61d9 100644
  	break;
  
        case OP_DISPLAY_MESSAGE:
-@@ -1316,6 +1917,7 @@ int mutt_index_menu (void)
+@@ -1316,6 +1919,7 @@ int mutt_index_menu (void)
  	CHECK_MSGCOUNT;
          CHECK_VISIBLE;
  	CHECK_READONLY;
@@ -8590,7 +9034,7 @@ index a76aac9..54c61d9 100644
  
          if ((Sort & SORT_MASK) != SORT_THREADS)
  	  mutt_error _("Threading is not enabled.");
-@@ -1351,7 +1953,7 @@ int mutt_index_menu (void)
+@@ -1351,7 +1955,7 @@ int mutt_index_menu (void)
          CHECK_VISIBLE;
  	CHECK_READONLY;
          /* L10N: CHECK_ACL */
@@ -8599,7 +9043,7 @@ index a76aac9..54c61d9 100644
  
          if ((Sort & SORT_MASK) != SORT_THREADS)
  	  mutt_error _("Threading is not enabled.");
-@@ -1919,6 +2521,7 @@ int mutt_index_menu (void)
+@@ -1919,6 +2523,7 @@ int mutt_index_menu (void)
  	MAYBE_REDRAW (menu->redraw);
  	break;
  
@@ -8607,7 +9051,7 @@ index a76aac9..54c61d9 100644
        case OP_DELETE:
  
  	CHECK_MSGCOUNT;
-@@ -1930,6 +2533,7 @@ int mutt_index_menu (void)
+@@ -1930,6 +2535,7 @@ int mutt_index_menu (void)
  	if (tag)
  	{
  	  mutt_tag_set_flag (M_DELETE, 1);
@@ -8615,7 +9059,7 @@ index a76aac9..54c61d9 100644
  	  if (option (OPTDELETEUNTAG))
  	    mutt_tag_set_flag (M_TAG, 0);
  	  menu->redraw = REDRAW_INDEX;
-@@ -1937,6 +2541,8 @@ int mutt_index_menu (void)
+@@ -1937,6 +2543,8 @@ int mutt_index_menu (void)
  	else
  	{
  	  mutt_set_flag (Context, CURHDR, M_DELETE, 1);
@@ -8624,7 +9068,7 @@ index a76aac9..54c61d9 100644
  	  if (option (OPTDELETEUNTAG))
  	    mutt_set_flag (Context, CURHDR, M_TAG, 0);
  	  if (option (OPTRESOLVE))
-@@ -1984,6 +2590,20 @@ int mutt_index_menu (void)
+@@ -1984,6 +2592,20 @@ int mutt_index_menu (void)
  	}
  	break;
  
@@ -8645,7 +9089,7 @@ index a76aac9..54c61d9 100644
        case OP_DISPLAY_ADDRESS:
  
  	CHECK_MSGCOUNT;
-@@ -2045,6 +2665,21 @@ int mutt_index_menu (void)
+@@ -2045,6 +2667,21 @@ int mutt_index_menu (void)
  	menu->redraw = REDRAW_FULL;
  	break;
  
@@ -8667,7 +9111,7 @@ index a76aac9..54c61d9 100644
        case OP_LIST_REPLY:
  
  	CHECK_ATTACH;
-@@ -2190,6 +2825,39 @@ int mutt_index_menu (void)
+@@ -2190,6 +2827,39 @@ int mutt_index_menu (void)
          menu->redraw = REDRAW_FULL;
          break;
  
@@ -8707,7 +9151,7 @@ index a76aac9..54c61d9 100644
        case OP_REPLY:
  
  	CHECK_ATTACH;
-@@ -2242,11 +2910,13 @@ int mutt_index_menu (void)
+@@ -2242,11 +2912,13 @@ int mutt_index_menu (void)
  	if (tag)
  	{
  	  mutt_tag_set_flag (M_DELETE, 0);
@@ -8721,7 +9165,7 @@ index a76aac9..54c61d9 100644
  	  if (option (OPTRESOLVE) && menu->current < Context->vcount - 1)
  	  {
  	    menu->current++;
-@@ -2268,9 +2938,11 @@ int mutt_index_menu (void)
+@@ -2268,9 +2940,11 @@ int mutt_index_menu (void)
  	CHECK_ACL(M_ACL_DELETE, _("Cannot undelete message(s)"));
  
  	rc = mutt_thread_set_flag (CURHDR, M_DELETE, 0,
@@ -8735,7 +9179,7 @@ index a76aac9..54c61d9 100644
  	{
  	  if (option (OPTRESOLVE))
  	  {
-@@ -2310,11 +2982,35 @@ int mutt_index_menu (void)
+@@ -2310,11 +2984,35 @@ int mutt_index_menu (void)
  	mutt_what_key();
  	break;
  
@@ -8772,10 +9216,18 @@ index a76aac9..54c61d9 100644
      {
        menu->menu = MENU_MAIN;
 diff --git a/doc/Makefile.am b/doc/Makefile.am
-index bc8f856..cd633dc 100644
+index bc8f856..68bc384 100644
 --- a/doc/Makefile.am
 +++ b/doc/Makefile.am
-@@ -37,7 +37,8 @@ EXTRA_DIST = dotlock.man		\
+@@ -14,7 +14,6 @@ noinst_PROGRAMS = makedoc
+ 
+ EXTRA_DIST = dotlock.man		\
+         smime_keys.man                  \
+-	muttbug.man			\
+ 	mutt.man			\
+ 	pgpewrap.man			\
+ 	pgpring.man			\
+@@ -37,7 +36,8 @@ EXTRA_DIST = dotlock.man		\
  
  CHUNKED_DOCFILES = index.html intro.html gettingstarted.html \
  	configuration.html mimesupport.html advancedusage.html \
@@ -8785,17 +9237,55 @@ index bc8f856..cd633dc 100644
  
  HTML_DOCFILES = manual.html $(CHUNKED_DOCFILES)
  
-@@ -189,8 +190,8 @@ smime_keys.1: $(srcdir)/smime_keys.man
+@@ -46,8 +46,15 @@ BUILT_DISTFILES = stamp-doc-xml stamp-doc-chunked manual.txt $(HTML_DOCFILES)
+ srcdir_DOCFILES = PGP-Notes.txt applying-patches.txt	\
+ 	devel-notes.txt patch-notes.txt smime-notes.txt
+ 
+-topsrcdir_DOCFILES = COPYRIGHT GPL INSTALL ChangeLog	\
+-	README NEWS TODO README.SECURITY README.SSL 
++topsrcdir_DOCFILES = COPYRIGHT GPL INSTALL ChangeLog ChangeLog.neomutt	\
++	README NEWS TODO README.SECURITY README.SSL \
++	README.compress README.cond-date README.fmemopen README.ifdef \
++	README.index-color README.initials README.keywords \
++	README.limit-current-thread README.lmdb README.neomutt \
++	README.nested-if README.new-mail README.nntp README.notmuch \
++	README.progress README.quasi-delete README.sidebar README.skip-quoted \
++	README.smime-encrypt-self README.status-color README.tls-sni \
++	README.trash
+ 
+ all: makedoc-all
+ 
+@@ -61,8 +68,6 @@ install-data-local: makedoc-all instdoc
+ 	./instdoc smime_keys.1 $(DESTDIR)$(mandir)/man1/smime_keys.1
+ 	./instdoc pgpewrap.1 $(DESTDIR)$(mandir)/man1/pgpewrap.1
+ 	./instdoc pgpring.1 $(DESTDIR)$(mandir)/man1/pgpring.1
+-	./instdoc $(srcdir)/muttbug.man $(DESTDIR)$(mandir)/man1/flea.1
+-	./instdoc $(srcdir)/muttbug.man $(DESTDIR)$(mandir)/man1/muttbug.1
+ 	test x$(DOTLOCK_TARGET) = x || ./instdoc $(srcdir)/dotlock.man \
+ 		$(DESTDIR)$(mandir)/man1/mutt_dotlock.1
+ 	./instdoc muttrc.man $(DESTDIR)$(mandir)/man5/muttrc.5
+@@ -89,7 +94,7 @@ install-data-local: makedoc-all instdoc
+ 	fi
+ 
+ uninstall-local:
+-	for f in mutt.1 mutt_dotlock.1 flea.1 muttbug.1 smime_keys.1 pgpewrap.1 pgpring.1; do \
++	for f in mutt.1 mutt_dotlock.1 smime_keys.1 pgpewrap.1 pgpring.1; do \
+ 		rm -f $(DESTDIR)$(mandir)/man1/$$f ; \
+ 	done
+ 	for f in muttrc.5 mbox.5 mmdf.5 ; do \
+@@ -189,9 +194,9 @@ smime_keys.1: $(srcdir)/smime_keys.man
  
  stamp-doc-xml: makedoc$(EXEEXT) $(top_srcdir)/init.h \
                 manual.xml.head $(top_srcdir)/functions.h $(top_srcdir)/OPS* manual.xml.tail \
 -               $(srcdir)/gen-map-doc $(top_srcdir)/VERSION $(top_srcdir)/ChangeLog
 -	( date=`head -n 1 $(top_srcdir)/ChangeLog | LC_ALL=C cut -d ' ' -f 1` && \
+-	  sed -e "s/@VERSION\@/`cat $(top_srcdir)/VERSION` ($$date)/" $(srcdir)/manual.xml.head && \
 +               $(srcdir)/gen-map-doc $(top_srcdir)/VERSION $(top_srcdir)/ChangeLog.neomutt
 +	( date=`head -n 1 $(top_srcdir)/ChangeLog.neomutt | LC_ALL=C cut -b 1-10` && \
- 	  sed -e "s/@VERSION\@/`cat $(top_srcdir)/VERSION` ($$date)/" $(srcdir)/manual.xml.head && \
++	  sed -e "s/@VERSION\@/`$(top_srcdir)/version.sh` ($$date)/" $(srcdir)/manual.xml.head && \
  	  $(MAKEDOC_CPP) $(top_srcdir)/init.h | ./makedoc$(EXEEXT) -s && \
  	  $(MAKEDOC_CPP) $(top_srcdir)/functions.h | \
+ 	    perl $(srcdir)/gen-map-doc $(srcdir)/manual.xml.tail $(top_srcdir)/OPS* \
 diff --git a/doc/Muttrc.head b/doc/Muttrc.head
 index 1f7012e..69e27ca 100644
 --- a/doc/Muttrc.head
@@ -8839,10 +9329,10 @@ index 8f1a349..ac6cd33 100644
 +# endif
  #endif
 diff --git a/doc/manual.xml.head b/doc/manual.xml.head
-index b90908f..92919e6 100644
+index b90908f..b6cd0b3 100644
 --- a/doc/manual.xml.head
 +++ b/doc/manual.xml.head
-@@ -405,6 +405,602 @@ attach to a message, select multiple files to attach and many more.
+@@ -405,6 +405,602 @@ <sect2 id="intro-browser">
  
  </sect2>
  
@@ -9445,7 +9935,7 @@ index b90908f..92919e6 100644
  <sect2 id="intro-help">
  <title>Help</title>
  
-@@ -539,7 +1135,7 @@ descriptions.
+@@ -539,7 +1135,7 @@ <table id="tab-keys-editor">
  <row><entry>^E or <End></entry><entry><literal><eol></literal></entry><entry>move to the end of the line</entry></row>
  <row><entry>^F or <Right></entry><entry><literal><forward-char></literal></entry><entry>move forward one char</entry></row>
  <row><entry>Esc F</entry><entry><literal><forward-word></literal></entry><entry>move forward one word</entry></row>
@@ -9454,7 +9944,99 @@ index b90908f..92919e6 100644
  <row><entry>^T</entry><entry><literal><complete-query></literal></entry><entry>complete address with query</entry></row>
  <row><entry>^K</entry><entry><literal><kill-eol></literal></entry><entry>delete to the end of the line</entry></row>
  <row><entry>Esc d</entry><entry><literal><kill-eow></literal></entry><entry>delete to the end of the word</entry></row>
-@@ -2642,7 +3238,7 @@ silently truncated at the screen width, and are not wrapped.
+@@ -1743,40 +2339,65 @@ <sect1 id="configuration-files">
+ <title>Location of Initialization Files</title>
+ 
+ <para>
+-While the default configuration (or <quote>preferences</quote>) make
+-Mutt usable right out of the box, it is often desirable to tailor Mutt
+-to suit your own tastes. When Mutt is first invoked, it will attempt to
+-read the <quote>system</quote> configuration file (defaults set by your
+-local system administrator), unless the <quote>-n</quote> <link
+-linkend="commandline">command line</link> option is specified.  This
+-file is typically <literal>/usr/local/share/mutt/Muttrc</literal> or
+-<literal>/etc/Muttrc</literal>. Mutt will next look for a file named
+-<literal>.muttrc</literal> in your home directory.  If this file does
+-not exist and your home directory has a subdirectory named
+-<literal>.mutt</literal>, Mutt tries to load a file named
+-<literal>.mutt/muttrc</literal>.
++  When Mutt starts up it looks for two configuration files -- a
++  <quote>system</quote> file and a <quote>user</quote> file.
++</para>
++
++<para>
++  Mutt will search for a system config file in several places.  The filenames
++  may depend on the version number of Mutt.  Mutt will read just one file, the
++  first file it finds, from the list below.
++</para>
++
++<para>
++  The system config file will not be read if the <quote>-n</quote>
++  option is used on the <link linkend="commandline">command line</link>.
+ </para>
+ 
++<table id="system-muttrc">
++  <title>Mutt system config file locations</title>
++  <tgroup cols="1">
++    <thead>
++      <row><entry>File Location</entry></row>
++    </thead>
++    <tbody>
++      <row><entry>/etc/NeoMuttrc</entry></row>
++      <row><entry>/etc/Muttrc-1.6.2-neo</entry></row>
++      <row><entry>/etc/Muttrc</entry></row>
++      <row><entry>/share/mutt/Muttrc-1.6.2-neo</entry></row>
++      <row><entry>/share/mutt/Muttrc</entry></row>
++    </tbody>
++  </tgroup>
++</table>
++
+ <para>
+-<literal>.muttrc</literal> is the file where you will usually place your
+-<link linkend="commands">commands</link> to configure Mutt.
++  Mutt will search for a user config file in several places in your home
++  directory.  The filenames may depend on the version number of Mutt.  Mutt
++  will read just one file, the first file it finds, from the list below.
+ </para>
+ 
+ <para>
+-In addition, Mutt supports version specific configuration files that are
+-parsed instead of the default files as explained above.  For instance,
+-if your system has a <literal>Muttrc-0.88</literal> file in the system
+-configuration directory, and you are running version 0.88 of Mutt, this
+-file will be sourced instead of the <literal>Muttrc</literal> file.  The
+-same is true of the user configuration file, if you have a file
+-<literal>.muttrc-0.88.6</literal> in your home directory, when you run
+-Mutt version 0.88.6, it will source this file instead of the default
+-<literal>.muttrc</literal> file.  The version number is the same which
+-is visible using the <quote>-v</quote> <link
+-linkend="commandline">command line</link> switch or using the
+-<literal>show-version</literal> key (default: V) from the index menu.
++  You may specify your own location for the user config file using the 
++  <quote>-F</quote> option on the <link linkend="commandline">command line</link>.
+ </para>
+ 
++<table id="user-muttrc">
++  <title>Mutt user config file locations</title>
++  <tgroup cols="1">
++    <thead>
++      <row><entry>File Location</entry></row>
++    </thead>
++    <tbody>
++      <row><entry>~/.neomuttrc</entry></row>
++      <row><entry>~/.mutt/neomuttrc</entry></row>
++      <row><entry>~/.muttrc-1.6.2-neo</entry></row>
++      <row><entry>~/.muttrc</entry></row>
++      <row><entry>~/.mutt/muttrc-1.6.2-neo</entry></row>
++      <row><entry>~/.mutt/muttrc</entry></row>
++    </tbody>
++  </tgroup>
++</table>
++
+ </sect1>
+ 
+ <sect1 id="muttrc-syntax" xreflabel="Syntax of Initialization Files">
+@@ -2642,7 +3263,7 @@ <sect1 id="color">
  
  <command>color</command>
  <arg choice="plain">
@@ -9463,7 +10045,7 @@ index b90908f..92919e6 100644
  </arg>
  <arg choice="plain">
  <replaceable class="parameter">foreground</replaceable>
-@@ -2657,7 +3253,7 @@ silently truncated at the screen width, and are not wrapped.
+@@ -2657,7 +3278,7 @@ <sect1 id="color">
  <command>uncolor</command>
  <group choice="req">
  <arg choice="plain">
@@ -9472,7 +10054,7 @@ index b90908f..92919e6 100644
  </arg>
  <arg choice="plain">
  <option>header</option>
-@@ -2687,8 +3283,8 @@ specify one or the other).
+@@ -2687,8 +3308,8 @@ <sect1 id="color">
  <para>
  <emphasis>header</emphasis> and <emphasis>body</emphasis> match
  <emphasis>regexp</emphasis> in the header/body of a message,
@@ -9483,7 +10065,7 @@ index b90908f..92919e6 100644
  server-side searches (=b, =B, =h) are not supported for color index
  patterns.
  </para>
-@@ -2702,10 +3298,19 @@ patterns.
+@@ -2702,10 +3323,19 @@ <sect1 id="color">
  <listitem><para>bold (highlighting bold patterns in the body of messages)</para></listitem>
  <listitem><para>error (error messages printed by Mutt)</para></listitem>
  <listitem><para>hdrdefault (default color of the message header in the pager)</para></listitem>
@@ -9503,7 +10085,7 @@ index b90908f..92919e6 100644
  <listitem><para>prompt</para></listitem>
  <listitem><para>quoted (text matching <link linkend="quote-regexp">$quote_regexp</link> in the body of a message)</para></listitem>
  <listitem><para>quoted1, quoted2, ..., quoted<emphasis>N</emphasis> (higher levels of quoting)</para></listitem>
-@@ -2717,6 +3322,24 @@ patterns.
+@@ -2717,6 +3347,24 @@ <sect1 id="color">
  </itemizedlist>
  
  <para>
@@ -9528,7 +10110,7 @@ index b90908f..92919e6 100644
  <emphasis>foreground</emphasis> and <emphasis>background</emphasis> can
  be one of the following:
  </para>
-@@ -2833,7 +3456,7 @@ command. Usage:
+@@ -2833,7 +3481,7 @@ <sect1 id="color">
  <command>unmono</command>
  <group choice="req">
  <arg choice="plain">
@@ -9537,7 +10119,7 @@ index b90908f..92919e6 100644
  </arg>
  <arg choice="plain">
  <option>header</option>
-@@ -4532,8 +5155,8 @@ Mutt adds some other modifiers to format strings. If you use an equals
+@@ -4532,8 +5180,8 @@ <sect2 id="formatstrings-basics">
  symbol (<literal>=</literal>) as a numeric prefix (like the minus
  above), it will force the string to be centered within its minimum space
  range. For example, <literal>%=14y</literal> will reserve 14 characters
@@ -9548,7 +10130,7 @@ index b90908f..92919e6 100644
  a string less than 14 characters, it will be centered in a 14-character
  space.  If the X-Label for a message were <quote>test</quote>, that
  expansion would look like
-@@ -4595,6 +5218,18 @@ If the value of <emphasis>sequence_char</emphasis> is non-zero,
+@@ -4595,6 +5243,18 @@ <sect2 id="formatstrings-conditionals">
  <emphasis>else_string</emphasis> will be expanded.
  </para>
  
@@ -9567,7 +10149,7 @@ index b90908f..92919e6 100644
  </sect2>
  
  <sect2 id="formatstrings-filters">
-@@ -4701,6 +5336,27 @@ set index_format="%4C %Z %{%b %d} %-15.15L (%?l?%4l&%4c?)%*  %s"</screen>
+@@ -4701,6 +5361,27 @@ <sect2 id="formatstrings-padding">
  
  </sect2>
  
@@ -9595,7 +10177,7 @@ index b90908f..92919e6 100644
  </sect1>
  
  <sect1 id="mailto-allow">
-@@ -5126,7 +5782,7 @@ shows several ways to select messages.
+@@ -5126,7 +5807,7 @@ <table id="tab-patterns">
  <row><entry>~V</entry><entry>cryptographically verified messages</entry></row>
  <row><entry>~x <emphasis>EXPR</emphasis></entry><entry>messages which contain <emphasis>EXPR</emphasis> in the <quote>References</quote> or <quote>In-Reply-To</quote> field</entry></row>
  <row><entry>~X [<emphasis>MIN</emphasis>]-[<emphasis>MAX</emphasis>]</entry><entry>messages with <emphasis>MIN</emphasis> to <emphasis>MAX</emphasis> attachments *)</entry></row>
@@ -9604,7 +10186,7 @@ index b90908f..92919e6 100644
  <row><entry>~z [<emphasis>MIN</emphasis>]-[<emphasis>MAX</emphasis>]</entry><entry>messages with a size in the range <emphasis>MIN</emphasis> to <emphasis>MAX</emphasis> *) **)</entry></row>
  <row><entry>~=</entry><entry>duplicated messages (see <link linkend="duplicate-threads">$duplicate_threads</link>)</entry></row>
  <row><entry>~$</entry><entry>unreferenced messages (requires threaded view)</entry></row>
-@@ -5521,12 +6177,24 @@ option/command.  See:
+@@ -5521,12 +6202,24 @@ <sect1 id="hooks">
  
  <listitem>
  <para>
@@ -9629,7 +10211,7 @@ index b90908f..92919e6 100644
  <link linkend="crypt-hook"><command>crypt-hook</command></link>
  </para>
  </listitem>
-@@ -5569,6 +6237,12 @@ option/command.  See:
+@@ -5569,6 +6262,12 @@ <sect1 id="hooks">
  
  <listitem>
  <para>
@@ -9642,7 +10224,7 @@ index b90908f..92919e6 100644
  <link linkend="reply-hook"><command>reply-hook</command></link>
  </para>
  </listitem>
-@@ -5978,18 +6652,6 @@ field.  When set to <emphasis>yes</emphasis>, the
+@@ -5978,18 +6677,6 @@ <sect1 id="using-lists">
  </para>
  
  <para>
@@ -9661,7 +10243,7 @@ index b90908f..92919e6 100644
  Lastly, Mutt has the ability to <link linkend="sort">sort</link> the
  mailbox into <link linkend="threads">threads</link>.  A thread is a
  group of messages which all relate to the same subject.  This is usually
-@@ -6002,6 +6664,121 @@ threads and quickly find topics of value.
+@@ -6002,6 +6689,121 @@ <sect1 id="using-lists">
  
  </sect1>
  
@@ -9783,7 +10365,7 @@ index b90908f..92919e6 100644
  <sect1 id="new-mail">
  <title>New Mail Detection</title>
  
-@@ -6047,7 +6824,10 @@ New mail for Maildir is assumed if there is one message in the
+@@ -6047,7 +6849,10 @@ <sect2 id="new-mail-formats">
  <link linkend="maildir-trash">$maildir_trash</link>). For MH folders, a
  mailbox is considered having new mail if there's at least one message in
  the <quote>unseen</quote> sequence as specified by <link
@@ -9795,7 +10377,7 @@ index b90908f..92919e6 100644
  </para>
  
  <para>
-@@ -6062,6 +6842,14 @@ linkend="imap-idle">$imap_idle</link> option is set, it'll use the IMAP
+@@ -6062,6 +6867,14 @@ <sect2 id="new-mail-formats">
  IDLE extension if advertised by the server.
  </para>
  
@@ -9810,7 +10392,7 @@ index b90908f..92919e6 100644
  </sect2>
  
  <sect2 id="new-mail-polling">
-@@ -6110,6 +6898,26 @@ to immediately open the next folder with unread mail (if any).
+@@ -6110,6 +6923,26 @@ <sect2 id="new-mail-polling">
  
  </sect2>
  
@@ -9837,7 +10419,7 @@ index b90908f..92919e6 100644
  </sect1>
  
  <sect1 id="editing-threads">
-@@ -6773,6 +7581,17 @@ to display the results.
+@@ -6773,6 +7606,17 @@ <sect3 id="optional-mailcap-fields">
  </para>
  
  <para>
@@ -9855,7 +10437,7 @@ index b90908f..92919e6 100644
  Note that when using the built-in pager, <emphasis>only</emphasis>
  entries with this flag will be considered a handler for a MIME type
  — all other entries will be ignored.
-@@ -7467,6 +8286,16 @@ would contain:
+@@ -7467,6 +8311,16 @@ <sect2 id="compile-time-features">
  
  </sect2>
  
@@ -9872,7 +10454,7 @@ index b90908f..92919e6 100644
  <sect2 id="url-syntax">
  <title>URL Syntax</title>
  
-@@ -8081,6 +8910,4518 @@ please have a look at the mixmaster documentation.
+@@ -8081,6 +8935,4671 @@ <sect1 id="sending-mixmaster">
  
  </sect1>
  
@@ -9894,6 +10476,11 @@ index b90908f..92919e6 100644
 +      <listitem><para>mutt-1.6.2</para></listitem>
 +    </itemizedlist>
 +
++    <para>
++      This patch can be disabled by running <literal>configure</literal> with
++      the option <literal>--disable-fmemopen</literal>
++    </para>
++
 +    <para>This patch is part of the <ulink url="http://www.neomutt.org/">NeoMutt Project</ulink>.</para>
 +  </sect2>
 +
@@ -10225,7 +10812,7 @@ index b90908f..92919e6 100644
 +    <title>See Also</title>
 +
 +    <itemizedlist>
-+      <listitem><para><ulink url="https://github.com/neomutt/neomutt/wiki">NeoMutt Project</ulink></para></listitem>
++      <listitem><para><ulink url="http://www.neomutt.org/">NeoMutt Project</ulink></para></listitem>
 +      <listitem><para><link linkend="compile-time-features">Compile-Time Features</link></para></listitem>
 +      <listitem><para><link linkend="regexp">Regular Expressions</link></para></listitem>
 +      <listitem><para><link linkend="tmpdir">$tmpdir</link></para></listitem>
@@ -10609,7 +11196,7 @@ index b90908f..92919e6 100644
 +  <sect2 id="cond-date-muttrc">
 +    <title>Muttrc</title>
 +<screen>
-+<emphasis role="comment"># Example Mutt config file for the 'index-color' feature.
++<emphasis role="comment"># Example Mutt config file for the 'cond-date' feature.
 +#
 +# The default index_format is:
 +#       '%4C %Z %{%b %d} %-15.15L (%?l?%4l&%4c?) %s'
@@ -11491,7 +12078,7 @@ index b90908f..92919e6 100644
 +    <title>See Also</title>
 +
 +    <itemizedlist>
-+      <listitem><para><ulink url="https://github.com/neomutt/neomutt/wiki">NeoMutt Project</ulink></para></listitem>
++      <listitem><para><ulink url="http://www.neomutt.org/">NeoMutt Project</ulink></para></listitem>
 +      <listitem><para><link linkend="index-format">$index_format</link></para></listitem>
 +      <listitem><para><link linkend="index-color">index-color patch</link></para></listitem>
 +      <listitem><para><link linkend="folder-hook">folder-hook</link></para></listitem>
@@ -11687,6 +12274,72 @@ index b90908f..92919e6 100644
 +  </sect2>
 +</sect1>
 +
++<sect1 id="multiple-fcc">
++  <title>multiple-fcc Patch</title>
++  <subtitle>Save multiple copies of outgoing mail</subtitle>
++
++  <sect2 id="multiple-fcc-patch">
++    <title>Patch</title>
++
++    <para>
++      To check if Mutt supports <quote>multiple-fcc</quote>, look for
++      <quote>patch-multiple-fcc</quote> in the mutt version.
++      See: <xref linkend="mutt-patches"/>.
++    </para>
++
++    <itemizedlist>
++      <title>Dependencies:</title>
++      <listitem><para>mutt-1.6.2</para></listitem>
++    </itemizedlist>
++
++    <para>This patch is part of the <ulink url="http://www.neomutt.org/">NeoMutt Project</ulink>.</para>
++  </sect2>
++
++  <sect2 id="multiple-fcc-intro">
++    <title>Introduction</title>
++
++    <para>
++      This patch allows the user to save outgoing emails in multiple folders.
++    </para>
++
++    <para>
++      Folders should be listed separated by commas, <emphasis role="bold">but no spaces</emphasis>.
++    </para>
++
++    <para>
++      The <quote>fcc</quote> field of an email can be set in two ways:
++    </para>
++
++    <itemizedlist>
++      <listitem><para>The <edit-fcc> command in the compose menu (default key: <quote>f</quote>)</para></listitem>
++      <listitem><para>Creating a <literal>fcc-hook</literal> in your <literal>.muttrc</literal></para></listitem>
++    </itemizedlist>
++  </sect2>
++
++  <sect2 id="multiple-fcc-see-also">
++    <title>See Also</title>
++
++    <itemizedlist>
++      <listitem><para><ulink url="http://www.neomutt.org/">NeoMutt Project</ulink></para></listitem>
++      <listitem><para><link linkend="record">$record</link></para></listitem>
++      <listitem><para><link linkend="fcc-hook">fcc-hook</link></para></listitem>
++    </itemizedlist>
++  </sect2>
++
++  <sect2 id="multiple-fcc-known-bugs">
++    <title>Known Bugs</title>
++    <para>None</para>
++  </sect2>
++
++  <sect2 id="multiple-fcc-credits">
++    <title>Credits</title>
++    <itemizedlist>
++    <listitem><para>Omen Wild <email>omen at mandarb.com</email></para></listitem>
++    <listitem><para>Richard Russon <email>rich at flatcap.org</email></para></listitem>
++    </itemizedlist>
++  </sect2>
++</sect1>
++
 +<sect1 id="nested-if">
 +  <title>Nested If Patch</title>
 +  <subtitle>Allow complex nested conditions in format strings</subtitle>
@@ -14108,6 +14761,88 @@ index b90908f..92919e6 100644
 +  </sect2>
 +</sect1>
 +
++<sect1 id="timeout-hook">
++  <title>Timeout Patch</title>
++  <subtitle>Run a command periodically</subtitle>
++
++  <sect2 id="timeout-patch">
++    <title>Patch</title>
++
++    <para>
++      To check if Mutt supports <quote>timeout</quote>, look for
++      <quote>patch-timeout</quote> in the mutt version.
++      See: <xref linkend="mutt-patches"/>.
++    </para>
++
++    <itemizedlist>
++      <title>Dependencies:</title>
++      <listitem><para>mutt-1.6.2</para></listitem>
++    </itemizedlist>
++
++    <para>This patch is part of the <ulink url="http://www.neomutt.org/">NeoMutt Project</ulink>.</para>
++  </sect2>
++
++  <sect2 id="timeout-intro">
++    <title>Introduction</title>
++
++    <para>
++      This patch implements a new hook that is called periodically when Mutt
++      checks for new mail. This hook is called every <literal>$timeout</literal> seconds.
++    </para>
++  </sect2>
++
++  <sect2 id="timeout-commands">
++    <title>Commands</title>
++    <cmdsynopsis>
++      <command>timeout-hook</command>
++      <arg choice="plain">
++        <replaceable class="parameter">.</replaceable>
++      </arg>
++      <arg choice="plain">
++        <replaceable class="parameter">MUTT-COMMAND</replaceable>
++      </arg>
++    </cmdsynopsis>
++  </sect2>
++
++  <sect2 id="timeout-muttrc">
++    <title>Muttrc</title>
++<screen>
++<emphasis role="comment"># This is a complete list of timeout configuration.
++
++# --------------------------------------------------------------------------
++# COMMANDS - shown with an example arguments
++# --------------------------------------------------------------------------
++
++# After $timeout seconds of inactivity, run this mutt command</emphasis>
++timeout-hook . 'exec sync-mailbox'
++
++<emphasis role="comment"># vim: syntax=muttrc</emphasis>
++</screen>
++  </sect2>
++
++  <sect2 id="timeout-see-also">
++    <title>See Also</title>
++
++    <itemizedlist>
++      <listitem><para><ulink url="http://www.neomutt.org/">NeoMutt Project</ulink></para></listitem>
++      <listitem><para><link linkend="timeout">$timeout</link></para></listitem>
++    </itemizedlist>
++  </sect2>
++
++  <sect2 id="timeout-known-bugs">
++    <title>Known Bugs</title>
++    <para>None</para>
++  </sect2>
++
++  <sect2 id="timeout-credits">
++    <title>Credits</title>
++    <itemizedlist>
++    <listitem><para>Armin Wolfermann <email>armin at wolfermann.org</email></para></listitem>
++    <listitem><para>Richard Russon <email>rich at flatcap.org</email></para></listitem>
++    </itemizedlist>
++  </sect2>
++</sect1>
++
 +<sect1 id="tls-sni">
 +  <title>TLS-SNI Patch</title>
 +  <subtitle>Negotiate with a server for a TSL/SSL certificate</subtitle>
@@ -14391,7 +15126,7 @@ index b90908f..92919e6 100644
  </chapter>
  
  <chapter id="security">
-@@ -8623,6 +13964,18 @@ The following are the commands understood by Mutt:
+@@ -8623,6 +14142,18 @@ <sect1 id="commands">
  
  <listitem>
  <cmdsynopsis>
@@ -14410,7 +15145,7 @@ index b90908f..92919e6 100644
  <command><link linkend="auto-view">auto_view</link></command>
  <arg choice="plain">
  <replaceable>mimetype</replaceable>
-@@ -8684,6 +14037,18 @@ The following are the commands understood by Mutt:
+@@ -8684,6 +14215,18 @@ <sect1 id="commands">
  
  <listitem>
  <cmdsynopsis>
@@ -14429,7 +15164,7 @@ index b90908f..92919e6 100644
  <command><link linkend="color">color</link></command>
  <arg choice="plain">
  <replaceable class="parameter">object</replaceable>
-@@ -8753,6 +14118,18 @@ The following are the commands understood by Mutt:
+@@ -8753,6 +14296,18 @@ <sect1 id="commands">
  
  <listitem>
  <cmdsynopsis>
@@ -14448,7 +15183,7 @@ index b90908f..92919e6 100644
  <command><link linkend="crypt-hook">crypt-hook</link></command>
  <arg choice="plain">
  <replaceable class="parameter">regexp</replaceable>
-@@ -8874,6 +14251,18 @@ The following are the commands understood by Mutt:
+@@ -8874,6 +14429,18 @@ <sect1 id="commands">
  
  <listitem>
  <cmdsynopsis>
@@ -14467,7 +15202,7 @@ index b90908f..92919e6 100644
  <command><link linkend="ignore">ignore</link></command>
  <arg choice="plain">
  <replaceable class="parameter">pattern</replaceable>
-@@ -9237,6 +14626,17 @@ The following are the commands understood by Mutt:
+@@ -9237,6 +14804,17 @@ <sect1 id="commands">
  
  <listitem>
  <cmdsynopsis>
@@ -14545,6 +15280,212 @@ index d29294f..b5b7337 100644
  .IP "-h"
  Display help.
  .IP "-H \fIdraft\fP"
+diff --git a/doc/muttbug.man b/doc/muttbug.man
+deleted file mode 100644
+index 6b71c99..0000000
+--- a/doc/muttbug.man
++++ /dev/null
+@@ -1,200 +0,0 @@
+-.\" -*-nroff-*-
+-.\"
+-.\"
+-.\"     Copyright (C) 1996-2000 Thomas Roessler <roessler at does-not-exist.org>
+-.\" 
+-.\"     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 Free Software Foundation; either version 2 of the License, or
+-.\"     (at your option) any later version.
+-.\" 
+-.\"     This program is distributed in the hope that it will be useful,
+-.\"     but WITHOUT ANY WARRANTY; without even the implied warranty of
+-.\"     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+-.\"     GNU General Public License for more details.
+-.\" 
+-.\"     You should have received a copy of the GNU General Public License
+-.\"     along with this program; if not, write to the Free Software
+-.\"     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+-.\"
+-.TH flea 1 "July 2000" Unix "User Manuals"
+-.SH NAME
+-flea \- Report a bug (or rather a flea) in mutt.
+-.SH SYNOPSIS
+-.PP
+-.B flea
+-.SH DESCRIPTION
+-.PP
+-.B flea
+-is a shell script which helps you to submit a bug report against the 
+-.BR mutt (1)
+-mail user agent.
+-.PP
+-If you invoke 
+-.BR flea , 
+-you'll first be prompted for a short
+-description of the problem you experience.  This will be used as the
+-bug report's subject line, so it should be concise, but informative.
+-.PP
+-You are then asked to assign an initial severity level to the
+-problem you observe; 
+-.B flea
+-will give you a description which severity level is appropriate or
+-not.
+-.PP
+-Then, you are asked for the location of a core dump (normally named
+-.BR core )
+-which may have been left over by a crash of your 
+-.BR mutt (1).
+-You can just type \(lqno\(rq here, or you can enter the path leading 
+-to a core dump.
+-.B flea
+-will try to use either
+-.BR sdb (1),
+-.BR dbx (1),
+-or
+-.BR gdb (1)
+-to extract some information from this core dump which may be helpful
+-to developers in order to determine the reason for the crash.
+-.PP
+-Finally, you are asked whether or not you want to include personal
+-and system 
+-.BR mutt (1)
+-configuration files with the bug report.  If at all possible, we
+-urge you to answer these questions with \(lqyes\(rq, since a
+-reference configuration makes it incredibly easier to track down a
+-problem.
+-.PP
+-If you are using Debian GNU/Linux,
+-.B flea
+-will now check whether or not 
+-.B mutt
+-has been installed as a Debian
+-package on your system, and suggest to file the bug against the
+-.BR mutt (1)
+-and Debian bug tracking systems.  This option was added since the 
+-.BR mutt (1)
+-project uses another instantiation of the Debian bug tracking
+-system, so submitting bugs against both systems in one pass is
+-simple.
+-.PP
+-You are then dropped into your favorite editor as determined by the 
+-.B EDITOR
+-and
+-.B VISUAL
+-environment variables.  
+-.PP
+-Please give us details about the problem in the empty space below
+-the line reading \(lqPlease type your report below this line\(rq.
+-We are most interested in precise information on what symptoms you
+-observe and what steps may be used to reproduce the bug.  Chances
+-are that problems which can easily be reproduced will be fixed
+-quickly.  So please take some time when filling out this part of the
+-template.
+-.PP
+-The remainder of the template contains various kinds of information
+-gathered from your system, including output of the
+-.BR uname (1)
+-command, output from
+-.BR mutt (1)
+-itself, and your system's 
+-.BR mutt (1)
+-configuration files.  You may wish to browse through this part of
+-the bug report form in order to avoid leaking confidential
+-information to the public.
+-.PP
+-If you leave the editor, 
+-.B flea
+-will give you the option to review, re-edit, submit, or abandon your
+-bug report.  If you decide to submit it, a mail message containing
+-your report will be sent to <fleas at mutt.org>.  You'll receive a
+-copy of this message.
+-.PP
+-While your bug report is being processed by the bug tracking system,
+-you will receive various e-mail messages from the bug tracking
+-system informing you about what's going on: Once your bug report has
+-been entered into the bug tracking system, it will be assigned a
+-unique serial number about which you are informed via e-mail.  If
+-you wish to submit additional information about the bug, you can
+-just send it to the address
+-.BR fleas at mutt.org
+-with #\fIserial\fP in the subject.
+-.PP
+-Later, you will most likely receive questions from the developers
+-about the problem you observed, and you will eventually be informed
+-that your bug report has been closed.  This means that the bug has
+-been fixed at least in the
+-.BR hg (1)
+-repository.  If the answers you receive don't satisfy you, don't
+-hesitate to contact the developers directly under
+-.BR mutt-dev at mutt.org.
+-.PP
+-You can also browse your bug report and all additional information
+-and replies connected to it using the bug tracking system's Web
+-interface under the following URL:
+-http://bugs.mutt.org/
+-.SH
+-ENVIRONMENT
+-.PP
+-.B flea
+-will use the following environment variables:
+-.IP "EMAIL"
+-Your electronic mail address.  Will be used to set the bug report's
+-From header, and to send you a copy of the report.
+-.IP "LOGNAME"
+-Your login name.  If the
+-.B EMAIL
+-environment variable isn't set, this will be used instead to send
+-you a copy of the report.  Setting the sender will be left to 
+-.BR sendmail (1)
+-on your system.
+-.IP "REPLYTO"
+-If set, the bug report will contain a Reply-To header with the
+-e-mail address contained in this environment variable.
+-.IP "ORGANIZATION"
+-If set, the bug report will contain an Organization header with the
+-contents of this environment variable.
+-.IP "PAGER"
+-If set, this environment variable will be expected to contain the
+-path to your favorite pager for viewing the bug report.  If unset, 
+-.BR more (1)
+-will be used.
+-.IP "VISUAL"
+-If set, this environment variable will be expected to contain the
+-path to your favorite visual editor.
+-.IP "EDITOR"
+-If set, this environment variable will be expected to contain the
+-path to your favorite editor.  This variable is examined if and only
+-if the 
+-.B VISUAL
+-environment variable is unset.  If
+-.B EDITOR
+-is unset, 
+-.BR vi (1)
+-will be used to edit the bug report.
+-.SH
+-FILES
+-.PP
+-.IP "core"
+-If present, this file may contain a post-mortem memory dump of mutt.
+-It will be inspected using the debugger installed on your system.
+-.SH 
+-SEE ALSO
+-.PP
+-.BR dbx (1),
+-.BR gdb (1),
+-.BR lynx (1),
+-.BR mutt (1),
+-.BR muttrc (5),
+-.BR sdb (1),
+-.BR sendmail (1),
+-.BR uname (1),
+-.BR vi (1)
+-.PP
+-The mutt bug tracking system: http://bugs.mutt.org/
+-.SH
+-AUTHOR
+-.PP
+-.B flea
+-and this manual page were written by Thomas Roessler
+-<roessler at does-not-exist.org>.
 diff --git a/doc/muttrc.compress b/doc/muttrc.compress
 new file mode 100644
 index 0000000..ab6fe3c
@@ -14591,11 +15532,11 @@ index 0000000..ab6fe3c
 +# vim: syntax=muttrc
 diff --git a/doc/muttrc.cond-date b/doc/muttrc.cond-date
 new file mode 100644
-index 0000000..b580e4f
+index 0000000..30c28b9
 --- /dev/null
 +++ b/doc/muttrc.cond-date
 @@ -0,0 +1,16 @@
-+# Example Mutt config file for the 'index-color' feature.
++# Example Mutt config file for the 'cond-date' feature.
 +#
 +# The default index_format is:
 +#       '%4C %Z %{%b %d} %-15.15L (%?l?%4l&%4c?) %s'
@@ -15329,6 +16270,22 @@ index 0000000..9a1350c
 +# Search for 'Mutt: ' but only highlight what comes after it
 +
 +# vim: syntax=muttrc
+diff --git a/doc/muttrc.timeout b/doc/muttrc.timeout
+new file mode 100644
+index 0000000..911d92a
+--- /dev/null
++++ b/doc/muttrc.timeout
+@@ -0,0 +1,10 @@
++# This is a complete list of timeout configuration.
++
++# --------------------------------------------------------------------------
++# COMMANDS - shown with an example arguments
++# --------------------------------------------------------------------------
++
++# After $timeout seconds of inactivity, run this mutt command
++timeout-hook . 'exec sync-mailbox'
++
++# vim: syntax=muttrc
 diff --git a/doc/muttrc.trash b/doc/muttrc.trash
 new file mode 100644
 index 0000000..8ecf8f0
@@ -15586,6 +16543,17 @@ index 0000000..7fe9357
 +syntax keyword muttrcVarQuad    contained skipwhite muttrcVarQuad
 +
 +" vim: syntax=vim
+diff --git a/doc/vimrc.timeout b/doc/vimrc.timeout
+new file mode 100644
+index 0000000..d94c40a
+--- /dev/null
++++ b/doc/vimrc.timeout
+@@ -0,0 +1,5 @@
++" Vim syntax file for the mutt timeout patch
++
++syntax keyword muttrcCommand    timeout-hook
++
++" vim: syntax=vim
 diff --git a/doc/vimrc.trash b/doc/vimrc.trash
 new file mode 100644
 index 0000000..73b3137
@@ -16226,14 +17194,14 @@ index abefade..3e3e4da 100644
  
  
 diff --git a/handler.c b/handler.c
-index 4944d49..6068291 100644
+index 4944d49..91b93af 100644
 --- a/handler.c
 +++ b/handler.c
 @@ -1595,7 +1595,9 @@ static int run_decode_and_handler (BODY *b, STATE *s, handler_t handler, int pla
    int origType;
    char *savePrefix = NULL;
    FILE *fp = NULL;
-+#ifndef HAVE_FMEMOPEN
++#ifndef USE_FMEMOPEN
    char tempfile[_POSIX_PATH_MAX];
 +#endif
    size_t tmplength = 0;
@@ -16243,7 +17211,7 @@ index 4944d49..6068291 100644
  
    fseeko (s->fpin, b->offset, 0);
  
-+#ifdef HAVE_FMEMOPEN
++#ifdef USE_FMEMOPEN
 +  char *temp;
 +  size_t tempsize;
 +#endif
@@ -16255,7 +17223,7 @@ index 4944d49..6068291 100644
      {
        /* decode to a tempfile, saving the original destination */
        fp = s->fpout;
-+#ifdef HAVE_FMEMOPEN
++#ifdef USE_FMEMOPEN
 +     s->fpout = open_memstream (&temp, &tempsize);
 +     if (!s->fpout) {
 +       mutt_error _("Unable to open memory stream!");
@@ -16278,7 +17246,7 @@ index 4944d49..6068291 100644
        /* restore final destination and substitute the tempfile for input */
        s->fpout = fp;
        fp = s->fpin;
-+#ifdef HAVE_FMEMOPEN
++#ifdef USE_FMEMOPEN
 +      if (tempsize) {
 +        s->fpin = fmemopen (temp, tempsize, "r");
 +      } else { /* fmemopen cannot handle zero-length buffers */
@@ -16300,7 +17268,7 @@ index 4944d49..6068291 100644
  
        /* restore the original source stream */
        safe_fclose (&s->fpin);
-+#ifdef HAVE_FMEMOPEN
++#ifdef USE_FMEMOPEN
 +      if (tempsize)
 +        FREE(&temp);
 +#endif
@@ -17535,7 +18503,7 @@ index 0a75998..d1343ad 100644
 +  return dst;
 +}
 diff --git a/hook.c b/hook.c
-index a89b615..98c2f26 100644
+index a89b615..096e7d6 100644
 --- a/hook.c
 +++ b/hook.c
 @@ -24,6 +24,10 @@
@@ -17564,6 +18532,15 @@ index a89b615..98c2f26 100644
    else if (DefaultHook && !(data & (M_CHARSETHOOK | M_ICONVHOOK | M_ACCOUNTHOOK))
             && (!WithCrypto || !(data & M_CRYPTHOOK))
        )
+@@ -142,7 +154,7 @@ int mutt_parse_hook (BUFFER *buf, BUFFER *s, unsigned long data, BUFFER *err)
+ 	ptr->rx.not == not &&
+ 	!mutt_strcmp (pattern.data, ptr->rx.pattern))
+     {
+-      if (data & (M_FOLDERHOOK | M_SENDHOOK | M_SEND2HOOK | M_MESSAGEHOOK | M_ACCOUNTHOOK | M_REPLYHOOK | M_CRYPTHOOK))
++      if (data & (M_FOLDERHOOK | M_SENDHOOK | M_SEND2HOOK | M_MESSAGEHOOK | M_ACCOUNTHOOK | M_REPLYHOOK | M_CRYPTHOOK | M_TIMEOUTHOOK))
+       {
+ 	/* these hooks allow multiple commands with the same
+ 	 * pattern, so if we've already seen this pattern/command pair, just
 @@ -362,7 +374,7 @@ void mutt_message_hook (CONTEXT *ctx, HEADER *hdr, int type)
  
      if (hook->type & type)
@@ -17573,19 +18550,64 @@ index a89b615..98c2f26 100644
  	{
  	  FREE (&token.data);
  	  mutt_error ("%s", err.data);
+@@ -542,3 +554,32 @@ void mutt_account_hook (const char* url)
+   FREE (&err.data);
+ }
+ #endif
++
++void mutt_timeout_hook (void)
++{
++  HOOK *hook;
++  BUFFER token;
++  BUFFER err;
++  char buf[STRING];
++
++  err.data = buf;
++  err.dsize = sizeof (buf);
++  memset (&token, 0, sizeof (token));
++
++  for (hook = Hooks; hook; hook = hook->next)
++  {
++    if (!(hook->command && (hook->type & M_TIMEOUTHOOK)))
++      continue;
++
++    if (mutt_parse_rc_line (hook->command, &token, &err) == -1)
++    {
++      FREE (&token.data);
++      mutt_error ("%s", err.data);
++      mutt_sleep (1);
++
++      /* The hooks should be independent of each other, so even though this on
++       * failed, we'll carry on with the others. */
++    }
++  }
++}
++
 diff --git a/imap/command.c b/imap/command.c
-index d99a99a..b5c896d 100644
+index d99a99a..235e71a 100644
 --- a/imap/command.c
 +++ b/imap/command.c
-@@ -900,6 +900,7 @@ static void cmd_parse_status (IMAP_DATA* idata, char* s)
+@@ -900,6 +900,8 @@ static void cmd_parse_status (IMAP_DATA* idata, char* s)
    IMAP_STATUS *status;
    unsigned int olduv, oldun;
    long litlen;
 +  short new = 0;
++  short new_msg_count = 0;
  
    mailbox = imap_next_word (s);
  
-@@ -1000,16 +1001,26 @@ static void cmd_parse_status (IMAP_DATA* idata, char* s)
+@@ -939,7 +941,10 @@ static void cmd_parse_status (IMAP_DATA* idata, char* s)
+     count = strtol (value, &value, 10);
+ 
+     if (!ascii_strncmp ("MESSAGES", s, 8))
++    {
+       status->messages = count;
++      new_msg_count = 1;
++    }
+     else if (!ascii_strncmp ("RECENT", s, 6))
+       status->recent = count;
+     else if (!ascii_strncmp ("UIDNEXT", s, 7))
+@@ -1000,16 +1005,27 @@ static void cmd_parse_status (IMAP_DATA* idata, char* s)
  	  if (olduv && olduv == status->uidvalidity)
  	  {
  	    if (oldun < status->uidnext)
@@ -17611,7 +18633,8 @@ index d99a99a..b5c896d 100644
 +          SidebarNeedsRedraw = 1;
 +#endif
 +        inc->new = new;
-+        inc->msg_count  = status->messages;
++	if (new_msg_count)
++		inc->msg_count = status->messages;
 +        inc->msg_unread = status->unseen;
  
  	if (inc->new)
@@ -17819,7 +18842,7 @@ index 02a726f..3280f5d 100644
          mutt_set_flag (ctx, h, M_TAG, 0);
      }
 diff --git a/init.c b/init.c
-index 69e2f76..b22e8e9 100644
+index 69e2f76..e7b0bce 100644
 --- a/init.c
 +++ b/init.c
 @@ -32,12 +32,15 @@
@@ -18337,7 +19360,46 @@ index 69e2f76..b22e8e9 100644
    if ((p = getenv ("MAIL")))
      Spoolfile = safe_strdup (p);
    else if ((p = getenv ("MAILDIR")))
-@@ -3188,6 +3498,11 @@ void mutt_init (int skip_sys_rc, LIST *commands)
+@@ -3097,22 +3407,13 @@ void mutt_init (int skip_sys_rc, LIST *commands)
+   
+   
+   
+-  /*
+-   * 
+-   *			   BIG FAT WARNING
+-   * 
+-   * When changing the code which looks for a configuration file,
+-   * please also change the corresponding code in muttbug.sh.in.
+-   * 
+-   * 
+-   */
+-  
+-  
+-  
+-  
+   if (!Muttrc)
+   {
+-    snprintf (buffer, sizeof(buffer), "%s/.muttrc-%s", NONULL(Homedir), MUTT_VERSION);
++    snprintf (buffer, sizeof(buffer), "%s/.neomuttrc", NONULL(Homedir));
++    if (access(buffer, F_OK) == -1)
++      snprintf (buffer, sizeof (buffer), "%s/.mutt/neomuttrc", NONULL(Homedir));
++    if (access(buffer, F_OK) == -1)
++      snprintf (buffer, sizeof(buffer), "%s/.muttrc-%s", NONULL(Homedir), MUTT_VERSION);
+     if (access(buffer, F_OK) == -1)
+       snprintf (buffer, sizeof(buffer), "%s/.muttrc", NONULL(Homedir));
+     if (access(buffer, F_OK) == -1)
+@@ -3139,7 +3440,9 @@ void mutt_init (int skip_sys_rc, LIST *commands)
+      requested not to via "-n".  */
+   if (!skip_sys_rc)
+   {
+-    snprintf (buffer, sizeof(buffer), "%s/Muttrc-%s", SYSCONFDIR, MUTT_VERSION);
++    snprintf (buffer, sizeof(buffer), "%s/NeoMuttrc", SYSCONFDIR);
++    if (access (buffer, F_OK) == -1)
++      snprintf (buffer, sizeof(buffer), "%s/Muttrc-%s", SYSCONFDIR, MUTT_VERSION);
+     if (access (buffer, F_OK) == -1)
+       snprintf (buffer, sizeof(buffer), "%s/Muttrc", SYSCONFDIR);
+     if (access (buffer, F_OK) == -1)
+@@ -3188,6 +3491,11 @@ void mutt_init (int skip_sys_rc, LIST *commands)
  
    mutt_read_histfile ();
  
@@ -18349,7 +19411,7 @@ index 69e2f76..b22e8e9 100644
  #if 0
    set_option (OPTWEED); /* turn weeding on by default */
  #endif
-@@ -3235,6 +3550,70 @@ static int parse_group_context (group_context_t **ctx, BUFFER *buf, BUFFER *s, u
+@@ -3235,6 +3543,70 @@ static int parse_group_context (group_context_t **ctx, BUFFER *buf, BUFFER *s, u
    return -1;
  }
  
@@ -18420,7 +19482,7 @@ index 69e2f76..b22e8e9 100644
  static void myvar_set (const char* var, const char* val)
  {
    myvar_t** cur;
-@@ -3282,3 +3661,58 @@ static const char* myvar_get (const char* var)
+@@ -3282,3 +3654,58 @@ static const char* myvar_get (const char* var)
  
    return NULL;
  }
@@ -18480,7 +19542,7 @@ index 69e2f76..b22e8e9 100644
 +}
 +
 diff --git a/init.h b/init.h
-index 5a12ec0..bc5134d 100644
+index 5a12ec0..237419a 100644
 --- a/init.h
 +++ b/init.h
 @@ -42,11 +42,12 @@
@@ -19336,7 +20398,7 @@ index 5a12ec0..bc5134d 100644
    { "mailto_allow",	parse_list,		UL &MailtoAllow },
    { "unmailto_allow",	parse_unlist,		UL &MailtoAllow },
    { "message-hook",	mutt_parse_hook,	M_MESSAGEHOOK },
-@@ -3741,6 +4308,9 @@ const struct command_t Commands[] = {
+@@ -3741,10 +4308,14 @@ const struct command_t Commands[] = {
    { "send-hook",	mutt_parse_hook,	M_SENDHOOK },
    { "send2-hook",	mutt_parse_hook,	M_SEND2HOOK },
    { "set",		parse_set,		0 },
@@ -19346,6 +20408,11 @@ index 5a12ec0..bc5134d 100644
    { "source",		parse_source,		0 },
    { "spam",		parse_spam_list,	M_SPAM },
    { "nospam",		parse_spam_list,	M_NOSPAM },
+   { "subscribe",	parse_subscribe,	0 },
++  { "timeout-hook",	mutt_parse_hook,	M_TIMEOUTHOOK },
+   { "toggle",		parse_set,		M_SET_INV },
+   { "unalias",		parse_unalias,		0 },
+   { "unalternative_order",parse_unlist,		UL &AlternativeOrderList },
 diff --git a/keymap.c b/keymap.c
 index 09bef6b..4d7103d 100644
 --- a/keymap.c
@@ -20900,7 +21967,7 @@ index bc87660..c36b413 100644
    {
      if (new_hits < UINT_MAX && cur_hits < UINT_MAX)
 diff --git a/mutt.h b/mutt.h
-index de26fd8..5991e46 100644
+index de26fd8..c86e823 100644
 --- a/mutt.h
 +++ b/mutt.h
 @@ -52,6 +52,11 @@
@@ -20942,7 +22009,7 @@ index de26fd8..5991e46 100644
  
  /* flags for mutt_get_token() */
  #define M_TOKEN_EQUAL		1	/* treat '=' as a special */
-@@ -141,6 +159,11 @@ typedef enum
+@@ -141,6 +159,12 @@ typedef enum
  #define M_ACCOUNTHOOK	(1<<9)
  #define M_REPLYHOOK	(1<<10)
  #define M_SEND2HOOK     (1<<11)
@@ -20951,10 +22018,11 @@ index de26fd8..5991e46 100644
 +#define M_APPENDHOOK	(1<<13)
 +#define M_CLOSEHOOK	(1<<14)
 +#endif
++#define M_TIMEOUTHOOK	(1<<15)
  
  /* tree characters for linearize_tree and print_enriched_string */
  #define M_TREE_LLCORNER		1
-@@ -158,6 +181,8 @@ typedef enum
+@@ -158,6 +182,8 @@ typedef enum
  #define M_TREE_MISSING		13
  #define M_TREE_MAX		14
  
@@ -20963,7 +22031,7 @@ index de26fd8..5991e46 100644
  #define M_THREAD_COLLAPSE	(1<<0)
  #define M_THREAD_UNCOLLAPSE	(1<<1)
  #define M_THREAD_GET_HIDDEN	(1<<2)
-@@ -182,6 +207,8 @@ enum
+@@ -182,6 +208,8 @@ enum
    M_DELETE,
    M_UNDELETE,
    M_DELETED,
@@ -20972,7 +22040,7 @@ index de26fd8..5991e46 100644
    M_FLAG,
    M_TAG,
    M_UNTAG,
-@@ -223,7 +250,13 @@ enum
+@@ -223,7 +251,13 @@ enum
    M_CRYPT_ENCRYPT,
    M_PGP_KEY,
    M_XLABEL,
@@ -20986,7 +22054,7 @@ index de26fd8..5991e46 100644
    
    /* Options for Mailcap lookup */
    M_EDIT,
-@@ -266,6 +299,7 @@ enum
+@@ -266,6 +300,7 @@ enum
    OPT_MIMEFWDREST,
    OPT_MOVE,
    OPT_PGPMIMEAUTO,     /* ask to revert to PGP/MIME when inline fails */
@@ -20994,7 +22062,7 @@ index de26fd8..5991e46 100644
  #ifdef USE_POP
    OPT_POPDELETE,
    OPT_POPRECONNECT,
-@@ -280,6 +314,11 @@ enum
+@@ -280,6 +315,11 @@ enum
  #endif
    OPT_SUBJECT,
    OPT_VERIFYSIG,      /* verify PGP signatures */
@@ -21006,7 +22074,7 @@ index de26fd8..5991e46 100644
      
    /* THIS MUST BE THE LAST VALUE. */
    OPT_MAX
-@@ -298,6 +337,7 @@ enum
+@@ -298,6 +338,7 @@ enum
  #define SENDPOSTPONEDFCC	(1<<9) /* used by mutt_get_postponed() to signal that the x-mutt-fcc header field was present */
  #define SENDNOFREEHEADER	(1<<10)   /* Used by the -E flag */
  #define SENDDRAFTFILE		(1<<11)   /* Used by the -H flag */
@@ -21014,7 +22082,7 @@ index de26fd8..5991e46 100644
  
  /* flags for mutt_compose_menu() */
  #define M_COMPOSE_NOFREEHEADER (1<<0)
-@@ -306,11 +346,18 @@ enum
+@@ -306,11 +347,18 @@ enum
  #define M_SEL_BUFFY	(1<<0)
  #define M_SEL_MULTI	(1<<1)
  #define M_SEL_FOLDER	(1<<2)
@@ -21033,7 +22101,7 @@ index de26fd8..5991e46 100644
  /* boolean vars */
  enum
  {
-@@ -320,6 +367,8 @@ enum
+@@ -320,6 +368,8 @@ enum
    OPTASCIICHARS,
    OPTASKBCC,
    OPTASKCC,
@@ -21042,7 +22110,7 @@ index de26fd8..5991e46 100644
    OPTATTACHSPLIT,
    OPTAUTOEDIT,
    OPTAUTOTAG,
-@@ -386,8 +435,11 @@ enum
+@@ -386,8 +436,11 @@ enum
    OPTIMPLICITAUTOVIEW,
    OPTINCLUDEONLYFIRST,
    OPTKEEPFLAGGED,
@@ -21054,7 +22122,7 @@ index de26fd8..5991e46 100644
    OPTMAILDIRTRASH,
    OPTMAILDIRCHECKCUR,
    OPTMARKERS,
-@@ -401,6 +453,9 @@ enum
+@@ -401,6 +454,9 @@ enum
    OPTMETOO,
    OPTMHPURGE,
    OPTMIMEFORWDECODE,
@@ -21064,7 +22132,7 @@ index de26fd8..5991e46 100644
    OPTNARROWTREE,
    OPTPAGERSTOP,
    OPTPIPEDECODE,
-@@ -428,6 +483,13 @@ enum
+@@ -428,6 +484,13 @@ enum
    OPTSAVEEMPTY,
    OPTSAVENAME,
    OPTSCORE,
@@ -21078,7 +22146,7 @@ index de26fd8..5991e46 100644
    OPTSIGDASHES,
    OPTSIGONTOP,
    OPTSORTRE,
-@@ -491,6 +553,17 @@ enum
+@@ -491,6 +554,17 @@ enum
    OPTPGPAUTOINLINE,
    OPTPGPREPLYINLINE,
  
@@ -21096,7 +22164,7 @@ index de26fd8..5991e46 100644
    /* pseudo options */
  
    OPTAUXSORT,		/* (pseudo) using auxiliary sort function */
-@@ -511,6 +584,7 @@ enum
+@@ -511,6 +585,7 @@ enum
    OPTSORTSUBTHREADS,	/* (pseudo) used when $sort_aux changes */
    OPTNEEDRESCORE,	/* (pseudo) set when the `score' command is used */
    OPTATTACHMSG,		/* (pseudo) used by attach-message */
@@ -21104,7 +22172,7 @@ index de26fd8..5991e46 100644
    OPTKEEPQUIET,		/* (pseudo) shut up the message and refresh
  			 * 	    functions while we are executing an
  			 * 	    external program.
-@@ -521,6 +595,15 @@ enum
+@@ -521,6 +596,15 @@ enum
    OPTDONTHANDLEPGPKEYS,	/* (pseudo) used to extract PGP keys */
    OPTIGNOREMACROEVENTS, /* (pseudo) don't process macro/push/exec events while set */
  
@@ -21120,7 +22188,7 @@ index de26fd8..5991e46 100644
    OPTMAX
  };
  
-@@ -600,10 +683,19 @@ typedef struct envelope
+@@ -600,10 +684,19 @@ typedef struct envelope
    char *supersedes;
    char *date;
    char *x_label;
@@ -21140,7 +22208,7 @@ index de26fd8..5991e46 100644
  
    unsigned int irt_changed : 1; /* In-Reply-To changed to link/break threads */
    unsigned int refs_changed : 1; /* References changed to break thread */
-@@ -719,7 +811,10 @@ typedef struct header
+@@ -719,7 +812,10 @@ typedef struct header
    unsigned int mime : 1;    		/* has a MIME-Version header? */
    unsigned int flagged : 1; 		/* marked important? */
    unsigned int tagged : 1;
@@ -21151,7 +22219,7 @@ index de26fd8..5991e46 100644
    unsigned int changed : 1;
    unsigned int attach_del : 1; 		/* has an attachment marked for deletion */
    unsigned int old : 1;
-@@ -736,6 +831,7 @@ typedef struct header
+@@ -736,6 +832,7 @@ typedef struct header
  					 * This flag is used by the maildir_trash
  					 * option.
  					 */
@@ -21159,7 +22227,7 @@ index de26fd8..5991e46 100644
    
    /* timezone of the sender of this message */
    unsigned int zhours : 5;
-@@ -784,8 +880,9 @@ typedef struct header
+@@ -784,8 +881,9 @@ typedef struct header
    int refno;			/* message number on server */
  #endif
  
@@ -21170,7 +22238,7 @@ index de26fd8..5991e46 100644
  #endif
    
    char *maildir_flags;		/* unknown maildir flags */
-@@ -871,7 +968,9 @@ enum
+@@ -871,7 +969,9 @@ enum
  typedef struct _context
  {
    char *path;
@@ -21180,7 +22248,7 @@ index de26fd8..5991e46 100644
    time_t mtime;
    off_t size;
    off_t vsize;
-@@ -891,9 +990,14 @@ typedef struct _context
+@@ -891,9 +991,14 @@ typedef struct _context
    int new;			/* how many new messages? */
    int unread;			/* how many unread messages? */
    int deleted;			/* how many deleted messages */
@@ -21195,7 +22263,7 @@ index de26fd8..5991e46 100644
    short magic;			/* mailbox type */
  
    unsigned char rights[(RIGHTSMAX + 7)/8];	/* ACL bits */
-@@ -906,6 +1010,7 @@ typedef struct _context
+@@ -906,6 +1011,7 @@ typedef struct _context
    unsigned int quiet : 1;	/* inhibit status messages? */
    unsigned int collapsed : 1;   /* are all threads collapsed? */
    unsigned int closing : 1;	/* mailbox is being closed */
@@ -23866,7 +24934,7 @@ index a57dbf4..3e7a2c3 100644
    {
      if (magic == -1)
 diff --git a/mx.c b/mx.c
-index acc81d4..7299ba0 100644
+index acc81d4..7a0f237 100644
 --- a/mx.c
 +++ b/mx.c
 @@ -29,6 +29,13 @@
@@ -24040,7 +25108,7 @@ index acc81d4..7299ba0 100644
 +    case M_NOTMUCH:
 +      rc = nm_read_query (ctx);
 +      break;
-+#endif /* USE_IMAP */
++#endif /* USE_NOTMUCH */
 +
 +#ifdef USE_NNTP
 +    case M_NNTP:
@@ -28998,7 +30066,7 @@ index 2914b87..8565e09 100755
  done
  
 diff --git a/pattern.c b/pattern.c
-index d954cdc..8dc7fb4 100644
+index d954cdc..5e6c87e 100644
 --- a/pattern.c
 +++ b/pattern.c
 @@ -42,6 +42,10 @@
@@ -29042,7 +30110,7 @@ index d954cdc..8dc7fb4 100644
    HEADER *h = ctx->hdrs[msgno];
    char *buf;
    size_t blen;
-+#ifdef HAVE_FMEMOPEN
++#ifdef USE_FMEMOPEN
 +  char *temp;
 +  size_t tempsize;
 +#else
@@ -29056,7 +30124,7 @@ index d954cdc..8dc7fb4 100644
        memset (&s, 0, sizeof (s));
        s.fpin = msg->fp;
        s.flags = M_CHARCONV;
-+#ifdef HAVE_FMEMOPEN
++#ifdef USE_FMEMOPEN
 +      s.fpout = open_memstream (&temp, &tempsize);
 +      if (!s.fpout) {
 +	mutt_perror ("Error opening memstream");
@@ -29077,7 +30145,7 @@ index d954cdc..8dc7fb4 100644
  	  if (s.fpout)
  	  {
  	    safe_fclose (&s.fpout);
-+#ifdef HAVE_FMEMOPEN
++#ifdef USE_FMEMOPEN
 +            FREE(&temp);
 +#else
  	    unlink (tempfile);
@@ -29089,7 +30157,7 @@ index d954cdc..8dc7fb4 100644
  	mutt_body_handler (h->content, &s);
        }
  
-+#ifdef HAVE_FMEMOPEN
++#ifdef USE_FMEMOPEN
 +      fclose (s.fpout);
 +      lng = tempsize;
 +
@@ -29120,7 +30188,7 @@ index d954cdc..8dc7fb4 100644
      if (option (OPTTHOROUGHSRC))
      {
        safe_fclose (&fp);
-+#ifdef HAVE_FMEMOPEN
++#ifdef USE_FMEMOPEN
 +      if (tempsize)
 +        FREE(&temp);
 +#else
@@ -29404,7 +30472,7 @@ index cec150f..7c62c96 100644
    PostCount = PostContext->msgcount - PostContext->deleted;
  
 diff --git a/protos.h b/protos.h
-index 8e5f7aa..7dcb689 100644
+index 8e5f7aa..6c93d73 100644
 --- a/protos.h
 +++ b/protos.h
 @@ -1,5 +1,6 @@
@@ -29450,7 +30518,15 @@ index 8e5f7aa..7dcb689 100644
  	char op,
  	const char *src,
  	const char *prefix,
-@@ -180,10 +186,17 @@ void mutt_decode_base64 (STATE *s, long len, int istext, iconv_t cd);
+@@ -148,6 +154,7 @@ const char *mutt_get_name (ADDRESS *);
+ char *mutt_get_parameter (const char *, PARAMETER *);
+ LIST *mutt_crypt_hook (ADDRESS *);
+ char *mutt_make_date (char *, size_t);
++void mutt_timeout_hook (void);
+ 
+ const char *mutt_make_version (void);
+ 
+@@ -180,10 +187,17 @@ void mutt_decode_base64 (STATE *s, long len, int istext, iconv_t cd);
  void mutt_default_save (char *, size_t, HEADER *);
  void mutt_display_address (ENVELOPE *);
  void mutt_display_sanitize (char *);
@@ -29468,7 +30544,7 @@ index 8e5f7aa..7dcb689 100644
  void mutt_curses_error (const char *, ...);
  void mutt_curses_message (const char *, ...);
  void mutt_encode_descriptions (BODY *, short);
-@@ -284,6 +297,10 @@ int mutt_check_overwrite (const char *, const char *, char *, size_t, int *, cha
+@@ -284,6 +298,10 @@ int mutt_check_overwrite (const char *, const char *, char *, size_t, int *, cha
  int mutt_check_traditional_pgp (HEADER *, int *);
  int mutt_command_complete (char *, size_t, int, int);
  int mutt_var_value_complete (char *, size_t, int);
@@ -29479,7 +30555,7 @@ index 8e5f7aa..7dcb689 100644
  int mutt_complete (char *, size_t);
  int mutt_compose_attachment (BODY *a);
  int mutt_copy_body (FILE *, BODY **, BODY *);
-@@ -299,8 +316,10 @@ int mutt_chscmp (const char *s, const char *chs);
+@@ -299,8 +317,10 @@ int mutt_chscmp (const char *s, const char *chs);
  int mutt_parent_message (CONTEXT *, HEADER *);
  int mutt_prepare_template(FILE*, CONTEXT *, HEADER *, HEADER *, short);
  int mutt_resend_message (FILE *, CONTEXT *, HEADER *);
@@ -29492,16 +30568,17 @@ index 8e5f7aa..7dcb689 100644
  int  mutt_enter_string (char *buf, size_t buflen, int y, int x, int flags);
  int _mutt_enter_string (char *, size_t, int, int, int, int, char ***, int *, ENTER_STATE *);
  #define mutt_get_field(A,B,C,D) _mutt_get_field(A,B,C,D,0,NULL,NULL)
-@@ -365,7 +384,7 @@ int mutt_user_is_recipient (HEADER *);
+@@ -365,7 +385,8 @@ int mutt_user_is_recipient (HEADER *);
  void mutt_update_num_postponed (void);
  int mutt_wait_filter (pid_t);
  int mutt_which_case (const char *);
 -int mutt_write_fcc (const char *path, HEADER *hdr, const char *msgid, int, char *);
 +int mutt_write_fcc (const char *path, HEADER *hdr, const char *msgid, int, char *, char **);
++int mutt_write_multiple_fcc (const char *path, HEADER *hdr, const char *msgid, int, char *, char **);
  int mutt_write_mime_body (BODY *, FILE *);
  int mutt_write_mime_header (BODY *, FILE *);
  int mutt_write_one_header (FILE *fp, const char *tag, const char *value, const char *pfx, int wraplen, int flags);
-@@ -375,6 +394,11 @@ int mutt_yesorno (const char *, int);
+@@ -375,6 +396,11 @@ int mutt_yesorno (const char *, int);
  void mutt_set_header_color(CONTEXT *, HEADER *);
  void mutt_sleep (short);
  int mutt_save_confirm (const char  *, struct stat *);
@@ -29513,7 +30590,7 @@ index 8e5f7aa..7dcb689 100644
  
  int mh_valid_message (const char *);
  
-@@ -422,16 +446,6 @@ void mutt_pattern_free (pattern_t **pat);
+@@ -422,16 +448,6 @@ void mutt_pattern_free (pattern_t **pat);
  #define LONGLONG long
  #endif
  
@@ -29530,7 +30607,7 @@ index 8e5f7aa..7dcb689 100644
  /* HP-UX, ConvexOS and UNIXware don't have this macro */
  #ifndef S_ISLNK
  #define S_ISLNK(x) (((x) & S_IFMT) == S_IFLNK ? 1 : 0)
-@@ -565,3 +579,11 @@ char *strcasestr (const char *, const char *);
+@@ -565,3 +581,11 @@ char *strcasestr (const char *, const char *);
  #ifndef HAVE_MKDTEMP
  char *mkdtemp (char *tmpl);
  #endif
@@ -29843,7 +30920,7 @@ index fe9c7f2..3f665af 100644
  }
  
 diff --git a/send.c b/send.c
-index 8b71ea5..43c6476 100644
+index 8b71ea5..cea233d 100644
 --- a/send.c
 +++ b/send.c
 @@ -44,10 +44,18 @@
@@ -30142,7 +31219,7 @@ index 8b71ea5..43c6476 100644
         */
        msg->received = time (NULL);
 -      if (mutt_write_fcc (fcc, msg, NULL, 0, NULL) == -1)
-+      if (mutt_write_fcc (fcc, msg, NULL, 0, NULL, &finalpath) == -1)
++      if (mutt_write_multiple_fcc (fcc, msg, NULL, 0, NULL, &finalpath) == -1)
        {
  	/*
  	 * Error writing FCC, we should abort sending.
@@ -30186,7 +31263,7 @@ index 8b71ea5..43c6476 100644
  }
  
 diff --git a/sendlib.c b/sendlib.c
-index e6b6a79..449bf0b 100644
+index e6b6a79..2ed0f13 100644
 --- a/sendlib.c
 +++ b/sendlib.c
 @@ -46,6 +46,10 @@
@@ -30433,17 +31510,53 @@ index e6b6a79..449bf0b 100644
    /*
     * prepare recipient list. idna conversion appears to happen before this
     * function is called, since the user receives confirmation of the address
-@@ -2687,7 +2756,8 @@ static void set_noconv_flags (BODY *b, short flag)
+@@ -2687,7 +2756,44 @@ static void set_noconv_flags (BODY *b, short flag)
    }
  }
  
 -int mutt_write_fcc (const char *path, HEADER *hdr, const char *msgid, int post, char *fcc)
++/* Handle a Fcc with multiple, comma separated entries. */
++int mutt_write_multiple_fcc (const char *path, HEADER *hdr, const char *msgid,
++        int post, char *fcc, char **finalpath)
++{
++  char fcc_tok[_POSIX_PATH_MAX];
++  char fcc_expanded[_POSIX_PATH_MAX];
++  char *tok = NULL;
++  int status;
++
++  strfcpy(fcc_tok, path, sizeof (fcc_tok));
++
++  tok = strtok(fcc_tok, ",");
++  dprint(1, (debugfile, "Fcc: initial mailbox = '%s'\n", tok));
++  /* mutt_expand_path already called above for the first token */
++  status = mutt_write_fcc (tok, hdr, msgid, post, fcc, finalpath);
++  if (status != 0)
++    return status;
++
++  while ((tok = strtok (NULL, ",")) != NULL)
++  {
++    if (!*tok)
++      continue;
++
++    /* Only call mutt_expand_path iff tok has some data */
++    dprint (1, (debugfile, "Fcc: additional mailbox token = '%s'\n", tok));
++    strfcpy (fcc_expanded, tok, sizeof (fcc_expanded));
++    mutt_expand_path (fcc_expanded, sizeof (fcc_expanded));
++    dprint (1, (debugfile, "     Additional mailbox expanded = '%s'\n", fcc_expanded));
++    status = mutt_write_fcc (fcc_expanded, hdr, msgid, post, fcc, finalpath);
++    if (status != 0)
++      return status;
++  }
++
++  return 0;
++}
++
 +int mutt_write_fcc (const char *path, HEADER *hdr, const char *msgid,
 +		    int post, char *fcc, char **finalpath)
  {
    CONTEXT f;
    MESSAGE *msg;
-@@ -2876,6 +2946,8 @@ int mutt_write_fcc (const char *path, HEADER *hdr, const char *msgid, int post,
+@@ -2876,6 +2982,8 @@ int mutt_write_fcc (const char *path, HEADER *hdr, const char *msgid, int post,
  
    if (mx_commit_message (msg, &f) != 0)
      r = -1;
@@ -32016,10 +33129,10 @@ index 926416e..d07150f 100644
  #endif
 diff --git a/version.c b/version.c
 new file mode 100644
-index 0000000..bc3546f
+index 0000000..262f169
 --- /dev/null
 +++ b/version.c
-@@ -0,0 +1,516 @@
+@@ -0,0 +1,521 @@
 +/**
 + * Copyright (C) 1996-2007 Michael R. Elkins <me at mutt.org>
 + * Copyright (C) 1999-2007 Thomas Roessler <roessler at does-not-exist.org>
@@ -32275,6 +33388,11 @@ index 0000000..bc3546f
 +#else
 +	{ "USE_FLOCK", 0 },
 +#endif
++#ifdef USE_FMEMOPEN
++	{ "USE_FMEMOPEN", 1 },
++#else
++	{ "USE_FMEMOPEN", 0 },
++#endif
 +#ifdef USE_GNU_REGEX
 +	{ "USE_GNU_REGEX", 1 },
 +#else
@@ -32571,6 +33689,7 @@ index 0000000..b46ebf8
 diff --git a/version.sh b/version.sh
 old mode 100644
 new mode 100755
+index d7988df..f712e4e
 --- a/version.sh
 +++ b/version.sh
 @@ -1,68 +1,9 @@
diff --git a/debian/patches/neomutt-devel/imap-sidebar-update-bug.patch b/debian/patches/neomutt-devel/imap-sidebar-update-bug.patch
deleted file mode 100644
index 0af9944..0000000
--- a/debian/patches/neomutt-devel/imap-sidebar-update-bug.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From cda6311195c7ef43818c752d4fb7fcba88d97f37 Mon Sep 17 00:00:00 2001
-From: Richard Russon <rich at flatcap.org>
-Date: Mon, 25 Jul 2016 12:57:19 +0100
-Subject: [PATCH] Fix imap/sidebar update bug
-
-The sidebar's inbox occasionally shows zero/wrong value until the next
-mail_check_stats event.
-
-If IMAP hasn't been asked for MESSAGES, don't update BUFFY->msg_count.
----
- imap/command.c | 7 ++++++-
- 1 file changed, 6 insertions(+), 1 deletion(-)
-
-diff --git a/imap/command.c b/imap/command.c
-index b5c896d..235e71a 100644
---- a/imap/command.c
-+++ b/imap/command.c
-@@ -901,6 +901,7 @@ static void cmd_parse_status (IMAP_DATA* idata, char* s)
-   unsigned int olduv, oldun;
-   long litlen;
-   short new = 0;
-+  short new_msg_count = 0;
- 
-   mailbox = imap_next_word (s);
- 
-@@ -940,7 +941,10 @@ static void cmd_parse_status (IMAP_DATA* idata, char* s)
-     count = strtol (value, &value, 10);
- 
-     if (!ascii_strncmp ("MESSAGES", s, 8))
-+    {
-       status->messages = count;
-+      new_msg_count = 1;
-+    }
-     else if (!ascii_strncmp ("RECENT", s, 6))
-       status->recent = count;
-     else if (!ascii_strncmp ("UIDNEXT", s, 7))
-@@ -1019,7 +1023,8 @@ static void cmd_parse_status (IMAP_DATA* idata, char* s)
-           SidebarNeedsRedraw = 1;
- #endif
-         inc->new = new;
--        inc->msg_count  = status->messages;
-+	if (new_msg_count)
-+		inc->msg_count = status->messages;
-         inc->msg_unread = status->unseen;
- 
- 	if (inc->new)
diff --git a/debian/patches/neomutt-devel/sensible-browser.patch b/debian/patches/neomutt-devel/sensible-browser.patch
index fe2fa4c..28a3d1b 100644
--- a/debian/patches/neomutt-devel/sensible-browser.patch
+++ b/debian/patches/neomutt-devel/sensible-browser.patch
@@ -15,10 +15,10 @@ Subject: [PATCH 02/22] patches-20160502/sensible-browser
 
 --- a/PATCHES
 +++ b/PATCHES
-@@ -19,3 +19,4 @@ patch-lmdb-neo-git
- patch-1.5.23.smime-encrypt-self.1
- patch-new-mail-neo-git
- patch-smime-encrypt-to-self-neo-git
+@@ -20,3 +20,4 @@ patch-status-color-neo-git
+ patch-timeout-neo-git
+ patch-tls-sni-neo-git
+ patch-trash-neo-git
 +patch-sensible-browser-neo-UNKNOWN
 --- /dev/null
 +++ b/README.sensible-browser
@@ -122,7 +122,7 @@ Subject: [PATCH 02/22] patches-20160502/sensible-browser
  
 --- a/doc/manual.xml.head
 +++ b/doc/manual.xml.head
-@@ -13422,6 +13422,96 @@ bind index D purge-message
+@@ -13600,6 +13600,96 @@ bind index D purge-message
    </sect2>
  </sect1>
  
diff --git a/debian/patches/series b/debian/patches/series
index 48c84f2..6d85ab9 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,8 +1,5 @@
-neomutt-20160723.patch
-neomutt-devel/imap-sidebar-update-bug.patch
+neomutt-20160808.patch
 neomutt-devel/sensible-browser.patch
-features/809802_timeout_hook.patch
-features/multiple-fcc.patch
 debian-specific/Muttrc.patch
 debian-specific/Md.etc_mailname_gethostbyname.patch
 debian-specific/use_usr_bin_editor.patch

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mutt/mutt.git



More information about the pkg-mutt-commits mailing list