[mutt] 08/11: Replace NNTP patch with neomutt's

Faidon Liambotis paravoid at moszumanska.debian.org
Fri May 13 15:33:52 UTC 2016


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

paravoid pushed a commit to branch wip-neomutt
in repository mutt.

commit 70ebac05503c417b2bd62991dc705bc35b79de64
Author: Faidon Liambotis <paravoid at debian.org>
Date:   Thu May 5 21:17:29 2016 +0300

    Replace NNTP patch with neomutt's
---
 .../{mutt-patched => neomutt-devel}/nntp.patch     | 1391 ++++++++++++--------
 debian/patches/series                              |    2 +-
 2 files changed, 821 insertions(+), 572 deletions(-)

diff --git a/debian/patches/mutt-patched/nntp.patch b/debian/patches/neomutt-devel/nntp.patch
similarity index 87%
rename from debian/patches/mutt-patched/nntp.patch
rename to debian/patches/neomutt-devel/nntp.patch
index fc0ca34..9fc25ea 100644
--- a/debian/patches/mutt-patched/nntp.patch
+++ b/debian/patches/neomutt-devel/nntp.patch
@@ -1,14 +1,15 @@
-From: Vsevolod Volkov <vvv at mutt.org.ua>
-Date: Sun, 24 Apr 2016 10:35:02 +0200
-Subject: nntp
+From 82f9607dd091365761dc801ebf98db067b582521 Mon Sep 17 00:00:00 2001
+From: Richard Russon <rich at flatcap.org>
+Date: Thu, 7 Apr 2016 23:02:56 +0100
+Subject: [PATCH 28/28] patches-20160502/nntp
 
-http://mutt.org.ua/download/mutt-1.6.0/patch-1.6.0.vvv.nntp.gz
-
-Signed-off-by: Matteo F. Vescovi <mfv at debian.org>
+Talk to a Usenet news server
 ---
  ChangeLog.nntp      |  416 +++++++++
  Makefile.am         |    2 +
  OPS                 |   23 +-
+ PATCHES             |    1 +
+ README.nntp         |  122 +++
  account.c           |   27 +
  account.h           |    3 +-
  attach.h            |    2 +-
@@ -16,12 +17,13 @@ Signed-off-by: Matteo F. Vescovi <mfv at debian.org>
  browser.h           |    7 +
  buffy.c             |   12 +
  complete.c          |   64 ++
- compose.c           |  143 ++-
+ compose.c           |  177 +++-
  configure.ac        |   11 +-
  curs_main.c         |  312 ++++++-
- doc/Muttrc          |  300 +++++++
- doc/manual.xml.head |   20 +
+ doc/manual.xml.head |  392 +++++++++
  doc/mutt.man        |    8 +-
+ doc/muttrc.nntp     |    0
+ doc/vimrc-nntp      |   50 ++
  functions.h         |   59 +-
  globals.h           |   18 +-
  hash.c              |   27 +
@@ -33,7 +35,7 @@ Signed-off-by: Matteo F. Vescovi <mfv at debian.org>
  init.h              |  223 +++++
  keymap.c            |    1 -
  mailbox.h           |    3 +
- main.c              |   54 ++
+ main.c              |   48 +
  mutt.h              |   40 +-
  mutt_sasl.c         |    5 +
  muttlib.c           |   17 +-
@@ -55,8 +57,12 @@ Signed-off-by: Matteo F. Vescovi <mfv at debian.org>
  sort.c              |   16 +
  url.c               |    4 +-
  url.h               |    2 +
- 49 files changed, 6706 insertions(+), 82 deletions(-)
+ version.c           |    5 +
+ 53 files changed, 6982 insertions(+), 84 deletions(-)
  create mode 100644 ChangeLog.nntp
+ create mode 100644 README.nntp
+ create mode 100644 doc/muttrc.nntp
+ create mode 100644 doc/vimrc-nntp
  create mode 100644 newsrc.c
  create mode 100644 nntp.c
  create mode 100644 nntp.h
@@ -484,18 +490,18 @@ index 0000000..1452e86
 +* Fri Jan 28 2000 Vsevolod Volkov <vvv at mutt.kiev.ua>
 +- update to 1.1.2
 diff --git a/Makefile.am b/Makefile.am
-index c593f4f..8e910fb 100644
+index a97f4ac..ae1c628 100644
 --- a/Makefile.am
 +++ b/Makefile.am
-@@ -57,6 +57,7 @@ EXTRA_mutt_SOURCES = account.c bcache.c crypt-gpgme.c crypt-mod-pgp-classic.c \
- 	mutt_sasl.c mutt_socket.c mutt_ssl.c mutt_ssl_gnutls.c \
+@@ -56,6 +56,7 @@ EXTRA_mutt_SOURCES = account.c bcache.c crypt-gpgme.c crypt-mod-pgp-classic.c \
+ 	mutt_idna.c mutt_sasl.c mutt_socket.c mutt_ssl.c mutt_ssl_gnutls.c \
  	mutt_tunnel.c pgp.c pgpinvoke.c pgpkey.c pgplib.c pgpmicalg.c \
  	pgppacket.c pop.c pop_auth.c pop_lib.c remailer.c resize.c sha1.c \
 +	nntp.c newsrc.c \
  	smime.c smtp.c utf8.c wcwidth.c \
  	bcache.h browser.h hcache.h mbyte.h mutt_idna.h remailer.h url.h
  
-@@ -68,6 +69,7 @@ EXTRA_DIST = COPYRIGHT GPL OPS OPS.PGP OPS.CRYPT OPS.SMIME TODO UPDATING \
+@@ -67,6 +68,7 @@ EXTRA_DIST = COPYRIGHT GPL OPS OPS.PGP OPS.CRYPT OPS.SMIME TODO UPDATING \
  	mutt_regex.h mutt_sasl.h mutt_socket.h mutt_ssl.h mutt_tunnel.h \
  	mx.h pager.h pgp.h pop.h protos.h rfc1524.h rfc2047.h \
  	rfc2231.h rfc822.h rfc3676.h sha1.h sort.h mime.types VERSION prepare \
@@ -504,7 +510,7 @@ index c593f4f..8e910fb 100644
  	mbyte.h lib.h extlib.c pgpewrap.c smime_keys.pl pgplib.h \
  	README.SSL smime.h group.h \
 diff --git a/OPS b/OPS
-index 1ed9c96..b900373 100644
+index 02cea8e..41b4e10 100644
 --- a/OPS
 +++ b/OPS
 @@ -8,14 +8,16 @@ OP_BOUNCE_MESSAGE "remail a message to another user"
@@ -605,6 +611,143 @@ index 1ed9c96..b900373 100644
  OP_VERSION "show the Mutt version number and date"
  OP_VIEW_ATTACH "view attachment using mailcap entry if necessary"
  OP_VIEW_ATTACHMENTS "show MIME attachments"
+diff --git a/PATCHES b/PATCHES
+index a2887df..71e4893 100644
+--- a/PATCHES
++++ b/PATCHES
+@@ -3,3 +3,4 @@ patch-compress-neo-UNKNOWN
+ patch-sensible-browser-neo-UNKNOWN
+ patch-trash-neo-20160502
+ patch-ifdef-neo-20160502
++patch-nntp-neo-UNKNOWN
+diff --git a/README.nntp b/README.nntp
+new file mode 100644
+index 0000000..f8e5020
+--- /dev/null
++++ b/README.nntp
+@@ -0,0 +1,122 @@
++NNTP Patch
++==========
++
++    Talk to a Usenet news server
++
++Patch
++-----
++
++    To check if Mutt supports "NNTP", look for "+USE_NNTP" in the mutt version.
++
++    Dependencies
++    * mutt-1.5.24
++
++Introduction
++------------
++
++    Reading news via NNTP
++
++    If compiled with *--enable-nntp* option, Mutt can read news from news
++    server via NNTP. You can open a newsgroup with function
++    ''change-newsgroup'' (default: ''i''). Default news server can be obtained
++    from '$NNTPSERVER' environment variable or from '/etc/nntpserver' file.
++    Like other news readers, info about subscribed newsgroups is saved in file
++    by $newsrc variable. The variable $news_cache_dir can be used to point to a
++    directory. Mutt will create a hierarchy of subdirectories named like the
++    account and newsgroup the cache is for. Also the hierarchy is used to store
++    header cache if Mutt was compiled with header cache support.
++
++Variables
++---------
++
++    NNTP Variables
++
++    | Name                    | Type    | Default                     |
++    |-------------------------|---------|-----------------------------|
++    | 'ask_follow_up'         | boolean | 'no'                        |
++    | 'ask_x_comment_to'      | boolean | 'no'                        |
++    | 'catchup_newsgroup'     | quad    | 'ask-yes'                   |
++    | 'followup_to_poster'    | quad    | 'ask-yes'                   |
++    | 'group_index_format'    | string  | '%4C %M%N %5s  %-45.45f %d' |
++    | 'inews'                 | string  | (empty)                     |
++    | 'mime_subject'          | boolean | 'yes'                       |
++    | 'newsgroups_charset'    | string  | 'utf-8'                     |
++    | 'newsrc'                | string  | '~/.newsrc'                 |
++    | 'news_cache_dir'        | string  | '~/.mutt'                   |
++    | 'news_server'           | string  | (empty)                     |
++    | 'nntp_authenticators'   | string  | (empty)                     |
++    | 'nntp_context'          | number  | '1000'                      |
++    | 'nntp_listgroup'        | boolean | 'yes'                       |
++    | 'nntp_load_description' | boolean | 'yes'                       |
++    | 'nntp_pass'             | string  | (empty)                     |
++    | 'nntp_poll'             | number  | '60'                        |
++    | 'nntp_user'             | string  | (empty)                     |
++    | 'post_moderated'        | quad    | 'ask-yes'                   |
++    | 'save_unsubscribed'     | boolean | 'no'                        |
++    | 'show_new_news'         | boolean | 'yes'                       |
++    | 'show_only_unread'      | boolean | 'no'                        |
++    | 'x_comment_to'          | boolean | 'no'                        |
++
++Functions
++---------
++
++    NNTP Functions
++
++    | Menus                  | Default Key | Function                      | Description                                    |
++    |------------------------|-------------|-------------------------------|------------------------------------------------|
++    | browser,index          | y           | '<catchup>'                   | mark all articles in newsgroup as read         |
++    | index,pager            | i           | '<change-newsgroup>'          | open a different newsgroup                     |
++    | pager                  | X           | '<change-vfolder>'            | open a different virtual folder                |
++    | compose                | o           | '<edit-followup-to>'          | edit the Followup-To field                     |
++    | compose                | N           | '<edit-newsgroups>'           | edit the newsgroups list                       |
++    | compose                | x           | '<edit-x-comment-to>'         | edit the X-Comment-To field                    |
++    | pager                  | +           | '<entire-thread>'             | read entire thread of the current message      |
++    | attachment,index,pager | F           | '<followup-message>'          | followup to newsgroup                          |
++    | pager                  | `           | '<modify-labels>'             | modify (notmuch) tags                          |
++    | index,pager            | P           | '<post-message>'              | post message to newsgroup                      |
++    | browser                | g           | '<reload-active>'             | load list of all newsgroups from NNTP server   |
++    | browser                | s           | '<subscribe>'                 | subscribe to current mbox (IMAP/NNTP only)     |
++    | browser                | S           | '<subscribe-pattern>'         | subscribe to newsgroups matching a pattern     |
++    | browser                | Y           | '<uncatchup>'                 | mark all articles in newsgroup as unread       |
++    | browser                | u           | '<unsubscribe>'               | unsubscribe from current mbox (IMAP/NNTP only) |
++    | browser                | U           | '<unsubscribe-pattern>'       | unsubscribe from newsgroups matching a pattern |
++    | index,pager            | Alt-i       | '<change-newsgroup-readonly>' | open a different newsgroup in read only mode   |
++    | attachment,index,pager | Alt-F       | '<forward-to-group>'          | forward to newsgroup                           |
++    | index                  | (none)      | '<get-children>'              | get all children of the current message        |
++    | index                  | Alt-G       | '<get-parent>'                | get parent of the current message              |
++    | index,pager            | (none)      | '<imap-fetch-mail>'           | force retrieval of mail from IMAP server       |
++    | index,pager            | (none)      | '<imap-logout-all>'           | logout from all IMAP servers                   |
++    | pager                  | (none)      | '<modify-labels-then-hide>'   | modify labeld and then hide message            |
++    | index                  | (none)      | '<reconstruct-thread>'        | reconstruct thread containing current message  |
++    | pager                  | Alt-X       | '<vfolder-from-query>'        | generate virtual folder from query             |
++    | index                  | Ctrl-G      | '<get-message>'               | get message with Message-Id                    |
++
++Commands
++--------
++
++Colors
++------
++
++    None
++
++Sort
++----
++
++    None
++
++See Also
++--------
++
++    * NeoMutt project
++    * Compile-Time Features
++
++Known Bugs
++----------
++
++Credits
++-------
++
++    * Vsevolod Volkov <vvv at mutt.org.ua>
++    * Felix von Leitner <leitner at fefe.de>
++    * Richard Russon <rich at flatcap.org>
++
 diff --git a/account.c b/account.c
 index 235ff10..57eba36 100644
 --- a/account.c
@@ -694,7 +837,7 @@ index 928408a..071f22c 100644
  
  #endif /* _ATTACH_H_ */
 diff --git a/browser.c b/browser.c
-index 8ce3b2c..e0b80bc 100644
+index b0dbeb5..f04ca15 100644
 --- a/browser.c
 +++ b/browser.c
 @@ -32,6 +32,9 @@
@@ -1024,10 +1167,10 @@ index 8ce3b2c..e0b80bc 100644
 +  }
 +  else
 +#endif
-   if (buffy)
-   {
+   if (buffy) {
      menu->is_mailbox_list = 1;
-@@ -609,6 +821,31 @@ void _mutt_select_file (char *f, size_t flen, int flags, char ***files, int *num
+     snprintf (title, titlelen, _("Mailboxes [%d]"), mutt_buffy_check (0));
+@@ -606,6 +818,31 @@ void _mutt_select_file (char *f, size_t flen, int flags, char ***files, int *num
    if (!folder)
      strfcpy (LastDirBackup, LastDir, sizeof (LastDirBackup));
  
@@ -1059,7 +1202,7 @@ index 8ce3b2c..e0b80bc 100644
    if (*f)
    {
      mutt_expand_path (f, flen);
-@@ -705,6 +942,9 @@ void _mutt_select_file (char *f, size_t flen, int flags, char ***files, int *num
+@@ -702,6 +939,9 @@ void _mutt_select_file (char *f, size_t flen, int flags, char ***files, int *num
      menu->tag = file_tag;
  
    menu->help = mutt_compile_help (helpstr, sizeof (helpstr), MENU_FOLDER,
@@ -1069,7 +1212,7 @@ index 8ce3b2c..e0b80bc 100644
      FolderHelp);
  
    init_menu (&state, menu, title, sizeof (title), buffy);
-@@ -842,7 +1082,11 @@ void _mutt_select_file (char *f, size_t flen, int flags, char ***files, int *num
+@@ -838,7 +1078,11 @@ void _mutt_select_file (char *f, size_t flen, int flags, char ***files, int *num
  	  }
  	}
  
@@ -1081,7 +1224,7 @@ index 8ce3b2c..e0b80bc 100644
  	{
  	  strfcpy (f, state.entry[menu->current].name, flen);
  	  mutt_expand_path (f, flen);
-@@ -900,14 +1144,6 @@ void _mutt_select_file (char *f, size_t flen, int flags, char ***files, int *num
+@@ -896,14 +1140,6 @@ void _mutt_select_file (char *f, size_t flen, int flags, char ***files, int *num
          break;
  
  #ifdef USE_IMAP
@@ -1096,7 +1239,7 @@ index 8ce3b2c..e0b80bc 100644
        case OP_BROWSER_TOGGLE_LSUB:
  	if (option (OPTIMAPLSUB))
  	  unset_option (OPTIMAPLSUB);
-@@ -1008,6 +1244,11 @@ void _mutt_select_file (char *f, size_t flen, int flags, char ***files, int *num
+@@ -1004,6 +1240,11 @@ void _mutt_select_file (char *f, size_t flen, int flags, char ***files, int *num
        
        case OP_CHANGE_DIRECTORY:
  
@@ -1108,7 +1251,7 @@ index 8ce3b2c..e0b80bc 100644
  	strfcpy (buf, LastDir, sizeof (buf));
  #ifdef USE_IMAP
  	if (!state.imap_browse)
-@@ -1273,6 +1514,210 @@ void _mutt_select_file (char *f, size_t flen, int flags, char ***files, int *num
+@@ -1269,6 +1510,210 @@ void _mutt_select_file (char *f, size_t flen, int flags, char ***files, int *num
  	  else
  	    mutt_error _("Error trying to view file");
  	}
@@ -1345,10 +1488,10 @@ index 515d69f..ad89ab2 100644
  };
  
 diff --git a/buffy.c b/buffy.c
-index d34e6f5..ead572e 100644
+index 99258c8..4a31b24 100644
 --- a/buffy.c
 +++ b/buffy.c
-@@ -563,6 +563,9 @@ int mutt_buffy_check (int force)
+@@ -580,6 +580,9 @@ int mutt_buffy_check (int force)
  
    /* check device ID and serial number instead of comparing paths */
    if (!Context || Context->magic == M_IMAP || Context->magic == M_POP
@@ -1358,7 +1501,7 @@ index d34e6f5..ead572e 100644
        || stat (Context->path, &contex_sb) != 0)
    {
      contex_sb.st_dev=0;
-@@ -579,6 +582,11 @@ int mutt_buffy_check (int force)
+@@ -599,6 +602,11 @@ int mutt_buffy_check (int force)
  	tmp->magic = M_POP;
        else
  #endif
@@ -1370,7 +1513,7 @@ index d34e6f5..ead572e 100644
        if (stat (tmp->path, &sb) != 0 || (S_ISREG(sb.st_mode) && sb.st_size == 0) ||
  	  (!tmp->magic && (tmp->magic = mx_get_magic (tmp->path)) <= 0))
        {
-@@ -594,7 +602,11 @@ int mutt_buffy_check (int force)
+@@ -614,7 +622,11 @@ int mutt_buffy_check (int force)
      /* check to see if the folder is the currently selected folder
       * before polling */
      if (!Context || !Context->path ||
@@ -1468,22 +1611,47 @@ index d0ee4af..8dc48cd 100644
    if (*s == '=' || *s == '+' || *s == '!')
    {
 diff --git a/compose.c b/compose.c
-index 42bdb46..01c79ce 100644
+index c7a39c9..04a2e43 100644
 --- a/compose.c
 +++ b/compose.c
-@@ -38,6 +38,11 @@
+@@ -35,11 +35,16 @@
+ #ifdef USE_SIDEBAR
+ #include "sidebar.h"
+ #endif
++#include "mx.h"
+ 
+ #ifdef MIXMASTER
  #include "remailer.h"
  #endif
  
 +#ifdef USE_NNTP
-+#include "mx.h"
 +#include "nntp.h"
 +#endif
 +
  #include <errno.h>
  #include <string.h>
  #include <sys/stat.h>
-@@ -84,6 +89,16 @@ static const char * const Prompts[] =
+@@ -70,11 +75,17 @@ enum
+   HDR_CRYPT,
+   HDR_CRYPTINFO,
+ 
++#ifdef USE_NNTP
++  HDR_NEWSGROUPS,
++  HDR_FOLLOWUPTO,
++  HDR_XCOMMENTTO,
++#endif
++
+   HDR_ATTACH  = (HDR_FCC + 5) /* where to start printing the attachments */
+ };
+ 
+-#define HDR_XOFFSET 10
+-#define TITLE_FMT "%10s" /* Used for Prompts, which are ASCII */
++#define HDR_XOFFSET 14
++#define TITLE_FMT "%14s" /* Used for Prompts, which are ASCII */
+ #define W (COLS - HDR_XOFFSET - SidebarWidth)
+ 
+ static const char * const Prompts[] =
+@@ -86,6 +97,16 @@ static const char * const Prompts[] =
    "Subject: ",
    "Reply-To: ",
    "Fcc: "
@@ -1500,7 +1668,7 @@ index 42bdb46..01c79ce 100644
  };
  
  static const struct mapping_t ComposeHelp[] = {
-@@ -98,6 +108,19 @@ static const struct mapping_t ComposeHelp[] = {
+@@ -100,6 +121,19 @@ static const struct mapping_t ComposeHelp[] = {
    { NULL,	0 }
  };
  
@@ -1520,7 +1688,7 @@ index 42bdb46..01c79ce 100644
  static void snd_entry (char *b, size_t blen, MUTTMENU *menu, int num)
  {
      mutt_FormatString (b, blen, 0, NONULL (AttachFormat), mutt_attach_fmt,
-@@ -151,11 +174,19 @@ static void redraw_crypt_lines (HEADER *msg)
+@@ -153,11 +187,19 @@ static void redraw_crypt_lines (HEADER *msg)
  
    if ((WithCrypto & APPLICATION_PGP)
        && (msg->security & APPLICATION_PGP) && (msg->security & SIGN))
@@ -1542,7 +1710,36 @@ index 42bdb46..01c79ce 100644
    }
  
    if ((WithCrypto & APPLICATION_SMIME)
-@@ -506,6 +537,12 @@ int mutt_compose_menu (HEADER *msg,   /* structure for new message */
+@@ -255,9 +297,28 @@ static void draw_envelope (HEADER *msg, char *fcc)
+   sb_draw();
+ #endif
+   draw_envelope_addr (HDR_FROM, msg->env->from);
++#ifdef USE_NNTP
++  if (!option (OPTNEWSSEND))
++  {
++#endif
+   draw_envelope_addr (HDR_TO, msg->env->to);
+   draw_envelope_addr (HDR_CC, msg->env->cc);
+   draw_envelope_addr (HDR_BCC, msg->env->bcc);
++#ifdef USE_NNTP
++  }
++  else
++  {
++    mvprintw (HDR_TO, 0, TITLE_FMT , Prompts[HDR_NEWSGROUPS - 1]);
++    mutt_paddstr (W, NONULL (msg->env->newsgroups));
++    mvprintw (HDR_CC, 0, TITLE_FMT , Prompts[HDR_FOLLOWUPTO - 1]);
++    mutt_paddstr (W, NONULL (msg->env->followup_to));
++    if (option (OPTXCOMMENTTO))
++    {
++      mvprintw (HDR_BCC, 0, TITLE_FMT , Prompts[HDR_XCOMMENTTO - 1]);
++      mutt_paddstr (W, NONULL (msg->env->x_comment_to));
++    }
++  }
++#endif
+   mvprintw (HDR_SUBJECT, SidebarWidth, TITLE_FMT, Prompts[HDR_SUBJECT - 1]);
+   mutt_paddstr (W, NONULL (msg->env->subject));
+   draw_envelope_addr (HDR_REPLYTO, msg->env->reply_to);
+@@ -510,6 +571,12 @@ int mutt_compose_menu (HEADER *msg,   /* structure for new message */
    /* Sort, SortAux could be changed in mutt_index_menu() */
    int oldSort, oldSortAux;
    struct stat st;
@@ -1555,7 +1752,7 @@ index 42bdb46..01c79ce 100644
  
    mutt_attach_init (msg->content);
    idx = mutt_gen_attach_list (msg->content, -1, idx, &idxlen, &idxmax, 0, 1);
-@@ -516,10 +553,18 @@ int mutt_compose_menu (HEADER *msg,   /* structure for new message */
+@@ -520,10 +587,18 @@ int mutt_compose_menu (HEADER *msg,   /* structure for new message */
    menu->make_entry = snd_entry;
    menu->tag = mutt_tag_attach;
    menu->data = idx;
@@ -1574,7 +1771,7 @@ index 42bdb46..01c79ce 100644
      switch (op = mutt_menuLoop (menu))
      {
        case OP_REDRAW:
-@@ -532,6 +577,10 @@ int mutt_compose_menu (HEADER *msg,   /* structure for new message */
+@@ -536,6 +611,10 @@ int mutt_compose_menu (HEADER *msg,   /* structure for new message */
          mutt_message_hook (NULL, msg, M_SEND2HOOK);
  	break;
        case OP_COMPOSE_EDIT_TO:
@@ -1585,7 +1782,7 @@ index 42bdb46..01c79ce 100644
  	menu->redraw = edit_address_list (HDR_TO, &msg->env->to);
  	if (option (OPTCRYPTOPPORTUNISTICENCRYPT))
  	{
-@@ -541,6 +590,10 @@ int mutt_compose_menu (HEADER *msg,   /* structure for new message */
+@@ -545,6 +624,10 @@ int mutt_compose_menu (HEADER *msg,   /* structure for new message */
          mutt_message_hook (NULL, msg, M_SEND2HOOK);
          break;
        case OP_COMPOSE_EDIT_BCC:
@@ -1596,7 +1793,7 @@ index 42bdb46..01c79ce 100644
  	menu->redraw = edit_address_list (HDR_BCC, &msg->env->bcc);
  	if (option (OPTCRYPTOPPORTUNISTICENCRYPT))
  	{
-@@ -550,6 +603,10 @@ int mutt_compose_menu (HEADER *msg,   /* structure for new message */
+@@ -554,6 +637,10 @@ int mutt_compose_menu (HEADER *msg,   /* structure for new message */
          mutt_message_hook (NULL, msg, M_SEND2HOOK);
  	break;
        case OP_COMPOSE_EDIT_CC:
@@ -1607,7 +1804,7 @@ index 42bdb46..01c79ce 100644
  	menu->redraw = edit_address_list (HDR_CC, &msg->env->cc);
  	if (option (OPTCRYPTOPPORTUNISTICENCRYPT))
  	{
-@@ -558,6 +615,62 @@ int mutt_compose_menu (HEADER *msg,   /* structure for new message */
+@@ -562,6 +649,62 @@ int mutt_compose_menu (HEADER *msg,   /* structure for new message */
  	}
          mutt_message_hook (NULL, msg, M_SEND2HOOK);	
          break;
@@ -1670,7 +1867,7 @@ index 42bdb46..01c79ce 100644
        case OP_COMPOSE_EDIT_SUBJECT:
  	if (msg->env->subject)
  	  strfcpy (buf, msg->env->subject, sizeof (buf));
-@@ -726,6 +839,9 @@ int mutt_compose_menu (HEADER *msg,   /* structure for new message */
+@@ -730,6 +873,9 @@ int mutt_compose_menu (HEADER *msg,   /* structure for new message */
          break;
  
        case OP_COMPOSE_ATTACH_MESSAGE:
@@ -1680,7 +1877,7 @@ index 42bdb46..01c79ce 100644
  	{
  	  char *prompt;
  	  HEADER *h;
-@@ -733,7 +849,22 @@ int mutt_compose_menu (HEADER *msg,   /* structure for new message */
+@@ -737,7 +883,22 @@ int mutt_compose_menu (HEADER *msg,   /* structure for new message */
  	  fname[0] = 0;
  	  prompt = _("Open mailbox to attach message from");
  
@@ -1703,7 +1900,7 @@ index 42bdb46..01c79ce 100644
  	  {
  	    strfcpy (fname, NONULL (Context->path), sizeof (fname));
  	    mutt_pretty_mailbox (fname, sizeof (fname));
-@@ -742,6 +873,11 @@ int mutt_compose_menu (HEADER *msg,   /* structure for new message */
+@@ -746,6 +907,11 @@ int mutt_compose_menu (HEADER *msg,   /* structure for new message */
  	  if (mutt_enter_fname (prompt, fname, sizeof (fname), &menu->redraw, 1) == -1 || !fname[0])
  	    break;
  
@@ -1715,7 +1912,7 @@ index 42bdb46..01c79ce 100644
  	  mutt_expand_path (fname, sizeof (fname));
  #ifdef USE_IMAP
            if (!mx_is_imap (fname))
-@@ -749,6 +885,9 @@ int mutt_compose_menu (HEADER *msg,   /* structure for new message */
+@@ -753,6 +919,9 @@ int mutt_compose_menu (HEADER *msg,   /* structure for new message */
  #ifdef USE_POP
            if (!mx_is_pop (fname))
  #endif
@@ -1726,10 +1923,10 @@ index 42bdb46..01c79ce 100644
  	  if (access (fname, R_OK) == -1)
  	  {
 diff --git a/configure.ac b/configure.ac
-index 8c833fa..aa364c3 100644
+index 7c038fd..9aa056a 100644
 --- a/configure.ac
 +++ b/configure.ac
-@@ -600,6 +600,15 @@ AC_ARG_ENABLE(imap, AS_HELP_STRING([--enable-imap],[Enable IMAP support]),
+@@ -617,6 +617,15 @@ AC_ARG_ENABLE(imap, AS_HELP_STRING([--enable-imap],[Enable IMAP support]),
  ])
  AM_CONDITIONAL(BUILD_IMAP, test x$need_imap = xyes)
  
@@ -1745,7 +1942,7 @@ index 8c833fa..aa364c3 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 +616,7 @@ AC_ARG_ENABLE(smtp, AS_HELP_STRING([--enable-smtp],[include internal SMTP relay
+@@ -624,7 +633,7 @@ AC_ARG_ENABLE(smtp, AS_HELP_STRING([--enable-smtp],[include internal SMTP relay
  		need_socket="yes"
  	fi])
  
@@ -1755,7 +1952,7 @@ index 8c833fa..aa364c3 100644
  fi
  
 diff --git a/curs_main.c b/curs_main.c
-index 3ad22c4..1280414 100644
+index 48443cf..b64a862 100644
 --- a/curs_main.c
 +++ b/curs_main.c
 @@ -22,6 +22,7 @@
@@ -1766,7 +1963,7 @@ index 3ad22c4..1280414 100644
  #include "mutt_menu.h"
  #include "mailbox.h"
  #include "mapping.h"
-@@ -40,6 +41,10 @@
+@@ -43,6 +44,10 @@
  
  #include "mutt_crypt.h"
  
@@ -1777,7 +1974,7 @@ index 3ad22c4..1280414 100644
  
  #include <ctype.h>
  #include <stdlib.h>
-@@ -568,12 +573,27 @@ static const struct mapping_t IndexHelp[] = {
+@@ -494,12 +499,27 @@ static const struct mapping_t IndexHelp[] = {
    { NULL,	 0 }
  };
  
@@ -1805,7 +2002,7 @@ index 3ad22c4..1280414 100644
    int op = OP_NULL;
    int done = 0;                /* controls when to exit the "event" loop */
    int i = 0, j;
-@@ -594,7 +614,11 @@ int mutt_index_menu (void)
+@@ -520,7 +540,11 @@ int mutt_index_menu (void)
    menu->make_entry = index_make_entry;
    menu->color = index_color;
    menu->current = ci_first_message ();
@@ -1818,7 +2015,7 @@ index 3ad22c4..1280414 100644
  
    if (!attach_msg)
      mutt_buffy_check(1); /* force the buffy check after we enter the folder */
-@@ -853,6 +877,9 @@ int mutt_index_menu (void)
+@@ -794,6 +818,9 @@ int mutt_index_menu (void)
        mutt_curs_set (1);	/* fallback from the pager */
      }
  
@@ -1828,7 +2025,7 @@ index 3ad22c4..1280414 100644
      switch (op)
      {
  
-@@ -903,6 +930,161 @@ int mutt_index_menu (void)
+@@ -844,6 +871,161 @@ int mutt_index_menu (void)
  	menu_current_bottom (menu);
  	break;
  
@@ -1990,7 +2187,7 @@ index 3ad22c4..1280414 100644
        case OP_JUMP:
  
  	CHECK_MSGCOUNT;
-@@ -1000,11 +1182,33 @@ int mutt_index_menu (void)
+@@ -941,11 +1123,33 @@ int mutt_index_menu (void)
          break;
  
        case OP_MAIN_LIMIT:
@@ -2025,8 +2222,8 @@ index 3ad22c4..1280414 100644
  	{
  	  if (menu->oldcurrent >= 0)
  	  {
-@@ -1249,15 +1453,22 @@ int mutt_index_menu (void)
-       case OP_SIDEBAR_OPEN:
+@@ -1194,15 +1398,22 @@ int mutt_index_menu (void)
+ #endif
        case OP_MAIN_CHANGE_FOLDER:
        case OP_MAIN_NEXT_UNREAD_MAILBOX:
 -
@@ -2055,7 +2252,7 @@ index 3ad22c4..1280414 100644
            cp = _("Open mailbox in read-only mode");
          else
            cp = _("Open mailbox");
-@@ -1276,6 +1487,22 @@ int mutt_index_menu (void)
+@@ -1221,6 +1432,22 @@ int mutt_index_menu (void)
  	}
  	else
  	{
@@ -2077,8 +2274,8 @@ index 3ad22c4..1280414 100644
 +#endif
  	  mutt_buffy (buf, sizeof (buf));
  
-           if ( op == OP_SIDEBAR_OPEN ) {
-@@ -1299,6 +1526,14 @@ int mutt_index_menu (void)
+ #ifdef USE_SIDEBAR
+@@ -1248,6 +1475,14 @@ int mutt_index_menu (void)
  	  }
  	}
  
@@ -2091,9 +2288,9 @@ index 3ad22c4..1280414 100644
 +	else
 +#endif
  	mutt_expand_path (buf, sizeof (buf));
-         set_curbuffy(buf);
- 	if (mx_get_magic (buf) <= 0)
-@@ -1346,15 +1581,18 @@ int mutt_index_menu (void)
+ #ifdef USE_SIDEBAR
+ 	sb_set_open_buffy (buf);
+@@ -1297,15 +1532,18 @@ int mutt_index_menu (void)
  	CurrentMenu = MENU_MAIN;
  	mutt_folder_hook (buf);
  
@@ -2115,7 +2312,7 @@ index 3ad22c4..1280414 100644
  	mutt_clear_error ();
  	mutt_buffy_check(1); /* force the buffy check after we have changed
  			      the folder */
-@@ -1423,6 +1661,7 @@ int mutt_index_menu (void)
+@@ -1374,6 +1612,7 @@ int mutt_index_menu (void)
  	CHECK_MSGCOUNT;
          CHECK_VISIBLE;
  	CHECK_READONLY;
@@ -2123,7 +2320,7 @@ index 3ad22c4..1280414 100644
  
          if ((Sort & SORT_MASK) != SORT_THREADS)
  	  mutt_error _("Threading is not enabled.");
-@@ -1458,7 +1697,7 @@ int mutt_index_menu (void)
+@@ -1409,7 +1648,7 @@ int mutt_index_menu (void)
          CHECK_VISIBLE;
  	CHECK_READONLY;
          /* L10N: CHECK_ACL */
@@ -2132,7 +2329,7 @@ index 3ad22c4..1280414 100644
  
          if ((Sort & SORT_MASK) != SORT_THREADS)
  	  mutt_error _("Threading is not enabled.");
-@@ -2095,6 +2334,20 @@ int mutt_index_menu (void)
+@@ -2046,6 +2285,20 @@ int mutt_index_menu (void)
  	}
  	break;
  
@@ -2153,7 +2350,7 @@ index 3ad22c4..1280414 100644
        case OP_DISPLAY_ADDRESS:
  
  	CHECK_MSGCOUNT;
-@@ -2301,6 +2554,39 @@ int mutt_index_menu (void)
+@@ -2252,6 +2505,39 @@ int mutt_index_menu (void)
          menu->redraw = REDRAW_FULL;
          break;
  
@@ -2193,422 +2390,409 @@ index 3ad22c4..1280414 100644
        case OP_REPLY:
  
  	CHECK_ATTACH;
-diff --git a/doc/Muttrc b/doc/Muttrc
-index 01272c7..4145b73 100644
---- a/doc/Muttrc
-+++ b/doc/Muttrc
-@@ -240,6 +240,28 @@ attachments   -I message/external-body
- # editing the body of an outgoing message.
- # 
- # 
-+# set ask_follow_up=no
-+#
-+# Name: ask_follow_up
-+# Type: boolean
-+# Default: no
-+# 
-+# 
-+# If set, Mutt will prompt you for follow-up groups before editing
-+# the body of an outgoing message.
-+# 
-+# 
-+# set ask_x_comment_to=no
-+#
-+# Name: ask_x_comment_to
-+# Type: boolean
-+# Default: no
-+# 
-+# 
-+# If set, Mutt will prompt you for x-comment-to field before editing
-+# the body of an outgoing message.
-+# 
-+# 
- # set assumed_charset=""
- #
- # Name: assumed_charset
-@@ -445,6 +467,17 @@ attachments   -I message/external-body
- # visual terminals don't permit making the cursor invisible.
- # 
- # 
-+# set catchup_newsgroup=ask-yes
-+#
-+# Name: catchup_newsgroup
-+# Type: quadoption
-+# Default: ask-yes
-+# 
-+# 
-+# If this variable is set, Mutt will mark all articles in newsgroup
-+# as read when you quit the newsgroup (catchup newsgroup).
-+# 
-+# 
- # set certificate_file="~/.mutt_certificates"
- #
- # Name: certificate_file
-@@ -1193,6 +1226,19 @@ attachments   -I message/external-body
- # of the same email for you.
- # 
- # 
-+# set followup_to_poster=ask-yes
-+#
-+# Name: followup_to_poster
-+# Type: quadoption
-+# Default: ask-yes
-+# 
-+# 
-+# If this variable is set and the keyword "poster" is present in
-+# Followup-To header, follow-up to newsgroup function is not
-+# permitted.  The message will be mailed to the submitter of the
-+# message via mail.
-+# 
-+# 
- # set force_name=no
- #
- # Name: force_name
-@@ -1303,6 +1349,27 @@ attachments   -I message/external-body
- # ``Franklin'' to ``Franklin, Steve''.
- # 
- # 
-+# set group_index_format="%4C %M%N %5s  %-45.45f %d"
-+#
-+# Name: group_index_format
-+# Type: string
-+# Default: "%4C %M%N %5s  %-45.45f %d"
-+# 
-+# 
-+# This variable allows you to customize the newsgroup browser display to
-+# your personal taste.  This string is similar to ``index_format'', but
-+# has its own set of printf()-like sequences:
-+# %C      current newsgroup number
-+# %d      description of newsgroup (becomes from server)
-+# %f      newsgroup name
-+# %M      - if newsgroup not allowed for direct post (moderated for example)
-+# %N      N if newsgroup is new, u if unsubscribed, blank otherwise
-+# %n      number of new articles in newsgroup
-+# %s      number of unread articles in newsgroup
-+# %>X     right justify the rest of the string and pad with character "X"
-+# %|X     pad to the end of the line with character "X"
-+# 
-+# 
- # set hdrs=yes
- #
- # Name: hdrs
-@@ -1875,6 +1942,7 @@ attachments   -I message/external-body
- # %E      number of messages in current thread
- # %f      sender (address + real name), either From: or Return-Path:
- # %F      author name, or recipient name if the message is from you
-+# %g      newsgroup name (if compiled with NNTP support)
- # %H      spam attribute(s) of this message
- # %i      message-id of the current message
- # %l      number of lines in the message (does not work with maildir,
-@@ -1898,6 +1966,8 @@ attachments   -I message/external-body
- # %T      the appropriate character from the $to_chars string
- # %u      user (login) name of the author
- # %v      first name of the author, or the recipient if the message is from you
-+# %W      name of organization of author (``Organization:'' field)
-+# %x      ``X-Comment-To:'' field (if present and compiled with NNTP support)
- # %X      number of attachments
- #         (please see the ``attachments'' section for possible speed effects)
- # %y      ``X-Label:'' field, if present
-@@ -1933,6 +2003,27 @@ attachments   -I message/external-body
- # ``save-hook'', ``fcc-hook'' and ``fcc-save-hook'', too.
- # 
- # 
-+# set inews=""
-+#
-+# Name: inews
-+# Type: path
-+# Default: ""
-+# 
-+# 
-+# If set, specifies the program and arguments used to deliver news posted
-+# by Mutt.  Otherwise, mutt posts article using current connection to
-+# news server.  The following printf-style sequence is understood:
-+# %a      account url
-+# %p      port
-+# %P      port if specified
-+# %s      news server name
-+# %S      url schema
-+# %u      username
-+# 
-+# 
-+# Example: set inews="/usr/local/bin/inews -hS"
-+# 
-+# 
- # set ispell="ispell"
- #
- # Name: ispell
-@@ -2317,6 +2408,18 @@ attachments   -I message/external-body
- # be attached to the newly composed message if this option is set.
- # 
- # 
-+# set mime_subject=yes
-+#
-+# Name: mime_subject
-+# Type: boolean
-+# Default: yes
-+# 
-+# 
-+# If unset, 8-bit ``subject:'' line in article header will not be
-+# encoded according to RFC2047 to base64.  This is useful when message
-+# is Usenet article, because MIME for news is nonstandard feature.
-+# 
-+# 
- # set mix_entry_format="%4n %c %-16s %a"
- #
- # Name: mix_entry_format
-@@ -2383,6 +2486,144 @@ attachments   -I message/external-body
- # See also $read_inc, $write_inc and $net_inc.
- # 
- # 
-+# set news_cache_dir="~/.mutt"
-+#
-+# Name: news_cache_dir
-+# Type: path
-+# Default: "~/.mutt"
-+# 
-+# 
-+# This variable pointing to directory where Mutt will save cached news
-+# articles and headers in. If unset, articles and headers will not be
-+# saved at all and will be reloaded from the server each time.
-+# 
-+# 
-+# set news_server=""
-+#
-+# Name: news_server
-+# Type: string
-+# Default: ""
-+# 
-+# 
-+# This variable specifies domain name or address of NNTP server. It
-+# defaults to the news server specified in the environment variable
-+# $NNTPSERVER or contained in the file /etc/nntpserver.  You can also
-+# specify username and an alternative port for each news server, ie:
-+# 
-+# [[s]news://][username[:password]@]server[:port]
-+# 
-+# 
-+# set newsgroups_charset="utf-8"
-+#
-+# Name: newsgroups_charset
-+# Type: string
-+# Default: "utf-8"
-+# 
-+# 
-+# Character set of newsgroups descriptions.
-+# 
-+# 
-+# set newsrc="~/.newsrc"
-+#
-+# Name: newsrc
-+# Type: path
-+# Default: "~/.newsrc"
-+# 
-+# 
-+# The file, containing info about subscribed newsgroups - names and
-+# indexes of read articles.  The following printf-style sequence
-+# is understood:
-+# %a      account url
-+# %p      port
-+# %P      port if specified
-+# %s      news server name
-+# %S      url schema
-+# %u      username
-+# 
-+# 
-+# set nntp_authenticators=""
-+#
-+# Name: nntp_authenticators
-+# Type: string
-+# Default: ""
-+# 
-+# 
-+# This is a colon-delimited list of authentication methods mutt may
-+# attempt to use to log in to a news server, in the order mutt should
-+# try them.  Authentication methods are either ``user'' or any
-+# SASL mechanism, e.g. ``digest-md5'', ``gssapi'' or ``cram-md5''.
-+# This option is case-insensitive.  If it's unset (the default)
-+# mutt will try all available methods, in order from most-secure to
-+# least-secure.
-+# 
-+# Example:
-+# set nntp_authenticators="digest-md5:user"
-+# 
-+# Note: Mutt will only fall back to other authentication methods if
-+# the previous methods are unavailable. If a method is available but
-+# authentication fails, mutt will not connect to the IMAP server.
-+# 
-+# 
-+# set nntp_context=1000
-+#
-+# Name: nntp_context
-+# Type: number
-+# Default: 1000
-+# 
-+# 
-+# This variable defines number of articles which will be in index when
-+# newsgroup entered.  If active newsgroup have more articles than this
-+# number, oldest articles will be ignored.  Also controls how many
-+# articles headers will be saved in cache when you quit newsgroup.
-+# 
-+# 
-+# set nntp_load_description=yes
-+#
-+# Name: nntp_load_description
-+# Type: boolean
-+# Default: yes
-+# 
-+# 
-+# This variable controls whether or not descriptions for each newsgroup
-+# must be loaded when newsgroup is added to list (first time list
-+# loading or new newsgroup adding).
-+# 
-+# 
-+# set nntp_user=""
-+#
-+# Name: nntp_user
-+# Type: string
-+# Default: ""
-+# 
-+# 
-+# Your login name on the NNTP server.  If unset and NNTP server requires
-+# authentification, Mutt will prompt you for your account name when you
-+# connect to news server.
-+# 
-+# 
-+# set nntp_pass=""
-+#
-+# Name: nntp_pass
-+# Type: string
-+# Default: ""
-+# 
-+# 
-+# Your password for NNTP account.
-+# 
-+# 
-+# set nntp_poll=60
-+#
-+# Name: nntp_poll
-+# Type: number
-+# Default: 60
-+# 
-+# 
-+# The time in seconds until any operations on newsgroup except post new
-+# article will cause recheck for new news.  If set to 0, Mutt will
-+# recheck newsgroup on each operation in index (stepping, read article,
-+# etc.).
-+# 
-+# 
- # set pager="builtin"
- #
- # Name: pager
-@@ -3130,6 +3371,19 @@ attachments   -I message/external-body
- # string after the inclusion of a message which is being replied to.
- # 
- # 
-+# set post_moderated=ask-yes
-+#
-+# Name: post_moderated
-+# Type: quadoption
-+# Default: ask-yes
-+# 
-+# 
-+# If set to yes, Mutt will post article to newsgroup that have
-+# not permissions to posting (e.g. moderated).  Note: if news server
-+# does not support posting to that newsgroup or totally read-only, that
-+# posting will not have an effect.
-+# 
-+# 
- # set postpone=ask-yes
- #
- # Name: postpone
-@@ -3815,6 +4069,41 @@ attachments   -I message/external-body
- # shell from /etc/passwd is used.
- # 
- # 
-+# set save_unsubscribed=no
-+#
-+# Name: save_unsubscribed
-+# Type: boolean
-+# Default: no
-+# 
-+# 
-+# When set, info about unsubscribed newsgroups will be saved into
-+# ``newsrc'' file and into cache.
-+# 
-+# 
-+# set show_new_news=yes
-+#
-+# Name: show_new_news
-+# Type: boolean
-+# Default: yes
-+# 
-+# 
-+# If set, news server will be asked for new newsgroups on entering
-+# the browser.  Otherwise, it will be done only once for a news server.
-+# Also controls whether or not number of new articles of subscribed
-+# newsgroups will be then checked.
-+# 
-+# 
-+# set show_only_unread=no
-+#
-+# Name: show_only_unread
-+# Type: boolean
-+# Default: no
-+# 
-+# 
-+# If set, only subscribed newsgroups that contain unread articles
-+# will be displayed in browser.
-+# 
-+# 
- # set sig_dashes=yes
- #
- # Name: sig_dashes
-@@ -5114,3 +5403,14 @@ attachments   -I message/external-body
- # ``tuning'' section of the manual for performance considerations.
- # 
- # 
-+# set x_comment_to=no
-+#
-+# Name: x_comment_to
-+# Type: boolean
-+# Default: no
-+# 
-+# 
-+# If set, Mutt will add ``X-Comment-To:'' field (that contains full
-+# name of original article author) to article that followuped to newsgroup.
-+# 
-+# 
 diff --git a/doc/manual.xml.head b/doc/manual.xml.head
-index 033abf9..898d2f7 100644
+index 166f3cb..ab6ac29 100644
 --- a/doc/manual.xml.head
 +++ b/doc/manual.xml.head
-@@ -1734,6 +1734,26 @@ See also the <link linkend="postpone">$postpone</link> quad-option.
- 
+@@ -9976,6 +9976,398 @@ color sidebar_new green black
+ 	</sect2>
  </sect1>
  
 +<sect1 id="nntp">
-+<title>Reading news via NNTP</title>
-+
-+<para>
-+If compiled with <emphasis>--enable-nntp</emphasis> option, Mutt can
-+read news from news server via NNTP.  You can open a newsgroup with
-+function ``change-newsgroup'' (default: ``i'').  Default news server
-+can be obtained from <literal>$NNTPSERVER</literal> environment
-+variable or from <literal>/etc/nntpserver</literal> file.  Like other
-+news readers, info about subscribed newsgroups is saved in file by
-+<link linkend="newsrc">$newsrc</link> variable.  The variable <link
-+linkend="news-cache-dir">$news_cache_dir</link> can be used to point
-+to a directory.  Mutt will create a hierarchy of subdirectories named
-+like the account and newsgroup the cache is for.  Also the hierarchy
-+is used to store header cache if Mutt was compiled with <link
-+linkend="header-caching">header cache</link> support.
-+</para>
-+
++	<title>NNTP Patch</title>
++	<subtitle>Talk to a Usenet news server</subtitle>
++
++	<sect2 id="nntp-patch">
++		<title>Patch</title>
++
++		<para>
++			To check if Mutt supports <quote>NNTP</quote>, look for
++			<quote>+USE_NNTP</quote> in the mutt version.
++			See: <xref linkend="compile-time-features"/>.
++		</para>
++
++		<itemizedlist>
++			<title>Dependencies:</title>
++			<listitem><para>mutt-1.5.24</para></listitem>
++		</itemizedlist>
++
++		<para>This patch is part of the <ulink url="https://github.com/neomutt/neomutt/wiki">NeoMutt Project</ulink>.</para>
++	</sect2>
++
++	<sect2 id="nntp-intro">
++		<title>Introduction</title>
++
++		<para>Reading news via NNTP</para>
++		<para>
++		If compiled with <emphasis>--enable-nntp</emphasis> option, Mutt can
++		read news from news server via NNTP.  You can open a newsgroup with
++		function ``change-newsgroup'' (default: ``i'').  Default news server
++		can be obtained from <literal>$NNTPSERVER</literal> environment
++		variable or from <literal>/etc/nntpserver</literal> file.  Like other
++		news readers, info about subscribed newsgroups is saved in file by
++		<link linkend="newsrc">$newsrc</link> variable.  The variable <link
++		linkend="news-cache-dir">$news_cache_dir</link> can be used to point
++		to a directory.  Mutt will create a hierarchy of subdirectories named
++		like the account and newsgroup the cache is for.  Also the hierarchy
++		is used to store header cache if Mutt was compiled with <link
++		linkend="header-caching">header cache</link> support.
++		</para>
++	</sect2>
++
++	<sect2 id="nntp-variables">
++		<title>Variables</title>
++
++		<table id="table-nntp-variables">
++			<title>NNTP Variables</title>
++			<tgroup cols="3">
++				<thead>
++					<row>
++						<entry>Name</entry>
++						<entry>Type</entry>
++						<entry>Default</entry>
++					</row>
++				</thead>
++				<tbody>
++					<row>
++						<entry><literal>ask_follow_up</literal></entry>
++						<entry>boolean</entry>
++						<entry><literal>no</literal></entry>
++					</row>
++					<row>
++						<entry><literal>ask_x_comment_to</literal></entry>
++						<entry>boolean</entry>
++						<entry><literal>no</literal></entry>
++					</row>
++					<row>
++						<entry><literal>catchup_newsgroup</literal></entry>
++						<entry>quad</entry>
++						<entry><literal>ask-yes</literal></entry>
++					</row>
++					<row>
++						<entry><literal>followup_to_poster</literal></entry>
++						<entry>quad</entry>
++						<entry><literal>ask-yes</literal></entry>
++					</row>
++					<row>
++						<entry><literal>group_index_format</literal></entry>
++						<entry>string</entry>
++						<entry><literal>%4C %M%N %5s  %-45.45f %d</literal></entry>
++					</row>
++					<row>
++						<entry><literal>inews</literal></entry>
++						<entry>string</entry>
++						<entry>(empty)</entry>
++					</row>
++					<row>
++						<entry><literal>mime_subject</literal></entry>
++						<entry>boolean</entry>
++						<entry><literal>yes</literal></entry>
++					</row>
++					<row>
++						<entry><literal>newsgroups_charset</literal></entry>
++						<entry>string</entry>
++						<entry><literal>utf-8</literal></entry>
++					</row>
++					<row>
++						<entry><literal>newsrc</literal></entry>
++						<entry>string</entry>
++						<entry><literal>~/.newsrc</literal></entry>
++					</row>
++					<row>
++						<entry><literal>news_cache_dir</literal></entry>
++						<entry>string</entry>
++						<entry><literal>~/.mutt</literal></entry>
++					</row>
++					<row>
++						<entry><literal>news_server</literal></entry>
++						<entry>string</entry>
++						<entry>(empty)</entry>
++					</row>
++					<row>
++						<entry><literal>nntp_authenticators</literal></entry>
++						<entry>string</entry>
++						<entry>(empty)</entry>
++					</row>
++					<row>
++						<entry><literal>nntp_context</literal></entry>
++						<entry>number</entry>
++						<entry><literal>1000</literal></entry>
++					</row>
++					<row>
++						<entry><literal>nntp_listgroup</literal></entry>
++						<entry>boolean</entry>
++						<entry><literal>yes</literal></entry>
++					</row>
++					<row>
++						<entry><literal>nntp_load_description</literal></entry>
++						<entry>boolean</entry>
++						<entry><literal>yes</literal></entry>
++					</row>
++					<row>
++						<entry><literal>nntp_pass</literal></entry>
++						<entry>string</entry>
++						<entry>(empty)</entry>
++					</row>
++					<row>
++						<entry><literal>nntp_poll</literal></entry>
++						<entry>number</entry>
++						<entry><literal>60</literal></entry>
++					</row>
++					<row>
++						<entry><literal>nntp_user</literal></entry>
++						<entry>string</entry>
++						<entry>(empty)</entry>
++					</row>
++					<row>
++						<entry><literal>post_moderated</literal></entry>
++						<entry>quad</entry>
++						<entry><literal>ask-yes</literal></entry>
++					</row>
++					<row>
++						<entry><literal>save_unsubscribed</literal></entry>
++						<entry>boolean</entry>
++						<entry><literal>no</literal></entry>
++					</row>
++					<row>
++						<entry><literal>show_new_news</literal></entry>
++						<entry>boolean</entry>
++						<entry><literal>yes</literal></entry>
++					</row>
++					<row>
++						<entry><literal>show_only_unread</literal></entry>
++						<entry>boolean</entry>
++						<entry><literal>no</literal></entry>
++					</row>
++					<row>
++						<entry><literal>x_comment_to</literal></entry>
++						<entry>boolean</entry>
++						<entry><literal>no</literal></entry>
++					</row>
++				</tbody>
++			</tgroup>
++		</table>
++	</sect2>
++
++	<sect2 id="nntp-functions">
++		<title>Functions</title>
++
++		<table id="table-nntp-functions">
++			<title>NNTP Functions</title>
++			<tgroup cols="4">
++				<thead>
++					<row>
++						<entry>Menus</entry>
++						<entry>Default Key</entry>
++						<entry>Function</entry>
++						<entry>Description</entry>
++					</row>
++				</thead>
++				<tbody>
++					<row>
++						<entry>browser,index</entry>
++						<entry>y</entry>
++						<entry><literal><catchup></literal></entry>
++						<entry>mark all articles in newsgroup as read</entry>
++					</row>
++					<row>
++						<entry>index,pager</entry>
++						<entry>i</entry>
++						<entry><literal><change-newsgroup></literal></entry>
++						<entry>open a different newsgroup</entry>
++					</row>
++					<row>
++						<entry>pager</entry>
++						<entry>X</entry>
++						<entry><literal><change-vfolder></literal></entry>
++						<entry>open a different virtual folder</entry>
++					</row>
++					<row>
++						<entry>compose</entry>
++						<entry>o</entry>
++						<entry><literal><edit-followup-to></literal></entry>
++						<entry>edit the Followup-To field</entry>
++					</row>
++					<row>
++						<entry>compose</entry>
++						<entry>N</entry>
++						<entry><literal><edit-newsgroups></literal></entry>
++						<entry>edit the newsgroups list</entry>
++					</row>
++					<row>
++						<entry>compose</entry>
++						<entry>x</entry>
++						<entry><literal><edit-x-comment-to></literal></entry>
++						<entry>edit the X-Comment-To field</entry>
++					</row>
++					<row>
++						<entry>pager</entry>
++						<entry>+</entry>
++						<entry><literal><entire-thread></literal></entry>
++						<entry>read entire thread of the current message</entry>
++					</row>
++					<row>
++						<entry>attachment,index,pager</entry>
++						<entry>F</entry>
++						<entry><literal><followup-message></literal></entry>
++						<entry>followup to newsgroup</entry>
++					</row>
++					<row>
++						<entry>pager</entry>
++						<entry>`</entry>
++						<entry><literal><modify-labels></literal></entry>
++						<entry>modify (notmuch) tags</entry>
++					</row>
++					<row>
++						<entry>index,pager</entry>
++						<entry>P</entry>
++						<entry><literal><post-message></literal></entry>
++						<entry>post message to newsgroup</entry>
++					</row>
++					<row>
++						<entry>browser</entry>
++						<entry>g</entry>
++						<entry><literal><reload-active></literal></entry>
++						<entry>load list of all newsgroups from NNTP server</entry>
++					</row>
++					<row>
++						<entry>browser</entry>
++						<entry>s</entry>
++						<entry><literal><subscribe></literal></entry>
++						<entry>subscribe to current mbox (IMAP/NNTP only)</entry>
++					</row>
++					<row>
++						<entry>browser</entry>
++						<entry>S</entry>
++						<entry><literal><subscribe-pattern></literal></entry>
++						<entry>subscribe to newsgroups matching a pattern</entry>
++					</row>
++					<row>
++						<entry>browser</entry>
++						<entry>Y</entry>
++						<entry><literal><uncatchup></literal></entry>
++						<entry>mark all articles in newsgroup as unread</entry>
++					</row>
++					<row>
++						<entry>browser</entry>
++						<entry>u</entry>
++						<entry><literal><unsubscribe></literal></entry>
++						<entry>unsubscribe from current mbox (IMAP/NNTP only)</entry>
++					</row>
++					<row>
++						<entry>browser</entry>
++						<entry>U</entry>
++						<entry><literal><unsubscribe-pattern></literal></entry>
++						<entry>unsubscribe from newsgroups matching a pattern</entry>
++					</row>
++					<row>
++						<entry>index,pager</entry>
++						<entry>Alt-i</entry>
++						<entry><literal><change-newsgroup-readonly></literal></entry>
++						<entry>open a different newsgroup in read only mode</entry>
++					</row>
++					<row>
++						<entry>attachment,index,pager</entry>
++						<entry>Alt-F</entry>
++						<entry><literal><forward-to-group></literal></entry>
++						<entry>forward to newsgroup</entry>
++					</row>
++					<row>
++						<entry>index</entry>
++						<entry>(none)</entry>
++						<entry><literal><get-children></literal></entry>
++						<entry>get all children of the current message</entry>
++					</row>
++					<row>
++						<entry>index</entry>
++						<entry>Alt-G</entry>
++						<entry><literal><get-parent></literal></entry>
++						<entry>get parent of the current message</entry>
++					</row>
++					<row>
++						<entry>index,pager</entry>
++						<entry>(none)</entry>
++						<entry><literal><imap-fetch-mail></literal></entry>
++						<entry>force retrieval of mail from IMAP server</entry>
++					</row>
++					<row>
++						<entry>index,pager</entry>
++						<entry>(none)</entry>
++						<entry><literal><imap-logout-all></literal></entry>
++						<entry>logout from all IMAP servers</entry>
++					</row>
++					<row>
++						<entry>pager</entry>
++						<entry>(none)</entry>
++						<entry><literal><modify-labels-then-hide></literal></entry>
++						<entry>modify labeld and then hide message</entry>
++					</row>
++					<row>
++						<entry>index</entry>
++						<entry>(none)</entry>
++						<entry><literal><reconstruct-thread></literal></entry>
++						<entry>reconstruct thread containing current message</entry>
++					</row>
++					<row>
++						<entry>pager</entry>
++						<entry>Alt-X</entry>
++						<entry><literal><vfolder-from-query></literal></entry>
++						<entry>generate virtual folder from query</entry>
++					</row>
++					<row>
++						<entry>index</entry>
++						<entry>Ctrl-G</entry>
++						<entry><literal><get-message></literal></entry>
++						<entry>get message with Message-Id</entry>
++					</row>
++				</tbody>
++			</tgroup>
++		</table>
++	</sect2>
++
++	<sect2 id="nntp-commands">
++		<title>Commands</title>
++	</sect2>
++
++	<sect2 id="nntp-colors">
++		<title>Colors</title>
++		<para>None</para>
++	</sect2>
++
++	<sect2 id="nntp-sort">
++		<title>Sort</title>
++		<para>None</para>
++	</sect2>
++
++	<sect2 id="nntp-muttrc">
++		<title>Muttrc</title>
++	</sect2>
++
++	<sect2 id="nntp-see-also">
++		<title>See Also</title>
++
++		<itemizedlist>
++			<listitem><para><ulink url="https://github.com/neomutt/neomutt/wiki">NeoMutt Project</ulink></para></listitem>
++			<listitem><para><link linkend="compile-time-features">Compile-Time Features</link></para></listitem>
++		</itemizedlist>
++	</sect2>
++
++	<sect2 id="nntp-known-bugs">
++		<title>Known Bugs</title>
++	</sect2>
++
++	<sect2 id="nntp-credits">
++		<title>Credits</title>
++		<itemizedlist>
++		<listitem><para>Vsevolod Volkov <email>vvv at mutt.org.ua</email></para></listitem>
++		<listitem><para>Felix von Leitner <email>leitner at fefe.de</email></para></listitem>
++		<listitem><para>Richard Russon <email>rich at flatcap.org</email></para></listitem>
++		</itemizedlist>
++	</sect2>
 +</sect1>
 +
  </chapter>
  
- <chapter id="configuration">
+ <chapter id="security">
 diff --git a/doc/mutt.man b/doc/mutt.man
 index 28dd7f2..f1f1399 100644
 --- a/doc/mutt.man
@@ -2635,8 +2819,67 @@ index 28dd7f2..f1f1399 100644
  .IP "-h"
  Display help.
  .IP "-H \fIdraft\fP"
+diff --git a/doc/muttrc.nntp b/doc/muttrc.nntp
+new file mode 100644
+index 0000000..e69de29
+diff --git a/doc/vimrc-nntp b/doc/vimrc-nntp
+new file mode 100644
+index 0000000..8b93f1a
+--- /dev/null
++++ b/doc/vimrc-nntp
+@@ -0,0 +1,50 @@
++" Vim syntax file for the mutt nntp patch
++
++syntax keyword muttrcVarBool    skipwhite contained ask_follow_up         nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
++syntax keyword muttrcVarBool    skipwhite contained ask_x_comment_to      nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
++syntax keyword muttrcVarBool    skipwhite contained mime_subject          nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
++syntax keyword muttrcVarBool    skipwhite contained nntp_listgroup        nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
++syntax keyword muttrcVarBool    skipwhite contained nntp_load_description nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
++syntax keyword muttrcVarBool    skipwhite contained save_unsubscribed     nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
++syntax keyword muttrcVarBool    skipwhite contained show_new_news         nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
++syntax keyword muttrcVarBool    skipwhite contained show_only_unread      nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
++syntax keyword muttrcVarBool    skipwhite contained x_comment_to          nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
++
++syntax keyword muttrcVarNum     skipwhite contained nntp_context          nextgroup=muttrcSetNumAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
++syntax keyword muttrcVarNum     skipwhite contained nntp_poll             nextgroup=muttrcSetNumAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
++
++syn keyword muttrcVarQuad	skipwhite contained catchup_newsgroup     nextgroup=muttrcSetQuadAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
++syn keyword muttrcVarQuad	skipwhite contained followup_to_poster    nextgroup=muttrcSetQuadAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
++syn keyword muttrcVarQuad	skipwhite contained post_moderated        nextgroup=muttrcSetQuadAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
++
++syntax keyword muttrcVarStr     contained skipwhite group_index_format    nextgroup=muttrcVarEqualsIdxFmt
++syntax keyword muttrcVarStr     contained skipwhite inews                 nextgroup=muttrcVarEqualsIdxFmt
++syntax keyword muttrcVarStr     contained skipwhite newsgroups_charset    nextgroup=muttrcVarEqualsIdxFmt
++syntax keyword muttrcVarStr     contained skipwhite newsrc                nextgroup=muttrcVarEqualsIdxFmt
++syntax keyword muttrcVarStr     contained skipwhite news_cache_dir        nextgroup=muttrcVarEqualsIdxFmt
++syntax keyword muttrcVarStr     contained skipwhite news_server           nextgroup=muttrcVarEqualsIdxFmt
++syntax keyword muttrcVarStr     contained skipwhite nntp_authenticators   nextgroup=muttrcVarEqualsIdxFmt
++syntax keyword muttrcVarStr     contained skipwhite nntp_pass             nextgroup=muttrcVarEqualsIdxFmt
++syntax keyword muttrcVarStr     contained skipwhite nntp_user             nextgroup=muttrcVarEqualsIdxFmt
++
++syntax match muttrcFunction     contained "\<attach-news-message>"
++syntax match muttrcFunction     contained "\<catchup>"
++syntax match muttrcFunction     contained "\<change-newsgroup-readonly>"
++syntax match muttrcFunction     contained "\<change-newsgroup>"
++syntax match muttrcFunction     contained "\<edit-followup-to>"
++syntax match muttrcFunction     contained "\<edit-newsgroups>"
++syntax match muttrcFunction     contained "\<edit-x-comment-to>"
++syntax match muttrcFunction     contained "\<followup-message>"
++syntax match muttrcFunction     contained "\<forward-to-group>"
++syntax match muttrcFunction     contained "\<get-children>"
++syntax match muttrcFunction     contained "\<get-message>"
++syntax match muttrcFunction     contained "\<get-parent>"
++syntax match muttrcFunction     contained "\<post-message>"
++syntax match muttrcFunction     contained "\<reconstruct-thread>"
++syntax match muttrcFunction     contained "\<reload-active>"
++syntax match muttrcFunction     contained "\<subscribe-pattern>"
++syntax match muttrcFunction     contained "\<toggle-read>"
++syntax match muttrcFunction     contained "\<uncatchup>"
++syntax match muttrcFunction     contained "\<unsubscribe-pattern>"
++
++" vim: syntax=vim
 diff --git a/functions.h b/functions.h
-index 363b4d5..66f3345 100644
+index c383900..8bc90a0 100644
 --- a/functions.h
 +++ b/functions.h
 @@ -88,6 +88,10 @@ const struct binding_t OpMain[] = { /* map: index */
@@ -2697,7 +2940,7 @@ index 363b4d5..66f3345 100644
  
  
    { "extract-keys",		OP_EXTRACT_KEYS,		"\013" },
-@@ -186,6 +205,10 @@ const struct binding_t OpPager[] = { /* map: pager */
+@@ -189,6 +208,10 @@ const struct binding_t OpPager[] = { /* map: pager */
    { "bounce-message",	OP_BOUNCE_MESSAGE,		"b" },
    { "change-folder",	OP_MAIN_CHANGE_FOLDER,		"c" },
    { "change-folder-readonly",	OP_MAIN_CHANGE_FOLDER_READONLY,	"\033c" },
@@ -2708,7 +2951,7 @@ index 363b4d5..66f3345 100644
    { "next-unread-mailbox",	OP_MAIN_NEXT_UNREAD_MAILBOX, NULL },
    { "copy-message",	OP_COPY_MESSAGE,		"C" },
    { "decode-copy",	OP_DECODE_COPY,			"\033C" },
-@@ -196,8 +219,12 @@ const struct binding_t OpPager[] = { /* map: pager */
+@@ -199,8 +222,12 @@ const struct binding_t OpPager[] = { /* map: pager */
    { "clear-flag",       OP_MAIN_CLEAR_FLAG,		"W" },
    { "edit",		OP_EDIT_MESSAGE,		"e" },
    { "edit-type",	OP_EDIT_TYPE,			"\005" },
@@ -2722,7 +2965,7 @@ index 363b4d5..66f3345 100644
    { "group-reply",	OP_GROUP_REPLY,			"g" },
  #ifdef USE_IMAP
    { "imap-fetch-mail",  OP_MAIN_IMAP_FETCH,		NULL },
-@@ -219,6 +246,9 @@ const struct binding_t OpPager[] = { /* map: pager */
+@@ -222,6 +249,9 @@ const struct binding_t OpPager[] = { /* map: pager */
    { "sort-mailbox",	OP_SORT,			"o" },
    { "sort-reverse",	OP_SORT_REVERSE,		"O" },
    { "print-message",	OP_PRINT,			"p" },
@@ -2732,7 +2975,7 @@ index 363b4d5..66f3345 100644
    { "previous-thread",	OP_MAIN_PREV_THREAD,		"\020" },
    { "previous-subthread",OP_MAIN_PREV_SUBTHREAD,	"\033p" },
    { "purge-message",	OP_PURGE_MESSAGE,		NULL },
-@@ -267,7 +297,7 @@ const struct binding_t OpPager[] = { /* map: pager */
+@@ -270,7 +300,7 @@ const struct binding_t OpPager[] = { /* map: pager */
    { "half-down",	OP_HALF_DOWN,			NULL },
    { "previous-line",	OP_PREV_LINE,			NULL },
    { "bottom",		OP_PAGER_BOTTOM,		NULL },
@@ -2741,7 +2984,7 @@ index 363b4d5..66f3345 100644
  
  
  
-@@ -295,6 +325,10 @@ const struct binding_t OpAttach[] = { /* map: attachment */
+@@ -302,6 +332,10 @@ const struct binding_t OpAttach[] = { /* map: attachment */
    { "bounce-message",	OP_BOUNCE_MESSAGE,		"b" },
    { "display-toggle-weed",	OP_DISPLAY_HEADERS,	"h" },
    { "edit-type",	OP_EDIT_TYPE,			"\005" },
@@ -2752,7 +2995,7 @@ index 363b4d5..66f3345 100644
    { "print-entry",	OP_PRINT,			"p" },
    { "save-entry",	OP_SAVE,			"s" },
    { "pipe-entry",	OP_PIPE,			"|" },
-@@ -320,6 +354,7 @@ const struct binding_t OpAttach[] = { /* map: attachment */
+@@ -327,6 +361,7 @@ const struct binding_t OpAttach[] = { /* map: attachment */
  const struct binding_t OpCompose[] = { /* map: compose */
    { "attach-file",	OP_COMPOSE_ATTACH_FILE,		"a" },
    { "attach-message",	OP_COMPOSE_ATTACH_MESSAGE,	"A" },
@@ -2760,7 +3003,7 @@ index 363b4d5..66f3345 100644
    { "edit-bcc",		OP_COMPOSE_EDIT_BCC,		"b" },
    { "edit-cc",		OP_COMPOSE_EDIT_CC,		"c" },
    { "copy-file",	OP_SAVE,			"C" },
-@@ -339,6 +374,11 @@ const struct binding_t OpCompose[] = { /* map: compose */
+@@ -346,6 +381,11 @@ const struct binding_t OpCompose[] = { /* map: compose */
    { "print-entry",	OP_PRINT,			"l" },
    { "edit-mime",	OP_COMPOSE_EDIT_MIME,		"m" },
    { "new-mime",		OP_COMPOSE_NEW_MIME,		"n" },
@@ -2772,7 +3015,7 @@ index 363b4d5..66f3345 100644
    { "postpone-message",	OP_COMPOSE_POSTPONE_MESSAGE,	"P" },
    { "edit-reply-to",	OP_COMPOSE_EDIT_REPLY_TO,	"r" },
    { "rename-file",	OP_COMPOSE_RENAME_FILE,		"R" },
-@@ -390,14 +430,25 @@ const struct binding_t OpBrowser[] = { /* map: browser */
+@@ -397,14 +437,25 @@ const struct binding_t OpBrowser[] = { /* map: browser */
    { "select-new",	OP_BROWSER_NEW_FILE,	"N" },
    { "check-new",	OP_CHECK_NEW,		NULL },
    { "toggle-mailboxes", OP_TOGGLE_MAILBOXES, 	"\t" },
@@ -2799,7 +3042,7 @@ index 363b4d5..66f3345 100644
  #endif
    { NULL,		0,			NULL }
 diff --git a/globals.h b/globals.h
-index 92de9db..5677a9e 100644
+index c4a77ca..3fc9035 100644
 --- a/globals.h
 +++ b/globals.h
 @@ -69,7 +69,7 @@ WHERE char *Ispell;
@@ -2829,7 +3072,7 @@ index 92de9db..5677a9e 100644
  WHERE char *Outbox;
  WHERE char *Pager;
  WHERE char *PagerFmt;
-@@ -198,6 +209,11 @@ extern unsigned char QuadOptions[];
+@@ -201,6 +212,11 @@ extern unsigned char QuadOptions[];
  
  WHERE unsigned short Counter INITVAL (0);
  
@@ -3030,10 +3273,10 @@ index fc33253..b2dd630 100644
        (!n->in_reply_to || mutt_strcmp (n->in_reply_to->data,
  				       msg->env->in_reply_to->data) != 0))
 diff --git a/init.c b/init.c
-index d50102d..564657d 100644
+index 91889dc..ad713e8 100644
 --- a/init.c
 +++ b/init.c
-@@ -3089,6 +3089,28 @@ void mutt_init (int skip_sys_rc, LIST *commands)
+@@ -3143,6 +3143,28 @@ void mutt_init (int skip_sys_rc, LIST *commands)
      Fqdn = safe_strdup(utsname.nodename);
  
  
@@ -3063,10 +3306,10 @@ index d50102d..564657d 100644
      Spoolfile = safe_strdup (p);
    else if ((p = getenv ("MAILDIR")))
 diff --git a/init.h b/init.h
-index b7aff80..f1d8f5b 100644
+index 355a003..4713f8f 100644
 --- a/init.h
 +++ b/init.h
-@@ -176,6 +176,20 @@ struct option_t MuttVars[] = {
+@@ -177,6 +177,20 @@ struct option_t MuttVars[] = {
    ** If \fIset\fP, Mutt will prompt you for carbon-copy (Cc) recipients before
    ** editing the body of an outgoing message.
    */
@@ -3087,7 +3330,7 @@ index b7aff80..f1d8f5b 100644
    { "assumed_charset", DT_STR, R_NONE, UL &AssumedCharset, UL 0},
    /*
    ** .pp
-@@ -328,6 +342,14 @@ struct option_t MuttVars[] = {
+@@ -329,6 +343,14 @@ struct option_t MuttVars[] = {
    ** follow these menus.  The option is \fIunset\fP by default because many
    ** visual terminals don't permit making the cursor invisible.
    */
@@ -3102,7 +3345,7 @@ index b7aff80..f1d8f5b 100644
  #if defined(USE_SSL)
    { "certificate_file",	DT_PATH, R_NONE, UL &SslCertFile, UL "~/.mutt_certificates" },
    /*
-@@ -847,6 +869,16 @@ struct option_t MuttVars[] = {
+@@ -848,6 +870,16 @@ struct option_t MuttVars[] = {
    ** sent to both the list and your address, resulting in two copies
    ** of the same email for you.
    */
@@ -3119,7 +3362,7 @@ index b7aff80..f1d8f5b 100644
    { "force_name",	DT_BOOL, R_NONE, OPTFORCENAME, 0 },
    /*
    ** .pp
-@@ -929,6 +961,26 @@ struct option_t MuttVars[] = {
+@@ -930,6 +962,26 @@ struct option_t MuttVars[] = {
    ** a regular expression that will match the whole name so mutt will expand
    ** ``Franklin'' to ``Franklin, Steve''.
    */
@@ -3146,7 +3389,7 @@ index b7aff80..f1d8f5b 100644
    { "hdr_format",	DT_SYN,  R_NONE, UL "index_format", 0 },
    /*
    */
-@@ -1324,6 +1376,7 @@ struct option_t MuttVars[] = {
+@@ -1325,6 +1377,7 @@ struct option_t MuttVars[] = {
    ** .dt %E .dd number of messages in current thread
    ** .dt %f .dd sender (address + real name), either From: or Return-Path:
    ** .dt %F .dd author name, or recipient name if the message is from you
@@ -3154,7 +3397,7 @@ index b7aff80..f1d8f5b 100644
    ** .dt %H .dd spam attribute(s) of this message
    ** .dt %i .dd message-id of the current message
    ** .dt %l .dd number of lines in the message (does not work with maildir,
-@@ -1347,6 +1400,8 @@ struct option_t MuttVars[] = {
+@@ -1348,6 +1401,8 @@ struct option_t MuttVars[] = {
    ** .dt %T .dd the appropriate character from the $$to_chars string
    ** .dt %u .dd user (login) name of the author
    ** .dt %v .dd first name of the author, or the recipient if the message is from you
@@ -3163,7 +3406,7 @@ index b7aff80..f1d8f5b 100644
    ** .dt %X .dd number of attachments
    **            (please see the ``$attachments'' section for possible speed effects)
    ** .dt %y .dd ``X-Label:'' field, if present
-@@ -1381,6 +1436,25 @@ struct option_t MuttVars[] = {
+@@ -1382,6 +1437,25 @@ struct option_t MuttVars[] = {
    ** Note that these expandos are supported in
    ** ``$save-hook'', ``$fcc-hook'' and ``$fcc-save-hook'', too.
    */
@@ -3189,7 +3432,7 @@ index b7aff80..f1d8f5b 100644
    { "ispell",		DT_PATH, R_NONE, UL &Ispell, UL ISPELL },
    /*
    ** .pp
-@@ -1625,6 +1699,15 @@ struct option_t MuttVars[] = {
+@@ -1626,6 +1700,15 @@ struct option_t MuttVars[] = {
    ** menu, attachments which cannot be decoded in a reasonable manner will
    ** be attached to the newly composed message if this option is \fIset\fP.
    */
@@ -3205,7 +3448,7 @@ index b7aff80..f1d8f5b 100644
  #ifdef MIXMASTER
    { "mix_entry_format", DT_STR,  R_NONE, UL &MixEntryFormat, UL "%4n %c %-16s %a" },
    /*
-@@ -1675,6 +1758,106 @@ struct option_t MuttVars[] = {
+@@ -1676,6 +1759,106 @@ struct option_t MuttVars[] = {
     ** See also $$read_inc, $$write_inc and $$net_inc.
     */
  #endif
@@ -3312,7 +3555,7 @@ index b7aff80..f1d8f5b 100644
    { "pager",		DT_PATH, R_NONE, UL &Pager, UL "builtin" },
    /*
    ** .pp
-@@ -2253,6 +2436,16 @@ struct option_t MuttVars[] = {
+@@ -2202,6 +2385,16 @@ struct option_t MuttVars[] = {
    { "post_indent_str",  DT_SYN,  R_NONE, UL "post_indent_string", 0 },
    /*
    */
@@ -3329,7 +3572,7 @@ index b7aff80..f1d8f5b 100644
    { "postpone",		DT_QUAD, R_NONE, OPT_POSTPONE, M_ASKYES },
    /*
    ** .pp
-@@ -2729,6 +2922,28 @@ struct option_t MuttVars[] = {
+@@ -2678,6 +2871,28 @@ struct option_t MuttVars[] = {
    ** Command to use when spawning a subshell.  By default, the user's login
    ** shell from \fC/etc/passwd\fP is used.
    */
@@ -3355,10 +3598,10 @@ index b7aff80..f1d8f5b 100644
 +  ** will be displayed in browser.
 +  */
 +#endif
-   { "sig_dashes",	DT_BOOL, R_NONE, OPTSIGDASHES, 1 },
+ #ifdef USE_SIDEBAR
+   { "sidebar_divider_char", DT_STR, R_BOTH, UL &SidebarDividerChar, UL "|" },
    /*
-   ** .pp
-@@ -3672,6 +3887,14 @@ struct option_t MuttVars[] = {
+@@ -3761,6 +3976,14 @@ struct option_t MuttVars[] = {
    {"xterm_set_titles",	DT_SYN,  R_NONE, UL "ts_enabled", 0 },
    /*
    */
@@ -3374,10 +3617,10 @@ index b7aff80..f1d8f5b 100644
    { NULL, 0, 0, 0, 0 }
  };
 diff --git a/keymap.c b/keymap.c
-index 43a9050..86d2835 100644
+index 6d9661e..e2c51ad 100644
 --- a/keymap.c
 +++ b/keymap.c
-@@ -795,7 +795,6 @@ void km_init (void)
+@@ -798,7 +798,6 @@ void km_init (void)
    km_bindkey ("<enter>", MENU_MAIN, OP_DISPLAY_MESSAGE);
  
    km_bindkey ("x", MENU_PAGER, OP_EXIT);
@@ -3386,10 +3629,10 @@ index 43a9050..86d2835 100644
    km_bindkey ("<pagedown>", MENU_PAGER, OP_NEXT_PAGE);
    km_bindkey ("<pageup>", MENU_PAGER, OP_PREV_PAGE);
 diff --git a/mailbox.h b/mailbox.h
-index 000503d..9052e46 100644
+index 2249661..b3c6c8d 100644
 --- a/mailbox.h
 +++ b/mailbox.h
-@@ -77,6 +77,9 @@ int mx_is_imap (const char *);
+@@ -79,6 +79,9 @@ int mx_is_imap (const char *);
  #ifdef USE_POP
  int mx_is_pop (const char *);
  #endif
@@ -3400,10 +3643,10 @@ index 000503d..9052e46 100644
  int mx_access (const char*, int);
  int mx_check_empty (const char *);
 diff --git a/main.c b/main.c
-index 0e11dc5..0545ca5 100644
+index 4f9a6cb..82ab356 100644
 --- a/main.c
 +++ b/main.c
-@@ -63,6 +63,10 @@
+@@ -66,6 +66,10 @@
  #include <idn/stringprep.h>
  #endif
  
@@ -3411,10 +3654,10 @@ index 0e11dc5..0545ca5 100644
 +#include "nntp.h"
 +#endif
 +
- static const char *ReachingUs = N_("\
- To contact the developers, please mail to <mutt-dev at mutt.org>.\n\
- To report a bug, please visit http://bugs.mutt.org/.\n");
-@@ -139,6 +143,8 @@ options:\n\
+ void mutt_exit (int code)
+ {
+   mutt_endwin (NULL);
+@@ -102,6 +106,8 @@ options:\n\
    -e <command>\tspecify a command to be executed after initialization\n\
    -f <file>\tspecify which mailbox to read\n\
    -F <file>\tspecify an alternate muttrc file\n\
@@ -3423,20 +3666,7 @@ index 0e11dc5..0545ca5 100644
    -H <file>\tspecify a draft file to read header and body from\n\
    -i <file>\tspecify a file which Mutt should include in the body\n\
    -m <type>\tspecify a default mailbox type\n\
-@@ -287,6 +293,12 @@ static void show_version (void)
- 	"-USE_POP  "
- #endif
- 
-+#ifdef USE_NNTP
-+	"+USE_NNTP  "
-+#else
-+	"-USE_NNTP  "
-+#endif
-+
- #ifdef USE_IMAP
-         "+USE_IMAP  "
- #else
-@@ -561,6 +573,9 @@ init_extended_keys();
+@@ -165,6 +171,9 @@ init_extended_keys();
  #define M_NOSYSRC (1<<2)	/* -n */
  #define M_RO      (1<<3)	/* -R */
  #define M_SELECT  (1<<4)	/* -y */
@@ -3446,7 +3676,7 @@ index 0e11dc5..0545ca5 100644
  
  int main (int argc, char **argv)
  {
-@@ -634,7 +649,11 @@ int main (int argc, char **argv)
+@@ -242,7 +251,11 @@ int main (int argc, char **argv)
          argv[nargc++] = argv[optind];
      }
  
@@ -3458,7 +3688,7 @@ index 0e11dc5..0545ca5 100644
        switch (i)
        {
        case 'A':
-@@ -735,6 +754,20 @@ int main (int argc, char **argv)
+@@ -343,6 +356,20 @@ int main (int argc, char **argv)
  	flags |= M_SELECT;
  	break;
  
@@ -3479,7 +3709,7 @@ index 0e11dc5..0545ca5 100644
        case 'z':
  	flags |= M_IGNORE;
  	break;
-@@ -1188,6 +1221,18 @@ int main (int argc, char **argv)
+@@ -781,6 +808,18 @@ int main (int argc, char **argv)
      }
      else if (flags & M_SELECT)
      {
@@ -3498,7 +3728,7 @@ index 0e11dc5..0545ca5 100644
        if (!Incoming) {
  	mutt_endwin _("No incoming mailboxes defined.");
  	exit (1);
-@@ -1203,6 +1248,15 @@ int main (int argc, char **argv)
+@@ -796,6 +835,15 @@ int main (int argc, char **argv)
  
      if (!folder[0])
        strfcpy (folder, NONULL(Spoolfile), sizeof (folder));
@@ -3513,9 +3743,9 @@ index 0e11dc5..0545ca5 100644
 +#endif
      mutt_expand_path (folder, sizeof (folder));
  
-     {
+ #ifdef USE_SIDEBAR
 diff --git a/mutt.h b/mutt.h
-index 2a9f1e0..0fc3b82 100644
+index cfe9f27..22b7246 100644
 --- a/mutt.h
 +++ b/mutt.h
 @@ -237,6 +237,9 @@ enum
@@ -3567,7 +3797,7 @@ index 2a9f1e0..0fc3b82 100644
    OPTNARROWTREE,
    OPTPAGERSTOP,
    OPTPIPEDECODE,
-@@ -508,6 +522,17 @@ enum
+@@ -511,6 +525,17 @@ enum
    OPTPGPAUTOINLINE,
    OPTPGPREPLYINLINE,
  
@@ -3585,7 +3815,7 @@ index 2a9f1e0..0fc3b82 100644
    /* pseudo options */
  
    OPTAUXSORT,		/* (pseudo) using auxiliary sort function */
-@@ -528,6 +553,7 @@ enum
+@@ -531,6 +556,7 @@ enum
    OPTSORTSUBTHREADS,	/* (pseudo) used when $sort_aux changes */
    OPTNEEDRESCORE,	/* (pseudo) set when the `score' command is used */
    OPTATTACHMSG,		/* (pseudo) used by attach-message */
@@ -3593,9 +3823,9 @@ index 2a9f1e0..0fc3b82 100644
    OPTKEEPQUIET,		/* (pseudo) shut up the message and refresh
  			 * 	    functions while we are executing an
  			 * 	    external program.
-@@ -540,6 +566,11 @@ enum
- 
-   OPTSIDEBARNEWMAILONLY,
+@@ -541,6 +567,11 @@ enum
+   OPTDONTHANDLEPGPKEYS,	/* (pseudo) used to extract PGP keys */
+   OPTIGNOREMACROEVENTS, /* (pseudo) don't process macro/push/exec events while set */
  
 +#ifdef USE_NNTP
 +  OPTNEWS,		/* (pseudo) used to change reader mode */
@@ -3605,7 +3835,7 @@ index 2a9f1e0..0fc3b82 100644
    OPTMAX
  };
  
-@@ -619,6 +650,13 @@ typedef struct envelope
+@@ -620,6 +651,13 @@ typedef struct envelope
    char *supersedes;
    char *date;
    char *x_label;
@@ -3619,7 +3849,7 @@ index 2a9f1e0..0fc3b82 100644
    BUFFER *spam;
    LIST *references;		/* message references (in reverse order) */
    LIST *in_reply_to;		/* in-reply-to header content */
-@@ -805,7 +843,7 @@ typedef struct header
+@@ -806,7 +844,7 @@ typedef struct header
    int refno;			/* message number on server */
  #endif
  
@@ -3629,7 +3859,7 @@ index 2a9f1e0..0fc3b82 100644
  #endif
    
 diff --git a/mutt_sasl.c b/mutt_sasl.c
-index d580c47..deb7669 100644
+index 0a00c81..1da5ea5 100644
 --- a/mutt_sasl.c
 +++ b/mutt_sasl.c
 @@ -190,6 +190,11 @@ int mutt_sasl_client_new (CONNECTION* conn, sasl_conn_t** saslconn)
@@ -3645,7 +3875,7 @@ index d580c47..deb7669 100644
        mutt_error (_("Unknown SASL profile"));
        return -1;
 diff --git a/muttlib.c b/muttlib.c
-index 3c4e768..bf25a32 100644
+index ce1c97a..4864b4a 100644
 --- a/muttlib.c
 +++ b/muttlib.c
 @@ -329,7 +329,7 @@ void mutt_free_header (HEADER **h)
@@ -3671,7 +3901,7 @@ index 3c4e768..bf25a32 100644
  
    mutt_buffer_free (&(*p)->spam);
  
-@@ -1571,6 +1578,14 @@ int mutt_save_confirm (const char *s, struct stat *st)
+@@ -1523,6 +1530,14 @@ int mutt_save_confirm (const char *s, struct stat *st)
      }
    }
  
@@ -3687,10 +3917,10 @@ index 3c4e768..bf25a32 100644
    {
      if (magic == -1)
 diff --git a/mx.c b/mx.c
-index 16fcdf4..864ca85 100644
+index a2769c5..1d67d07 100644
 --- a/mx.c
 +++ b/mx.c
-@@ -42,6 +42,10 @@
+@@ -45,6 +45,10 @@
  #include "pop.h"
  #endif
  
@@ -3701,7 +3931,7 @@ index 16fcdf4..864ca85 100644
  #include "buffy.h"
  
  #ifdef USE_DOTLOCK
-@@ -347,6 +351,22 @@ int mx_is_pop (const char *p)
+@@ -350,6 +354,22 @@ int mx_is_pop (const char *p)
  }
  #endif
  
@@ -3724,7 +3954,7 @@ index 16fcdf4..864ca85 100644
  int mx_get_magic (const char *path)
  {
    struct stat st;
-@@ -364,6 +384,11 @@ int mx_get_magic (const char *path)
+@@ -367,6 +387,11 @@ int mx_get_magic (const char *path)
      return M_POP;
  #endif /* USE_POP */
  
@@ -3736,7 +3966,7 @@ index 16fcdf4..864ca85 100644
    if (stat (path, &st) == -1)
    {
      dprint (1, (debugfile, "mx_get_magic(): unable to stat %s: %s (errno %d).\n",
-@@ -691,6 +716,12 @@ CONTEXT *mx_open_mailbox (const char *path, int flags, CONTEXT *pctx)
+@@ -696,6 +721,12 @@ CONTEXT *mx_open_mailbox (const char *path, int flags, CONTEXT *pctx)
        break;
  #endif /* USE_POP */
  
@@ -3749,7 +3979,7 @@ index 16fcdf4..864ca85 100644
      default:
        rc = -1;
        break;
-@@ -806,6 +837,12 @@ static int sync_mailbox (CONTEXT *ctx, int *index_hint)
+@@ -813,6 +844,12 @@ static int sync_mailbox (CONTEXT *ctx, int *index_hint)
        rc = pop_sync_mailbox (ctx, index_hint);
        break;
  #endif /* USE_POP */
@@ -3762,7 +3992,7 @@ index 16fcdf4..864ca85 100644
    }
  
  #if 0
-@@ -908,6 +945,25 @@ int mx_close_mailbox (CONTEXT *ctx, int *index_hint)
+@@ -918,6 +955,25 @@ int mx_close_mailbox (CONTEXT *ctx, int *index_hint)
      return 0;
    }
  
@@ -3788,8 +4018,8 @@ index 16fcdf4..864ca85 100644
    for (i = 0; i < ctx->msgcount; i++)
    {
      if (!ctx->hdrs[i]->deleted && ctx->hdrs[i]->read 
-@@ -919,6 +975,12 @@ int mx_close_mailbox (CONTEXT *ctx, int *index_hint)
-       ctx->flagged--;
+@@ -931,6 +987,12 @@ int mx_close_mailbox (CONTEXT *ctx, int *index_hint)
+ #endif
    }
  
 +#ifdef USE_NNTP
@@ -3801,7 +4031,7 @@ index 16fcdf4..864ca85 100644
    if (read_msgs && quadoption (OPT_MOVE) != M_NO)
    {
      char *p;
-@@ -1479,6 +1541,11 @@ int mx_check_mailbox (CONTEXT *ctx, int *index_hint, int lock)
+@@ -1491,6 +1553,11 @@ int mx_check_mailbox (CONTEXT *ctx, int *index_hint, int lock)
        case M_POP:
  	return (pop_check_mailbox (ctx, index_hint));
  #endif /* USE_POP */
@@ -3813,7 +4043,7 @@ index 16fcdf4..864ca85 100644
      }
    }
  
-@@ -1539,6 +1606,15 @@ MESSAGE *mx_open_message (CONTEXT *ctx, int msgno)
+@@ -1551,6 +1618,15 @@ MESSAGE *mx_open_message (CONTEXT *ctx, int msgno)
      }
  #endif /* USE_POP */
  
@@ -3829,7 +4059,7 @@ index 16fcdf4..864ca85 100644
      default:
        dprint (1, (debugfile, "mx_open_message(): function not implemented for mailbox type %d.\n", ctx->magic));
        FREE (&msg);
-@@ -1614,6 +1690,9 @@ int mx_close_message (MESSAGE **msg)
+@@ -1626,6 +1702,9 @@ int mx_close_message (MESSAGE **msg)
    int r = 0;
  
    if ((*msg)->magic == M_MH || (*msg)->magic == M_MAILDIR
@@ -3840,10 +4070,10 @@ index 16fcdf4..864ca85 100644
    {
      r = safe_fclose (&(*msg)->fp);
 diff --git a/mx.h b/mx.h
-index ab398cb..5a683af 100644
+index f2b79c0..132f7cc 100644
 --- a/mx.h
 +++ b/mx.h
-@@ -34,6 +34,9 @@ enum
+@@ -35,6 +35,9 @@ enum
    M_MMDF,
    M_MH,
    M_MAILDIR,
@@ -7736,10 +7966,10 @@ index 0000000..705c524
 +
 +#endif /* _NNTP_H_ */
 diff --git a/pager.c b/pager.c
-index 9a2b269..544e5ab 100644
+index 94dcdd8..abde1b1 100644
 --- a/pager.c
 +++ b/pager.c
-@@ -1086,6 +1086,11 @@ fill_buffer (FILE *f, LOFF_T *last_pos, LOFF_T offset, unsigned char **buf,
+@@ -1088,6 +1088,11 @@ fill_buffer (FILE *f, LOFF_T *last_pos, LOFF_T offset, unsigned char **buf,
    return b_read;
  }
  
@@ -7751,7 +7981,7 @@ index 9a2b269..544e5ab 100644
  
  static int format_line (struct line_t **lineInfo, int n, unsigned char *buf,
  			int flags, ansi_attr *pa, int cnt,
-@@ -1544,6 +1549,16 @@ static const struct mapping_t PagerHelpExtra[] = {
+@@ -1548,6 +1553,16 @@ static const struct mapping_t PagerHelpExtra[] = {
    { NULL,	0 }
  };
  
@@ -7768,7 +7998,7 @@ index 9a2b269..544e5ab 100644
  
  
  /* This pager is actually not so simple as it once was.  It now operates in
-@@ -1586,6 +1601,10 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t *extra)
+@@ -1590,6 +1605,10 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t *extra)
    int old_PagerIndexLines;		/* some people want to resize it
    					 * while inside the pager... */
  
@@ -7779,7 +8009,7 @@ index 9a2b269..544e5ab 100644
    if (!(flags & M_SHOWCOLOR))
      flags |= M_SHOWFLAT;
  
-@@ -1625,7 +1644,11 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t *extra)
+@@ -1629,7 +1648,11 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t *extra)
    if (IsHeader (extra))
    {
      strfcpy (tmphelp, helpstr, sizeof (tmphelp));
@@ -7792,7 +8022,7 @@ index 9a2b269..544e5ab 100644
      snprintf (helpstr, sizeof (helpstr), "%s %s", tmphelp, buffer);
    }
    if (!InHelp)
-@@ -2567,6 +2590,60 @@ search_next:
+@@ -2593,6 +2616,60 @@ search_next:
  	redraw = REDRAW_FULL;
  	break;
  
@@ -7853,7 +8083,7 @@ index 9a2b269..544e5ab 100644
        case OP_REPLY:
  	CHECK_MODE(IsHeader (extra) || IsMsgAttach (extra));
          CHECK_ATTACH;      
-@@ -2613,7 +2690,7 @@ search_next:
+@@ -2639,7 +2716,7 @@ search_next:
          CHECK_ATTACH;
          if (IsMsgAttach (extra))
  	  mutt_attach_forward (extra->fp, extra->hdr, extra->idx,
@@ -7943,7 +8173,7 @@ index 6a802ba..cb3ea30 100644
      default:
      break;
 diff --git a/pattern.c b/pattern.c
-index 406fd84..d50dad4 100644
+index ea0230e..befe91a 100644
 --- a/pattern.c
 +++ b/pattern.c
 @@ -92,6 +92,9 @@ Flags[] =
@@ -7956,7 +8186,7 @@ index 406fd84..d50dad4 100644
    { 'x', M_REFERENCE,		0,		eat_regexp },
    { 'X', M_MIMEATTACH,		0,		eat_range },
    { 'y', M_XLABEL,		0,		eat_regexp },
-@@ -1260,6 +1263,10 @@ mutt_pattern_exec (struct pattern_t *pat, pattern_exec_flag flags, CONTEXT *ctx,
+@@ -1222,6 +1225,10 @@ mutt_pattern_exec (struct pattern_t *pat, pattern_exec_flag flags, CONTEXT *ctx,
        }
      case M_UNREFERENCED:
        return (pat->not ^ (h->thread && !h->thread->child));
@@ -7967,7 +8197,7 @@ index 406fd84..d50dad4 100644
    }
    mutt_error (_("error: unknown op %d (report this error)."), pat->op);
    return (-1);
-@@ -1341,6 +1348,7 @@ int mutt_pattern_func (int op, char *prompt)
+@@ -1303,6 +1310,7 @@ int mutt_pattern_func (int op, char *prompt)
    progress_t progress;
  
    strfcpy (buf, NONULL (Context->pattern), sizeof (buf));
@@ -7976,10 +8206,10 @@ index 406fd84..d50dad4 100644
      return (-1);
  
 diff --git a/po/POTFILES.in b/po/POTFILES.in
-index 3654ad1..1e499ec 100644
+index 2d01add..115e54f 100644
 --- a/po/POTFILES.in
 +++ b/po/POTFILES.in
-@@ -47,6 +47,8 @@ mutt_ssl_gnutls.c
+@@ -46,6 +46,8 @@ mutt_ssl_gnutls.c
  mutt_tunnel.c
  muttlib.c
  mx.c
@@ -8020,10 +8250,10 @@ index fdeb172..7c62c96 100644
  
    return (PostCount);
 diff --git a/protos.h b/protos.h
-index 382f9ad..c66e47a 100644
+index 5c17f45..666f36c 100644
 --- a/protos.h
 +++ b/protos.h
-@@ -118,6 +118,7 @@ HASH *mutt_make_id_hash (CONTEXT *);
+@@ -111,6 +111,7 @@ HASH *mutt_make_id_hash (CONTEXT *);
  HASH *mutt_make_subj_hash (CONTEXT *);
  
  LIST *mutt_make_references(ENVELOPE *e);
@@ -8215,7 +8445,7 @@ index 13cb3a6..6e02437 100644
    {
      nattach = count_tagged (idx, idxlen);
 diff --git a/send.c b/send.c
-index 6a503b1..44140b1 100644
+index 12fc567..de9e4aa 100644
 --- a/send.c
 +++ b/send.c
 @@ -44,6 +44,11 @@
@@ -8487,7 +8717,7 @@ index 6a503b1..44140b1 100644
  
    if (msg->content->next)
      msg->content = mutt_make_multipart (msg->content);
-@@ -1899,7 +2037,12 @@ full_fcc:
+@@ -1900,7 +2038,12 @@ full_fcc:
      }
    }
    else if (!option (OPTNOCURSES) && ! (flags & SENDMAILX))
@@ -8739,3 +8969,22 @@ index 926416e..15ec9ce 100644
    U_SMTP,
    U_SMTPS,
    U_MAILTO,
+diff --git a/version.c b/version.c
+index a0cd472..ac3c8ed 100644
+--- a/version.c
++++ b/version.c
+@@ -271,6 +271,11 @@ static struct compile_options comp_opts[] = {
+ #else
+ 	{ "USE_IMAP", 0 },
+ #endif
++#ifdef USE_NNTP
++	{ "USE_NNTP", 1 },
++#else
++	{ "USE_NNTP", 0 },
++#endif
+ #ifdef USE_POP
+ 	{ "USE_POP", 1 },
+ #else
+-- 
+2.8.1
+
diff --git a/debian/patches/series b/debian/patches/series
index af8ffca..8c5131a 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -24,4 +24,4 @@ upstream/809802_timeout_hook.patch
 __separator__mutt.org.patch
 neomutt/09-sidebar.patch
 mutt-patched/multiple-fcc.patch
-mutt-patched/nntp.patch
+neomutt-devel/nntp.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