</sect1>
+<sect1 id="quasi-delete">
+ <title>Quasi-Delete Patch</title>
+ <subtitle>Mark emails that should be hidden, but not deleted</subtitle>
+
+ <sect2 id="quasi-delete-patch">
+ <title>Patch</title>
+
+ <para>
+ To check if Mutt supports <quote>Quasi-Delete</quote>, look for
+ <quote>patch-quasi-delete</quote> in the mutt version.
+ See: <xref linkend="mutt-patches"/>.
+ </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="quasi-delete-intro">
+ <title>Introduction</title>
+
+ <para>
+ The <quote>quasi-delete</quote> function marks an email that should be
+ hidden from the index, but NOT deleted.
+ </para>
+
+ <para>
+ On its own, this patch isn't very useful. It forms a useful part of
+ the notmuch plugin.
+ </para>
+ </sect2>
+
+<!--
+ <sect2 id="quasi-delete-variables">
+ <title>Variables</title>
+ <para>None</para>
+ </sect2>
+-->
+
+ <sect2 id="quasi-delete-functions">
+ <title>Functions</title>
+ <table id="table-quasi-delete-functions">
+ <title>Quasi-Delete 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>index,pager</entry>
+ <entry>(none)</entry>
+ <entry><literal><quasi-delete></literal></entry>
+ <entry>delete from mutt, don't touch on disk</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ </sect2>
+
+<!--
+ <sect2 id="quasi-delete-commands">
+ <title>Commands</title>
+ <para>None</para>
+ </sect2>
+
+ <sect2 id="quasi-delete-colors">
+ <title>Colors</title>
+ <para>None</para>
+ </sect2>
+
+ <sect2 id="quasi-delete-sort">
+ <title>Sort</title>
+ <para>None</para>
+ </sect2>
+-->
+
+ <sect2 id="quasi-delete-muttrc">
+ <title>Muttrc</title>
+<screen>
+<emphasis role="comment"># Example Mutt config file for the 'quasi-delete' feature.
+
+# The 'quasi-delete' function marks an email that should be hidden
+# from the index, but NOT deleted.</emphasis>
+bind index,pager Q quasi-delete
+
+<emphasis role="comment"># vim: syntax=muttrc</emphasis>
+</screen>
+ </sect2>
+
+ <sect2 id="quasi-delete-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="notmuch">notmuch patch</link></para></listitem>
+ </itemizedlist>
+ </sect2>
+
+ <sect2 id="quasi-delete-known-bugs">
+ <title>Known Bugs</title>
+ <para>None</para>
+ </sect2>
+
+ <sect2 id="quasi-delete-credits">
+ <title>Credits</title>
+ <itemizedlist>
+ <listitem><para>Karel Zak <email>kzak@redhat.com</email></para></listitem>
+ <listitem><para>Richard Russon <email>rich@flatcap.org</email></para></listitem>
+ </itemizedlist>
+ </sect2>
+</sect1>
+
+<sect1 id="progress">
+ <title>Progress Bar Patch</title>
+ <subtitle>Show a visual progress bar on slow operations</subtitle>
+
+ <sect2 id="progress-patch">
+ <title>Patch</title>
+
+ <para>
+ To check if Mutt supports <quote>Progress Bar</quote>, look for
+ <quote>patch-progress</quote> in the mutt version.
+ See: <xref linkend="mutt-patches"/>.
+ </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="progress-intro">
+ <title>Introduction</title>
+
+ <para>
+ The <quote>progress</quote> patch shows a visual progress bar on slow
+ tasks, such as indexing a large folder over the net.
+ </para>
+ </sect2>
+
+<!--
+ <sect2 id="progress-variables">
+ <title>Variables</title>
+ <para>None</para>
+ </sect2>
+
+ <sect2 id="progress-functions">
+ <title>Functions</title>
+ <para>None</para>
+ </sect2>
+
+ <sect2 id="progress-commands">
+ <title>Commands</title>
+ <para>None</para>
+ </sect2>
+-->
+
+ <sect2 id="progress-colors">
+ <title>Colors</title>
+ <table id="table-progress-colors">
+ <title>Progress Colors</title>
+ <tgroup cols="3">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Default Color</entry>
+ <entry>Description</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry><literal>progress</literal></entry>
+ <entry>default</entry>
+ <entry>Visual progress bar</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ </sect2>
+
+<!--
+ <sect2 id="progress-sort">
+ <title>Sort</title>
+ <para>None</para>
+ </sect2>
+-->
+
+ <sect2 id="progress-muttrc">
+ <title>Muttrc</title>
+<screen>
+<emphasis role="comment"># Example Mutt config file for the 'progress' patch.
+
+# The 'progress' patch provides clear visual feedback for
+# slow tasks, such as indexing a large folder over the net.
+
+# Set the color of the progress bar
+# White text on a red background</emphasis>
+color progress white red
+
+<emphasis role="comment"># vim: syntax=muttrc</emphasis>
+</screen>
+ </sect2>
+
+ <sect2 id="progress-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="color">Color command</link></para></listitem>
+ </itemizedlist>
+ </sect2>
+
+ <sect2 id="progress-known-bugs">
+ <title>Known Bugs</title>
+ <para>None</para>
+ </sect2>
+
+ <sect2 id="progress-credits">
+ <title>Credits</title>
+ <itemizedlist>
+ <listitem><para>Stefan Kuhn <email>wuodan@hispeed.ch</email></para></listitem>
+ <listitem><para>Karel Zak <email>kzak@redhat.com</email></para></listitem>
+ <listitem><para>Richard Russon <email>rich@flatcap.org</email></para></listitem>
+ </itemizedlist>
+ </sect2>
+</sect1>
+
+<sect1 id="status-color">
+ <title>Status Color Patch</title>
+ <subtitle>Custom rules for theming the status bar</subtitle>
+
+ <sect2 id="status-color-patch">
+ <title>Patch</title>
+
+ <para>
+ To check if Mutt supports <quote>Status Color</quote>, look for
+ <quote>patch-status-color</quote> in the mutt version.
+ See: <xref linkend="mutt-patches"/>.
+ </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="status-color-intro">
+ <title>Introduction</title>
+
+ <para>
+ The <quote>status-color</quote> patch allows you to theme different
+ parts of the status bar (also when it's used by the index).
+ </para>
+
+ <para>
+ Unlike normal color commands, <literal>color status</literal> can now
+ take up to 2 extra parameters (regex, num).
+ </para>
+ </sect2>
+
+<!--
+ <sect2 id="status-color-variables">
+ <title>Variables</title>
+ <para>None</para>
+ </sect2>
+
+ <sect2 id="status-color-functions">
+ <title>Functions</title>
+ <para>None</para>
+ </sect2>
+-->
+
+ <sect2 id="status-color-commands">
+ <title>Commands</title>
+ <cmdsynopsis>
+ <command>color</command>
+ <arg choice="plain">
+ <option>status</option>
+ </arg>
+ <arg choice="plain">
+ <replaceable class="parameter">foreground</replaceable>
+ </arg>
+ <arg choice="plain">
+ <replaceable class="parameter">background</replaceable>
+ </arg>
+ <group choice="opt">
+ <arg choice="plain">
+ <replaceable class="parameter">regex</replaceable>
+ </arg>
+ <group choice="opt">
+ <arg choice="plain">
+ <replaceable class="parameter">num</replaceable>
+ </arg>
+ </group>
+ </group>
+ </cmdsynopsis>
+
+ <para>
+ With zero parameters, Mutt will set the default color for the entire
+ status bar.
+ </para>
+
+ <para>
+ With one parameter, Mutt will only color the parts matching the
+ regex.
+ </para>
+
+ <para>
+ With two parameters, Mutt will only color the num'th sub-match of
+ the regex.
+ </para>
+ </sect2>
+
+ <sect2 id="status-color-colors">
+ <title>Colors</title>
+
+ <table id="table-status-color-colors">
+ <title>Status Colors</title>
+ <tgroup cols="3">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Default Color</entry>
+ <entry>Description</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>status</entry>
+ <entry><literal>reverse</literal></entry>
+ <entry>Status bar</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ </sect2>
+
+<!--
+ <sect2 id="status-color-sort">
+ <title>Sort</title>
+ <para>None</para>
+ </sect2>
+-->
+
+ <sect2 id="status-color-muttrc">
+ <title>Muttrc</title>
+<screen>
+<emphasis role="comment"># Example Mutt config file for the 'status-color' patch.
+
+# The 'status-color' patch allows you to theme different parts of
+# the status bar (also when it's used by the index).
+
+# For the examples below, set some defaults</emphasis>
+set status_format='-%r-Mutt: %f [Msgs:%?M?%M/?%m%?n? New:%n?%?o? Old:%o?%?d? Del:%d?%?F? Flag:%F?%?t? Tag:%t?%?p? Post:%p?%?b? Inc:%b?%?l? %l?]---(%s/%S)-%>-(%P)---'
+set index_format='%4C %Z %{%b %d} %-15.15L (%?l?%4l&%4c?) %s'
+set sort=threads
+set sort_aux=last-date-received
+
+<emphasis role="comment"># 'status color' can take up to 2 extra parameters
+
+# color status foreground background [ regex [ num ]]
+
+# 0 extra parameters
+# Set the default color for the entire status line</emphasis>
+color status blue white
+
+<emphasis role="comment"># 1 extra parameter
+# Set the color for a matching pattern
+# color status foreground background regexp
+
+# Highlight New, Deleted, or Flagged emails</emphasis>
+color status brightred white '(New|Del|Flag):[0-9]+'
+
+<emphasis role="comment"># Highlight mailbox ordering if it's different from the default
+# First, highlight anything (*/*)</emphasis>
+color status brightred default '\([^)]+/[^)]+\)'
+
+<emphasis role="comment"># Then override the color for one specfic case</emphasis>
+color status default default '\(threads/last-date-received\)'
+
+<emphasis role="comment"># 2 extra parameters
+# Set the color for the nth submatch of a pattern
+# color status foreground background regexp num
+
+# Highlight the contents of the []s but not the [] themselves</emphasis>
+color status red default '\[([^]]+)\]' 1
+
+<emphasis role="comment"># The '1' refers to the first regex submatch, which is the inner
+# part in ()s
+
+# Highlight the mailbox</emphasis>
+color status brightwhite default 'Mutt: ([^ ]+)' 1
+
+<emphasis role="comment"># Search for 'Mutt: ' but only highlight what comes after it
+
+# vim: syntax=muttrc</emphasis>
+</screen>
+ </sect2>
+
+ <sect2 id="status-color-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>
+ <listitem><para><link linkend="regexp">Regular Expressions</link></para></listitem>
+ <listitem><para><link linkend="patterns">Patterns</link></para></listitem>
+ <listitem><para><link linkend="index-color">index-color patch</link></para></listitem>
+ <listitem><para><link linkend="color">Color command</link></para></listitem>
+ </itemizedlist>
+ </sect2>
+
+ <sect2 id="status-color-known-bugs">
+ <title>Known Bugs</title>
+ <para>None</para>
+ </sect2>
+
+ <sect2 id="status-color-credits">
+ <title>Credits</title>
+ <itemizedlist>
+ <listitem><para>David Sterba <email>dsterba@suse.cz</email></para></listitem>
+ <listitem><para>Thomas Glanzmann <email>thomas@glanzmann.de</email></para></listitem>
+ <listitem><para>Kirill A. Shutemov <email>kirill@shutemov.name</email></para></listitem>
+ <listitem><para>Richard Russon <email>rich@flatcap.org</email></para></listitem>
+ </itemizedlist>
+ </sect2>
+</sect1>
+
+<sect1 id="index-color">
+ <title>Index Color Patch</title>
+ <subtitle>Custom rules for theming the email index</subtitle>
+
+ <sect2 id="index-color-patch">
+ <title>Patch</title>
+
+ <para>
+ To check if Mutt supports <quote>Index Color</quote>, look for
+ <quote>patch-index-color</quote> in the mutt version.
+ See: <xref linkend="mutt-patches"/>.
+ </para>
+
+ <itemizedlist>
+ <title>Dependencies:</title>
+ <listitem><para>mutt-1.5.24</para></listitem>
+ <listitem><para><link linkend="status-color">status-color patch</link></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="index-color-intro">
+ <title>Introduction</title>
+
+ <para>
+ The <quote>index-color</quote> patch allows you to specify colors for
+ individual parts of the email index. e.g. Subject, Author, Flags.
+ </para>
+
+ <para>
+ First choose which part of the index you'd like to color.
+ Then, if needed, pick a pattern to match.
+ </para>
+
+ <para>
+ Note: The pattern does not have to refer to the object you wish to
+ color. e.g.
+ </para>
+
+<screen>
+color index_author red default "~smutt"
+</screen>
+
+ <para>
+ The author appears red when the subject (~s) contains <quote>mutt</quote>.
+ </para>
+ </sect2>
+
+<!--
+ <sect2 id="index-color-variables">
+ <title>Variables</title>
+ <para>None</para>
+ </sect2>
+
+ <sect2 id="index-color-functions">
+ <title>Functions</title>
+ <para>None</para>
+ </sect2>
+
+ <sect2 id="index-color-commands">
+ <title>Commands</title>
+ <para>None</para>
+ </sect2>
+-->
+
+ <sect2 id="index-color-colors">
+ <title>Colors</title>
+
+ <para>
+ All the colors default to <literal>default</literal>, i.e. unset.
+ </para>
+
+ <para>
+ The index objects can be themed using the <literal>color</literal> command.
+ Some objects require a pattern.
+ </para>
+
+<screen>
+color index-object foreground background
+color index-object foreground background pattern
+</screen>
+
+ <table id="table-index-color-colors">
+ <title>Index Colors</title>
+ <tgroup cols="3">
+ <thead>
+ <row>
+ <entry>Object</entry>
+ <entry>Pattern</entry>
+ <entry>Highlights</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry><literal>index</literal></entry>
+ <entry>yes</entry>
+ <entry>Entire index line</entry>
+ </row>
+ <row>
+ <entry><literal>index_author</literal></entry>
+ <entry>yes</entry>
+ <entry>Author name, %A %a %F %L %n</entry>
+ </row>
+ <row>
+ <entry><literal>index_collapsed</literal></entry>
+ <entry>no</entry>
+ <entry>Number of messages in a collapsed thread, %M</entry>
+ </row>
+ <row>
+ <entry><literal>index_date</literal></entry>
+ <entry>no</entry>
+ <entry>Date field</entry>
+ </row>
+ <row>
+ <entry><literal>index_flags</literal></entry>
+ <entry>yes</entry>
+ <entry>Message flags, %S %Z</entry>
+ </row>
+ <row>
+ <entry><literal>index_label</literal></entry>
+ <entry>no</entry>
+ <entry>Message label, %y %Y</entry>
+ </row>
+ <row>
+ <entry><literal>index_number</literal></entry>
+ <entry>no</entry>
+ <entry>Message number, %C</entry>
+ </row>
+ <row>
+ <entry><literal>index_size</literal></entry>
+ <entry>no</entry>
+ <entry>Message size, %c %l</entry>
+ </row>
+ <row>
+ <entry><literal>index_subject</literal></entry>
+ <entry>yes</entry>
+ <entry>Subject, %s</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ </sect2>
+
+<!--
+ <sect2 id="index-color-sort">
+ <title>Sort</title>
+ <para>None</para>
+ </sect2>
+-->
+
+ <sect2 id="index-color-muttrc">
+ <title>Muttrc</title>
+<screen>
+<emphasis role="comment"># Example Mutt config file for the 'index-color' feature.
+
+# Entire index line</emphasis>
+color index white black '.*'
+
+<emphasis role="comment"># Author name, %A %a %F %L %n
+
+# Give the author column a dark grey background</emphasis>
+color index_author default color234 '.*'
+
+<emphasis role="comment"># Highlight a particular from (~f)</emphasis>
+color index_author brightyellow color234 '~fRay Charles'
+
+<emphasis role="comment"># Message flags, %S %Z
+# Highlight the flags for flagged (~F) emails</emphasis>
+color index_flags default red '~F'
+
+<emphasis role="comment"># Subject, %s
+# Look for a particular subject (~s)</emphasis>
+color index_subject brightcyan default '~s\(closes #[0-9]+\)'
+
+<emphasis role="comment"># Number of messages in a collapsed thread, %M</emphasis>
+color index_collapsed default brightblue
+
+<emphasis role="comment"># Date field</emphasis>
+color index_date green default
+
+<emphasis role="comment"># Message label, %y %Y</emphasis>
+color index_label default brightgreen
+
+<emphasis role="comment"># Message number, %C</emphasis>
+color index_number red default
+
+<emphasis role="comment"># Message size, %c %l</emphasis>
+color index_size cyan default
+
+<emphasis role="comment"># vim: syntax=muttrc</emphasis>
+</screen>
+ </sect2>
+
+ <sect2 id="index-color-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="regexp">Regular Expressions</link></para></listitem>
+ <listitem><para><link linkend="patterns">Patterns</link></para></listitem>
+ <listitem><para><link linkend="index-format">$index_format</link></para></listitem>
+ <listitem><para><link linkend="color">Color command</link></para></listitem>
+ <listitem><para><link linkend="status-color">Status-Color patch</link></para></listitem>
+ <listitem><para><link linkend="keywords">Keywords patch</link></para></listitem>
+ </itemizedlist>
+ </sect2>
+
+ <sect2 id="index-color-known-bugs">
+ <title>Known Bugs</title>
+ <para>None</para>
+ </sect2>
+
+ <sect2 id="index-color-credits">
+ <title>Credits</title>
+ <itemizedlist>
+ <listitem><para>Christian Aichinger <email>Greek0@gmx.net</email></para></listitem>
+ <listitem><para>Christoph <quote>Myon</quote> Berg <email>myon@debian.org</email></para></listitem>
+ <listitem><para>Elimar Riesebieter <email>riesebie@lxtec.de</email></para></listitem>
+ <listitem><para>Eric Davis <email>edavis@insanum.com</email></para></listitem>
+ <listitem><para>Vladimir Marek <email>Vladimir.Marek@oracle.com</email></para></listitem>
+ <listitem><para>Richard Russon <email>rich@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>
+
+ <sect2 id="nested-if-patch">
+ <title>Patch</title>
+
+ <para>
+ To check if Mutt supports <quote>Nested If</quote>, look for
+ <quote>patch-nested-if</quote> in the mutt version.
+ See: <xref linkend="mutt-patches"/>.
+ </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="nested-if-intro">
+ <title>Introduction</title>
+
+ <para>
+ Mutt's format strings can contain embedded if-then-else conditions.
+ They are of the form:
+ </para>
+
+<screen>
+%?VAR?TRUE&FALSE?
+</screen>
+
+ <para>
+ If the variable <quote>VAR</quote> has a value greater than zero,
+ print the <quote>TRUE</quote> string, otherwise print the
+ <quote>FALSE</quote> string.
+ </para>
+
+ <para>
+ e.g. <literal>%?S?Size: %S&Empty?</literal>
+ </para>
+
+ <para>Which can be read as:</para>
+
+ <literallayout>
+ if (%S > 0) {
+ print "Size: %S"
+ } else {
+ print "Empty"
+ }
+ </literallayout>
+
+ <para>
+ These conditions are useful, but in Mutt they cannot be nested
+ within one another. This patch uses the notation
+ <literal>%<VAR?TRUE&FALSE></literal> and allows them to be nested.
+ </para>
+
+ <para>
+ The <literal>%<...></literal> notation was used to format the
+ current local time. but that's not really very useful since mutt
+ has no means of refreshing the screen periodically.
+ </para>
+
+ <para>
+ A simple nested condition might be:
+ (Some whitespace has been introduced for clarity)
+ </para>
+
+ <literallayout>
+ %<x? %<y? XY & X > & %<y? Y & NONE > > Conditions
+ %<y? XY & X > x>0
+ XY x>0,y>0
+ X x>0,y=0
+ </literallayout>
+
+ <literallayout>
+ %<x? %<y? XY & X > & %<y? Y & NONE > > Conditions
+ %<y? Y & NONE > x=0
+ Y x=0,y>0
+ NONE x=0,y=0
+ </literallayout>
+
+ <para>Equivalent to:</para>
+
+ <literallayout>
+ if (x > 0) {
+ if (y > 0) {
+ print 'XY'
+ } else {
+ print 'X'
+ }
+ } else {
+ if (y > 0) {
+ print 'Y'
+ } else {
+ print 'NONE'
+ }
+ }
+ </literallayout>
+
+ <para>Examples:</para>
+
+<screen>
+set index_format='%4C %Z %{%b %d} %-25.25n %s%> %<M?%M Msgs &%<l?%l Lines&%c Bytes>>'
+</screen>
+
+ <literallayout>
+ if a thread is folded
+ display the number of messages (%M)
+ else if we know how many lines in the message
+ display lines in message (%l)
+ else
+ display the size of the message in bytes (%c)
+ </literallayout>
+
+<screen>
+set index_format='%4C %Z %{%b %d} %-25.25n %<M?[%M] %s&%s%* %<l?%l&%c>>'
+</screen>
+
+ <literallayout>
+ if a thread is folded
+ display the number of messages (%M)
+ display the subject (%s)
+ else if we know how many lines in the message
+ display lines in message (%l)
+ else
+ display the size of the message in bytes (%c)
+ </literallayout>
+
+ </sect2>
+
+ <sect2 id="nested-if-variables">
+ <title>Variables</title>
+ The <quote>nested-if</quote> patch doesn't have any config of its own.
+ It modifies the behavior of the format strings.
+ </sect2>
+
+<!--
+ <sect2 id="nested-if-functions">
+ <title>Functions</title>
+ <para>None</para>
+ </sect2>
+
+ <sect2 id="nested-if-commands">
+ <title>Commands</title>
+ <para>None</para>
+ </sect2>
+
+ <sect2 id="nested-if-colors">
+ <title>Colors</title>
+ <para>None</para>
+ </sect2>
+
+ <sect2 id="nested-if-sort">
+ <title>Sort</title>
+ <para>None</para>
+ </sect2>
+-->
+
+ <sect2 id="nested-if-muttrc">
+ <title>Muttrc</title>
+<screen>
+<emphasis role="comment"># Example Mutt config file for the 'nested-if' feature.
+
+# This patch uses the format: '%<VAR?TRUE&FALSE>' for conditional
+# format strings that can be nested.
+
+# Example 1
+# if a thread is folded
+# display the number of messages (%M)
+# else if we know how many lines in the message
+# display lines in message (%l)
+# else display the size of the message in bytes (%c)</emphasis>
+set index_format='%4C %Z %{%b %d} %-25.25n %s%> %<M?%M Msgs &%<l?%l Lines&%c Bytes>>'
+
+<emphasis role="comment"># Example 2
+# if a thread is folded
+# display the number of messages (%M)
+# display the subject (%s)
+# else if we know how many lines in the message
+# display lines in message (%l)
+# else
+# display the size of the message in bytes (%c)</emphasis>
+set index_format='%4C %Z %{%b %d} %-25.25n %<M?[%M] %s&%s%* %<l?%l&%c>>'
+
+<emphasis role="comment"># vim: syntax=muttrc</emphasis>
+</screen>
+ </sect2>
+
+ <sect2 id="nested-if-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="cond-date">cond-date patch</link></para></listitem>
+ <listitem><para><link linkend="index-format">$index_format</link></para></listitem>
+ <listitem><para><link linkend="status-format">$status_format</link></para></listitem>
+ </itemizedlist>
+ </sect2>
+
+ <sect2 id="nested-if-known-bugs">
+ <title>Known Bugs</title>
+ Patch overwrites $<fmt> handler in <literal>$index_format</literal>
+ </sect2>
+
+ <sect2 id="nested-if-credits">
+ <title>Credits</title>
+ <itemizedlist>
+ <listitem><para>David Champion <email>dgc@uchicago.edu</email></para></listitem>
+ <listitem><para>Richard Russon <email>rich@flatcap.org</email></para></listitem>
+ </itemizedlist>
+ </sect2>
+</sect1>
+
+<sect1 id="cond-date">
+ <title>Conditional Dates Patch</title>
+ <subtitle>Use rules to choose date format</subtitle>
+
+ <sect2 id="cond-date-patch">
+ <title>Patch</title>
+
+ <para>
+ To check if Mutt supports <quote>Conditional Dates</quote>, look for
+ <quote>patch-cond-date</quote> in the mutt version.
+ See: <xref linkend="mutt-patches"/>.
+ </para>
+
+ <itemizedlist>
+ <title>Dependencies:</title>
+ <listitem><para>mutt-1.5.24</para></listitem>
+ <listitem><para><link linkend="nested-if">nested-if patch</link></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="cond-date-intro">
+ <title>Introduction</title>
+
+ <para>
+ The <quote>cond-date</quote> patch allows you to construct
+ <link linkend="index-format">$index_format</link> expressions based on the age of the email.
+ </para>
+
+ <para>
+ Mutt's default <literal>$index_format</literal> displays email dates in the
+ form: abbreviated-month day-of-month — <quote>Jan 14</quote>.
+ </para>
+
+ <para>
+ The format is configurable but only per-mailbox. This patch allows you
+ to configure the display depending on the age of the email.
+ </para>
+
+ <table id="table-cond-date-scheme">
+ <title>Potential Formatting Scheme</title>
+ <tgroup cols="3">
+ <thead>
+ <row>
+ <entry>Email Sent</entry>
+ <entry>Format</entry>
+ <entry>Example</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>Today</entry>
+ <entry><literal>%H:%M</literal></entry>
+ <entry>13:23</entry>
+ </row>
+ <row>
+ <entry>This Month</entry>
+ <entry><literal>%a %d</literal></entry>
+ <entry>Thu 17</entry>
+ </row>
+ <row>
+ <entry>This Year</entry>
+ <entry><literal>%b %d</literal></entry>
+ <entry>Dec 10</entry>
+ </row>
+ <row>
+ <entry>Older than 1 Year</entry>
+ <entry><literal>%m/%y</literal></entry>
+ <entry>06/14</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ <para>
+ For an explanation of the date formatting strings, see
+ <literal>strftime(3).</literal>
+ </para>
+
+ <para>
+ By carefully picking your formats, the dates can remain
+ unambiguous and compact.
+ </para>
+
+ <para>
+ Mutt's conditional format strings have the form:
+ (whitespace introduced for clarity)
+ </para>
+
+ <screen>%? TEST ? TRUE & FALSE ?</screen>
+
+ <para>
+ The examples below use the test <quote>%[</quote> — the date
+ of the message in the local timezone. They will also work with
+ <quote>%(</quote> — the local time that the message arrived.
+ </para>
+
+ <para>
+ The date tests are of the form:
+ </para>
+
+ <screen>%[nX? TRUE & FALSE ?</screen>
+
+ <itemizedlist>
+ <listitem><para><quote>n</quote> is an optional count (defaults to 1 if missing)</para></listitem>
+ <listitem><para><quote>X</quote> is the time period</para></listitem>
+ </itemizedlist>
+
+ <table id="table-cond-date-format-codes">
+ <title>Date Formatting Codes</title>
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry>Letter</entry>
+ <entry>Time Period</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>y</entry>
+ <entry>Years</entry>
+ </row>
+ <row>
+ <entry>m</entry>
+ <entry>Months</entry>
+ </row>
+ <row>
+ <entry>w</entry>
+ <entry>Weeks</entry>
+ </row>
+ <row>
+ <entry>d</entry>
+ <entry>Days</entry>
+ </row>
+ <row>
+ <entry>H</entry>
+ <entry>Hours</entry>
+ </row>
+ <row>
+ <entry>M</entry>
+ <entry>Minutes</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ <table id="table-cond-date-example-tests">
+ <title>Example Date Tests</title>
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry>Test</entry>
+ <entry>Meaning</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry><literal>%[y</literal></entry>
+ <entry>This year</entry>
+ </row>
+ <row>
+ <entry><literal>%[1y</literal></entry>
+ <entry>This year</entry>
+ </row>
+ <row>
+ <entry><literal>%[6m</literal></entry>
+ <entry>In the last 6 months</entry>
+ </row>
+ <row>
+ <entry><literal>%[w</literal></entry>
+ <entry>This week</entry>
+ </row>
+ <row>
+ <entry><literal>%[d</literal></entry>
+ <entry>Today</entry>
+ </row>
+ <row>
+ <entry><literal>%[4H</literal></entry>
+ <entry>In the last 4 hours</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ <sect3 id="cond-date-example1">
+ <title>Example 1</title>
+
+ <para>We start with a one-condition test.</para>
+
+ <table id="table-cond-date-example1">
+ <title>Example 1</title>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Test</entry>
+ <entry>Date Range</entry>
+ <entry>Format String</entry>
+ <entry>Example</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry><literal>%[1m</literal></entry>
+ <entry>This month</entry>
+ <entry><literal>%[%b %d]</literal></entry>
+ <entry>Dec 10</entry>
+ </row>
+ <row>
+ <entry></entry>
+ <entry>Older</entry>
+ <entry><literal>%[%Y-%m-%d]</literal></entry>
+ <entry>2015-04-23</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ <para>The $index_format string would contain:</para>
+<screen>
+%?[1m?%[%b %d]&%[%Y-%m-%d]?
+</screen>
+
+ <para>
+ Reparsed a little, for clarity, you can see the
+ test condition and the two format strings.
+ </para>
+
+<screen>
+%?[1m? & ?
+ %[%b %d] %[%Y-%m-%d]
+</screen>
+
+ </sect3>
+
+ <sect3 id="cond-date-example2">
+ <title>Example 2</title>
+
+ <para>
+ This example contains three test conditions and four date formats.
+ </para>
+
+ <table id="table-cond-date-example2">
+ <title>Example 2</title>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Test</entry>
+ <entry>Date Range</entry>
+ <entry>Format String</entry>
+ <entry>Example</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry><literal>%[d</literal></entry>
+ <entry>Today</entry>
+ <entry><literal>%[%H:%M ] </literal></entry>
+ <entry>12:34</entry>
+ </row>
+ <row>
+ <entry><literal>%[m</literal></entry>
+ <entry>This month</entry>
+ <entry><literal>%[%a %d]</literal></entry>
+ <entry>Thu 12</entry>
+ </row>
+ <row>
+ <entry><literal>%[y</literal></entry>
+ <entry>This year</entry>
+ <entry><literal>%[%b %d]</literal></entry>
+ <entry>Dec 10</entry>
+ </row>
+ <row>
+ <entry></entry>
+ <entry>Older</entry>
+ <entry><literal>%[%m/%y ]</literal></entry>
+ <entry>06/15</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ <para>The $index_format string would contain:</para>
+
+<screen>
+%<[y?%<[m?%<[d?%[%H:%M ]&%[%a %d]>&%[%b %d]>&%[%m/%y ]>
+</screen>
+
+ <para>
+ Reparsed a little, for clarity, you can see the
+ test conditions and the four format strings.
+ </para>
+
+<screen>
+%<[y? &%[%m/%y ]> Older
+ %<[m? &%[%b %d]> This year
+ %<[d? &%[%a %d]> This month
+ %[%H:%M ] Today
+</screen>
+
+ <para>
+ This a another view of the same example, with some whitespace
+ for clarity.
+ </para>
+
+<screen>
+%<[y? %<[m? %<[d? AAA & BBB > & CCC > & DDD >
+</screen>
+
+ <literallayout>
+AAA = %[%H:%M ]
+BBB = %[%a %d]
+CCC = %[%b %d]
+DDD = %[%m/%y ]
+ </literallayout>
+ </sect3>
+ </sect2>
+
+ <sect2 id="cond-date-variables">
+ <title>Variables</title>
+
+ <para>
+ The <quote>cond-date</quote> patch doesn't have any config of its own.
+ It modifies the behavior of the format strings.
+ </para>
+ </sect2>
+
+<!--
+ <sect2 id="cond-date-functions">
+ <title>Functions</title>
+ <para>None</para>
+ </sect2>
+
+ <sect2 id="cond-date-commands">
+ <title>Commands</title>
+ <para>None</para>
+ </sect2>
+
+ <sect2 id="cond-date-colors">
+ <title>Colors</title>
+ <para>None</para>
+ </sect2>
+
+ <sect2 id="cond-date-sort">
+ <title>Sort</title>
+ <para>None</para>
+ </sect2>
+-->
+
+ <sect2 id="cond-date-muttrc">
+ <title>Muttrc</title>
+<screen>
+<emphasis role="comment"># Example Mutt config file for the 'index-color' feature.
+#
+# The default index_format is:
+# '%4C %Z %{%b %d} %-15.15L (%?l?%4l&%4c?) %s'
+#
+# We replace the date field '%{%b %d}', giving:</emphasis>
+set index_format='%4C %Z %<[y?%<[m?%<[d?%[%H:%M ]&%[%a %d]>&%[%b %d]>&%[%m/%y ]> %-15.15L (%?l?%4l&%4c?) %s'
+
+<emphasis role="comment"># Test Date Range Format String Example
+# --------------------------------------------
+# %[d Today %[%H:%M ] 12:34
+# %[m This month %[%a %d] Thu 12
+# %[y This year %[%b %d] Dec 10
+# - Older %[%m/%y ] 06/15
+
+# vim: syntax=muttrc</emphasis>
+</screen>
+ </sect2>
+
+ <sect2 id="cond-date-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="index-format">$index_format</link></para></listitem>
+ <listitem><para><link linkend="nested-if">nested-if patch</link></para></listitem>
+ <listitem><para><literal>strftime(3)</literal></para></listitem>
+ </itemizedlist>
+ </sect2>
+
+ <sect2 id="cond-date-known-bugs">
+ <title>Known Bugs</title>
+
+ <para>
+ Date parsing doesn't quite do what you expect.
+ <quote>1w</quote> doesn't mean the <quote>in the last 7 days</quote>, but
+ <quote><emphasis>this</emphasis> week</quote>. This doesn't match
+ the normal Mutt behaviour: for example <literal>~d>1w</literal>
+ means emails dated in the last 7 days.
+ </para>
+
+ </sect2>
+
+ <sect2 id="cond-date-credits">
+ <title>Credits</title>
+ <itemizedlist>
+ <listitem><para>Aaron Schrab <email>aaron@schrab.com</email></para></listitem>
+ <listitem><para>Eric Davis <email>edavis@insanum.com</email></para></listitem>
+ <listitem><para>Richard Russon <email>rich@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>
+
+ <sect2 id="tls-sni-patch">
+ <title>Patch</title>
+
+ <para>
+ To check if Mutt supports <quote>TLS-SNI</quote>, look for
+ <quote>patch-tls-sni</quote> in the mutt version.
+ See: <xref linkend="mutt-patches"/>.
+ </para>
+
+ <itemizedlist>
+ <title>Dependencies:</title>
+ <listitem><para>mutt-1.5.24</para></listitem>
+ <listitem><para>OpenSSL</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="tls-sni-intro">
+ <title>Introduction</title>
+
+ <para>
+ The <quote>TLS-SNI</quote> patch adds support for TLS virtual hosting.
+ If your mail server doesn't support this everything will still work
+ normally.
+ </para>
+
+ <para>
+ TLS supports sending the expected server hostname during the
+ handshake, via the SNI extension. This can be used to select a
+ server certificate to issue to the client, permitting
+ virtual-hosting without requiring multiple IP addresses.
+ </para>
+
+ <para>
+ This has been tested against Exim 4.80, which optionally logs SNI
+ and can perform vhosting.
+ </para>
+
+ <para>
+ To verify TLS SNI support by a server, you can use:
+ </para>
+
+ <screen>
+ openssl s_client -host <imap server> -port <port> -tls1 -servername <imap server>
+ </screen>
+ </sect2>
+
+ <!--
+ <sect2 id="tls-sni-variables">
+ <title>Variables</title>
+ <para>None</para>
+ </sect2>
+
+ <sect2 id="tls-sni-functions">
+ <title>Functions</title>
+ <para>None</para>
+ </sect2>
+
+ <sect2 id="tls-sni-commands">
+ <title>Commands</title>
+ <para>None</para>
+ </sect2>
+
+ <sect2 id="tls-sni-colors">
+ <title>Colors</title>
+ <para>None</para>
+ </sect2>
+
+ <sect2 id="tls-sni-sort">
+ <title>Sort</title>
+ <para>None</para>
+ </sect2>
+ -->
+
+ <sect2 id="tls-sni-muttrc">
+ <title>Muttrc</title>
+ <para>None</para>
+ </sect2>
+
+ <sect2 id="tls-sni-see-also">
+ <title>See Also</title>
+
+ <itemizedlist>
+ <listitem><para><ulink url="https://github.com/neomutt/neomutt/wiki">NeoMutt Project</ulink></para></listitem>
+ </itemizedlist>
+ </sect2>
+
+ <sect2 id="tls-sni-known-bugs">
+ <title>Known Bugs</title>
+ <para>None</para>
+ </sect2>
+
+ <sect2 id="tls-sni-credits">
+ <title>Credits</title>
+ <itemizedlist>
+ <listitem><para>Jeremy Katz <email>katzj@linuxpower.org</email></para></listitem>
+ <listitem><para>Phil Pennock <email>mutt-dev@spodhuis.demon.nl</email></para></listitem>
+ <listitem><para>Richard Russon <email>rich@flatcap.org</email></para></listitem>
+ </itemizedlist>
+ </sect2>
+ </sect1>
+
</chapter>
<chapter id="security">