]> git.madduck.net Git - etc/neomutt.git/commitdiff

madduck's git repository

Every one of the projects in this repository is available at the canonical URL git://git.madduck.net/madduck/pub/<projectpath> — see each project's metadata for the exact URL.

All patches and comments are welcome. Please squash your changes to logical commits before using git-format-patch and git-send-email to patches@git.madduck.net. If you'd read over the Git project's submission guidelines and adhered to them, I'd be especially grateful.

SSH access, as well as push access can be individually arranged.

If you use my repositories frequently, consider adding the following snippet to ~/.gitconfig and using the third clone URL listed for each project:

[url "git://git.madduck.net/madduck/"]
  insteadOf = madduck:

import of config from mutt
authormartin f. krafft <madduck@madduck.net>
Tue, 22 Aug 2023 11:01:20 +0000 (23:01 +1200)
committermartin f. krafft <madduck@madduck.net>
Tue, 22 Aug 2023 11:01:20 +0000 (23:01 +1200)
45 files changed:
.config/neomutt/__pycache__/buildmimetree.cpython-311-pytest-7.4.0.pyc [new file with mode: 0644]
.config/neomutt/ack-recipients [new file with mode: 0644]
.config/neomutt/aliases [new file with mode: 0644]
.config/neomutt/alternates [new file with mode: 0644]
.config/neomutt/append-header [new file with mode: 0755]
.config/neomutt/batch-subject-editor [new file with mode: 0755]
.config/neomutt/bgrun [new file with mode: 0755]
.config/neomutt/bgview [new file with mode: 0755]
.config/neomutt/bgview-delay [new file with mode: 0755]
.config/neomutt/bgview-fifo [new file with mode: 0755]
.config/neomutt/colours [new file with mode: 0644]
.config/neomutt/confvars [new file with mode: 0644]
.config/neomutt/container-extractor [new file with mode: 0755]
.config/neomutt/edit-header [new file with mode: 0755]
.config/neomutt/filter-proxy [new file with mode: 0755]
.config/neomutt/get-timestamp [new file with mode: 0755]
.config/neomutt/headers [new file with mode: 0644]
.config/neomutt/hooks [new file with mode: 0644]
.config/neomutt/htmldump [new file with mode: 0755]
.config/neomutt/icalparser [new file with mode: 0755]
.config/neomutt/keybindings [new file with mode: 0644]
.config/neomutt/list-mailboxes [new file with mode: 0755]
.config/neomutt/lists [new file with mode: 0644]
.config/neomutt/mailcap.backgrounding [new file with mode: 0644]
.config/neomutt/mailcap.containers [new file with mode: 0644]
.config/neomutt/mailcap.editing [new file with mode: 0644]
.config/neomutt/mailcap.htmldump [new file with mode: 0644]
.config/neomutt/mailcap.icalendar [new file with mode: 0644]
.config/neomutt/mkconf [new file with mode: 0755]
.config/neomutt/neomuttrc [new file with mode: 0644]
.config/neomutt/remove-header [new file with mode: 0755]
.config/neomutt/replace-header [new file with mode: 0755]
.config/neomutt/reuse-message [new file with mode: 0755]
.config/neomutt/sendmail [new file with mode: 0755]
.config/neomutt/sendmail-checks.d/ack-recipients [new file with mode: 0755]
.config/neomutt/sendmail-checks.d/check-attachments [new file with mode: 0644]
.config/neomutt/sendmail-checks.d/no-local-recipients [new file with mode: 0755]
.config/neomutt/sendmail-checks.d/pgp-mime-sig-description [new file with mode: 0755]
.config/neomutt/sendmail-checks.d/prevent-draft [new file with mode: 0755]
.config/neomutt/sendmail-checks.d/strip-offlineimap-header [new file with mode: 0755]
.config/neomutt/sendmail-checks.d/strip-tickle-header [new file with mode: 0755]
.config/neomutt/sendmail-checks.d/zzz_add-spool-bcc [new file with mode: 0755]
.config/neomutt/spam [new file with mode: 0644]
.config/neomutt/supersede-header [new file with mode: 0755]
.config/neomutt/viewmailattachments [new file with mode: 0755]

diff --git a/.config/neomutt/__pycache__/buildmimetree.cpython-311-pytest-7.4.0.pyc b/.config/neomutt/__pycache__/buildmimetree.cpython-311-pytest-7.4.0.pyc
new file mode 100644 (file)
index 0000000..0df1cec
Binary files /dev/null and b/.config/neomutt/__pycache__/buildmimetree.cpython-311-pytest-7.4.0.pyc differ
diff --git a/.config/neomutt/ack-recipients b/.config/neomutt/ack-recipients
new file mode 100644 (file)
index 0000000..f3a4275
--- /dev/null
@@ -0,0 +1,23 @@
+# ~/.config/neomutt/ack-recipients
+#
+# This file stores sha256sums of lower-cased e-mail addresses (no newline)
+# instead of the addresses themselves as a measure to protect privacy. You can
+# get new lines like this:
+#
+#   printf my.new@e-mail.addre.ss | tr [[:upper:]] [[:lower:]] \
+#     | sha256sum | sed -e 's, .*,,'
+#
+8e31c9e140910b4d3a44a014ca968b858f0909d26633a0d0814082381946d596
+af52810da7583e744c8613b34b95c3121c3fdabc4bd0b71618e1b7d250ffd42b
+f3839e4359797b49add476bdda1645441ad453f5fded8ce33afb7e3b7a6e47f8
+0ffa31c9a82edc0a0e342ec7f6e656de555941b56a398c00a3531a1553f4df42
+58291f6dee0af784ea87ad76b74f48208721fa0b210a48c333bde3560ca00545
+11b39707dcafbd3410d79dff68d0635b7de820f1be6515d859214c4504e0a829
+7f4fad89b42b5690f57512e9ae88b1049777e3059a4b6a159fae67885ac5da15
+4522c6357736f50bc68fe87bd602176f730926019a9c72c6eafa96d3b3bdf37c
+0aec1a9b0ca4a181aac6f85cd3f5e628c4da3a15aa40518ca7ccf5311fd4bbeb
+d76070145d21ec707f12b834c24aee6ec35c628b636d6e1606172c65a373b0e3
+07979ca17b8706b2c3fbfb744dad1d057d098aa3be0e2b325fe6e4024b310d29
+3d66a23f23b70f1838369c8292cddc3a50e5ebb6ae3cb41a6c2ef8354a913814
+615aa8482f524f9c66696ebd4bb5bb7836e2819c63313be2c067a4f9a0d546cc
+b92544617b44d0058ac3bbb01dad4fed076f1c926edce41d02bbd60e0a110cdd
diff --git a/.config/neomutt/aliases b/.config/neomutt/aliases
new file mode 100644 (file)
index 0000000..2ac2f57
--- /dev/null
@@ -0,0 +1,178 @@
+alias daddy Dr. Hartmut Krafft <krafft@gestion.de>
+alias ruth Ruth Krafft <ruth@krafftwerk.de>
+alias tombo Thomas Krafft <thomas@krafftwerk.de>
+alias andy Andreas Krafft <andreas@krafftwerk.de>
+alias brüder tombo andy
+alias eltern daddy ruth
+alias familie eltern brüder
+
+alias penny Penny Krafft <penny@mjollnir.org>
+
+alias pius Prof. Dr. Pius Baschera <bascpiu@hilti.com>
+
+alias lesser Andreas Lesser <andreas.lesser@toni-kg.de>
+
+alias wiedemann Prof. Dr. Andreas Wiedemann <wiedemann@hennerkes.de>
+
+alias alex Alexander Grüter <alexander.grueter@mtfk.de>
+
+alias wolfgruber Dr. Matthias Wolfgruber <matthias.wolfgruber@gmx.de>
+alias meyrat Marco Meyrat <marco.meyrat@hilti.com>
+alias fd Nicola Fortmann-Drühe <ardex@fortmann-druehe.de-DRAFT>
+alias krauch Dr. Tilman Krauch <tilman.krauch@freudenberg.de>
+alias fd Nicola Fortmann-Drühe <ardex@fortmann-druehe.de-DRAFT>
+alias beirat fd wolfgruber krauch meyrat
+
+alias eslam Mark Eslamlooy <mark.eslamlooy@ardex.de>
+alias eslam1 Mark Eslamlooy <eslamlooy1@ardex.de>
+
+alias distler Renate Distler <renate.distler@m.pkf.de>
+
+alias wirtz Markus Wirtz <mw@opensourcepress.de>
+
+alias pohlmann Peter Pohlmann <peter.pohlmann@tripos-gmbh.de>
+alias kohorst Stephan Kohorst <skohorst@draco.de>
+alias burmester Dr. Helmut Burmester <dhburmester@aol.com>
+alias bästlein Dr. Hanno Bästlein <hanno.baestlein@oneequity.com>
+alias iwu pohlmann kohorst burmester bästlein
+
+alias weg WEG Hanfstaenglstrasse 15/17 <weg@hanfstaenglstrasse.de>
+alias wegbr WEG-Beirat Hanfstaenglstrasse 15/17 <weg-beirat@hanfstaenglstrasse.de>
+
+alias freya Freya Oehle <f.oehle@spottster.com>
+alias tobi Tobias Kempkensteffen <t.kempkensteffen@spottster.com>
+alias stroeher Jan-Hendrik Ströher <jh.stroeher@mithril-holding.de>
+alias forum Roland Hradek <hradek@doldemedien.de>
+alias saule Sabrina Saule <saule@jochen-schweizer.de>
+alias spottster-gv freya tobi stroeher forum saule
+
+alias mario Mario Witte <mario@ri.de>
+alias zeifang Nico Zeifang <nico@ri.de>
+alias wiegard Stefan Wiegard <stefan@ri.de>
+alias ri mario zeifang wiegard
+
+alias moe Maximilian Möhring <max@keyp.io>
+alias mang Simon Mang <simon@keyp.io>
+alias jonathan Jonathan Berroth <jonathan@keyp.io>
+alias keyp moe mang jonathan
+alias rahul Rahul Watson Govindan <rahulgovindan@hotmail.com>
+alias harry Harry Strasser <strasser@digitalconvergence.eu>
+alias chenxi Chenxi Wang <chenxi@raincapital.vc>
+alias freddy Freddy Dezeure <freddy@freddydezeure.eu>
+alias keyp-board rahul harry chenxi
+
+alias fabian Fabian Eckert <fabian.eckert@recup.de>
+alias florian Florian Pachaly <florian.pachaly@recup.de>
+alias christian Christian Vilsmaier <christian@myidkeeper.com>
+alias iris Iris Vilsmaier <iris.vilsmaier@recup.de>
+alias chicco Christian Kohlhof <kohlhof@chicco-di-caffe.com>, Ralf Meyer <meyer@chicco-di-caffe.com>
+alias recup fabian florian steffen christian iris chicco
+
+## FAMILY-ELGER
+#alias ini christine wenninger <iniwenn@web.de>
+#alias bigi brigitte wenninger <bbas.wenninger@web.de>
+#alias bernie bernward wenninger <bernward.wenninger@audi.de>
+#alias kathi-privat katharina wenninger <kathi@madduck.net>
+#alias kathi-compuware katharina wenninger <katharina.wenninger@de.compuware.com>
+#alias kathi kathi-privat
+#alias peti petra wenninger <petrawenn@web.de>
+#alias karsten karsten beckmann <karsten@thebeckmanns.de>
+#alias ingo ingo ludwig <ingo.ludwig@aramark.de>
+#alias isabelelger isabel elger <isabel.elger@stud.uni-muenchen.de>
+#alias wenninger ini bigi bernie kathi peti karsten
+#
+## FAMILY-KRAFFT
+#alias uwe uwe soltesz <uwe.soltesz@t-online.de>
+#alias stefan stefan soltesz <stefansoltesz@gmx.de>
+#alias ulli ulli soltesz <so@gleisslutz.com>
+#alias till till soltesz <soltesz@gmx.de>
+#alias juergenwaage juergen waage <ritaundjuergen@aol.com>
+#alias ecki eckart waage <ewaage@studio-b-music.de>
+#alias gerrit gerrit waage <wa.ge@gmx.de>
+#alias gert gert soltesz <ggsol@t-online.de>
+#alias inga inga soltesz <ingasz@aol.com>
+#alias soltesz uwe stefan ulli till
+#alias waage ecki juergenwaage gerrit
+
+# LISTS
+alias slug slug <slug@sccs.swarthmore.edu>
+alias debian-user debian users <debian-user@lists.debian.org>
+alias debian-project debian project list <debian-project@lists.debian.org>
+alias debian-devel debian developers <debian-devel@lists.debian.org>
+alias debian-mentors debian mentors <debian-mentors@lists.debian.org>
+alias debian-curiosa debian curiosa list <debian-curiosa@lists.debian.org>
+alias debian-firewall debian firewall list <debian-firewall@lists.debian.org>
+alias debian-ipv6 debian ipv6 <debian-ipv6@lists.debian.org>
+alias debian-isp debian isp list <debian-isp@lists.debian.org>
+alias debian-events debian events <debian-events@lists.debian.org>
+alias debian-events-eu debian events in europe <debian-events-eu@lists.debian.org>
+alias debian-muc muenchner debianers <area-muc@teams.debian.net>
+alias debian-ch swiss debian community <community@lists.debian.ch>
+alias debian-vote debian vote list <debian-vote@lists.debian.org>
+alias debian-private debian private list <debian-private@lists.debian.org>
+alias debian-books debian books <debian-books@lists.debian.org>
+alias debian-release debian release team <debian-release@lists.debian.org>
+alias debian-research debian research discussions <debian-research@lists.debian.org>
+alias mutt-users mutt users <mutt-users@mutt.org>
+alias mutt mutt-users
+alias postfix-users postfix users <postfix-users@postfix.org>
+alias postfix postfix-users
+alias cypherpunks cypherpunks <cypherpunks@cpunks.org>
+alias buffy buffy developers list <buffy-devel@lists.alioth.debian.org>
+alias netconf netconf developers list <netconf-devel@lists.alioth.debian.org>
+alias debconf-discuss debconf discussion list <debconf-discuss@lists.debconf.org>
+alias debconf-team debconf team list <debconf-team@lists.debconf.org>
+alias dc-team debconf-team
+alias debconf debconf-discuss
+alias debconf-sponsors-team debconf sponsorship team list <debconf-sponsors-team@lists.debconf.org>
+alias dc-sponsors debconf-sponsors-team
+alias dc15-team dc15 team discussion list <debconf15-team@lists.debian.org>
+alias dc15 dc15 team mailbox <debconf15@debconf.org>
+alias dc16-team dc16 team discussion list <debconf16-team@lists.debian.org>
+alias dc16 dc16-team
+alias debconf-kids debconf kids mailing list <debconf-kids@lists.debian.org>
+alias dc-kids debconf-kids
+alias vim vim help list <vim@vim.org>
+alias dovecot dovecot mailing list <dovecot@dovecot.org>
+alias vcs-home home in vcs discussion list <vcs-home@lists.madduck.net>
+alias vcs-pkg vcs distro packaging discussion list <vcs-pkg-discuss@lists.alioth.debian.org>
+alias offlineimap offlineimap list <offlineimap@complete.org>
+alias mailtags mailtags discussion list <mailtags@lists.madduck.net>
+alias asterisk asterisk users mailing list <asterisk-users@lists.digium.com>
+alias unbound unbound users list <unbound-users@unbound.net>
+alias foo foo camp discussion list <campers@groups.baacamp.org>
+alias rsyslog rsyslog list <rsyslog@lists.adiscon.com>
+alias salt salt users list <salt-users@googlegroups.com>
+alias ansible ansible project list <ansible-project@googlegroups.com>
+alias libvirt libvirt users list <libvirt-users@redhat.com>
+alias vmm vmm users list <vmm-users@lists.sourceforge.net>
+alias osmand osm android users list <osmand@googlegroups.com>
+alias libreoffice libreoffice users list <users@global.libreoffice.org>
+alias lkml linux kernel mailing list <linux-kernel@vger.kernel.org>
+alias django django users list <django-users@googlegroups.com>
+alias django-devel django developers list <django-developers@googlegroups.com>
+alias openssh OpenSSH development mailing list <openssh-unix-dev@mindrot.org>
+alias unison unison users lists <unison-users@yahoogroups.com>
+alias unison-hackers unison hackers lists <unison-hackers@lists.seas.upenn.edu>
+alias sogo sogo users list <users@sogo.nu>
+alias systemd systemd devel list <systemd-devel@lists.freedesktop.org>
+alias odoo odoo community discussion list <community@mail.odoo.com>
+alias munin-users munin users list <munin-users@lists.sourceforge.net>
+alias awesome awesome window manager list <awesome@naquadah.org>
+alias fsfe.de FSFE Koordinationsliste Deutschland <germany@lists.fsfe.org>
+alias zsh-users zsh users list <zsh-users@zsh.org>
+alias zsh-workers zsh workers list <zsh-workers@zsh.org>
+alias zsh-devel zsh-workers
+alias gnupg-users gnupg users list <gnupg-users@gnupg.org>
+alias gpg gnupg-users
+alias gnupg gnupg-users
+alias ccc-muc µC3 talk Liste <talk@lists.muc.ccc.de>
+alias lca lca chat list <lca2021-chat@lists.lca2021.linux.org.au>
+alias openedu-parents OpenEDU parents list <openedu-parents@lists.openstem.com.au>
+alias stafford Stafford & Port Streets neighbourhood <staffordstreet@lists.madduck.net>
+alias tigervnc-users TigerVNC users list <tigervnc-users@googlegroups.com>
+alias netfilter netfilter users list <netfilter@vger.kernel.org>
+
+alias btsc Debian bug tracker control bot <control@bugs.debian.org>
+
+# vim:tw=0:ft=muttrc
diff --git a/.config/neomutt/alternates b/.config/neomutt/alternates
new file mode 100644 (file)
index 0000000..c703ba7
--- /dev/null
@@ -0,0 +1,37 @@
+alternates 'madduck(\+.+)?@(.+\.)*madduck\.net'
+alternates (noc|abuse)@madduck\.net
+alternates madduck@debian\.(org|ch|net)
+alternates (madduck|accounting)@debconf\.org
+alternates madduck@(.+\.)?sccs\.swarthmore\.edu
+alternates krafft@ifi\.u(ni)?zh\.ch
+alternates krafft@ailab\.ch
+alternates m(artin.)?krafft@sudetia\.de
+alternates mkrafft@aerasec\.de
+alternates .+@(pobox|usenet)\.madduck\.net
+alternates (madduck|changes|errata|feedback|contact|info)@debian-?(system|book)\.info
+alternates .+@martin-krafft\..+
+alternates martin\.krafft@(lero|(staffmail\.)?ul)\.ie
+alternates .+@pantsfullofunix\.net
+alternates .+@limerence\.org
+alternates .+@belligerence\.net
+alternates ma(rtin|dduck)@alpinflegel\.de
+alternates ma(rtin|dduck)@krafftwerk\..+
+alternates k(bk|gf)g@krafftwerk\.de
+alternates martin@krafft\.(de|ch|ie)
+alternates comments\+.+@blog\.madduck\.net
+alternates .+@hanfstaenglstrasse\.de
+alternates martin\.krafft@uni-wh\.de
+alternates martin\.krafft@mtfk\.(org|de)
+alternates madduck@fsfe\.org
+alternates martin\.krafft@teckids\.org
+alternates .+@tahi-ventures\.(cc|ch|com|de|eu|info|net|org)
+alternates .+@tahi\.(vc|cc|kiwi\.nz|ventures)
+alternates .+@grounded.ventures
+alternates .+@portfolio\.tahi\.v(c|entures)
+alternates m@rtin\.kiwi
+alternates .+@(.+\.)?nymphenburg-squash\.de
+#alternates .+@(rw|int|home)\.madduck\.net
+alternates .+@penny[au]ndmartin\.net
+alternates martin\.krafft@toni(\.immo|-kg\.de)
+
+# vim:ft=muttrc
diff --git a/.config/neomutt/append-header b/.config/neomutt/append-header
new file mode 100755 (executable)
index 0000000..ab7444b
--- /dev/null
@@ -0,0 +1,75 @@
+#!/bin/sh
+#
+# edit-header - helper script to append/replace/remove headers with mutt
+#
+# Based on an idea by David Champion <dgc at uchicago.edu>
+#
+# Copyright © 2008 martin f. krafft <madduck@madduck.net>
+# Released under the terms of the Artistic Licence 2.0
+#
+set -eu
+
+if [ ! -x "$(command -v formail)" ]; then
+  echo E: formail not installed. >&2
+  exit 1
+fi
+
+header="${1:-}"
+if [ -z "$header" ]; then
+  echo "E: no header specified" >&2
+  exit 1
+fi
+
+get_header_contents()
+{
+  local contents
+  printf "Enter ${1:-header} contents: " >/dev/tty
+  read contents </dev/tty
+  echo "$contents"
+}
+
+script="${0%/*}/${2:-}"
+if [ -f "$script" ] && [ -x "$script" ]; then
+  if [ -z "${__RLWRAPPED:-}" ] && [ -x $(command -v rlwrap) ]; then
+    __RLWRAPPED=true exec rlwrap "$0" "$@"
+  fi
+
+  contents_source="$script"
+  shift
+else
+  contents_source=get_header_contents
+fi
+
+editor=
+case "$0" in
+  *append-header|*supersede-header|*replace-header)
+    contents="${2:-}"
+    [ -n "$contents" ] || contents="$(eval $contents_source $header)"
+    case "$0" in
+      *append-header) flag=-A;;
+      *supersede-header) flag=-i;;
+      *replace-header) flag=-I;;
+    esac
+    editor="${0%/*}/filter-proxy formail $flag \'$header: $contents\'"
+    ;;
+
+  *remove-header)
+    editor="${0%/*}/filter-proxy formail -I \'$header:\'"
+    ;;
+
+  *)
+    echo "E: unknown invocation: ${0##*/}" >&2
+    exit 1
+    ;;
+
+esac
+
+echo "set my_editor=\"\$editor\""
+echo "set my_filter=\"$editor\""
+echo -n "push '"
+echo -n "<enter-command>set editor=\"\$my_filter\"<enter>"
+echo -n "<edit>"
+echo -n "<enter-command>set editor=\"\$my_editor\"<enter>"
+echo -n "<enter-command>unset my_filter<enter>"
+echo -n "<enter-command>unset my_editor<enter>"
+echo "'"
diff --git a/.config/neomutt/batch-subject-editor b/.config/neomutt/batch-subject-editor
new file mode 100755 (executable)
index 0000000..0649ac5
--- /dev/null
@@ -0,0 +1,32 @@
+#!/bin/sh
+#
+# batch-subject-editor - helper script to change subject lines with mutt
+#
+# Based on an idea by David Champion <dgc at uchicago.edu>
+#
+# Copyright © 2008 martin f. krafft <madduck@madduck.net>
+# Released under the terms of the Artistic Licence 2.0
+#
+set -eu
+
+if [ -z "${__RLWRAPPED:-}" ] && [ -x $(command -v rlwrap) ]; then
+  __RLWRAPPED=true exec rlwrap "$0" "$@"
+fi
+
+printf 'Enter new subject: ' >/dev/tty
+read subj </dev/tty
+
+if [ -z "${subj:-}" ]; then
+  echo No subject specified. >&2
+  exit 1
+fi
+
+SED_DELIM=,
+subj=$(echo "$subj" | sed -re "s\1a${SED_DELIM}\1a\\\&\1ag")
+
+RE_REPLY='((re|aw|antwort)([[(]?[[:digit:]]+[)]]?)?):[[:space:]]*'
+RE_SUBJ_PREFIX="^Subject:[[:space:]]*(${RE_REPLY})*"
+RE_SUBJ='.*'
+EDITOR="sed -i -re \"s${SED_DELIM}(${RE_SUBJ_PREFIX})${RE_SUBJ}${SED_DELIM}\\\1$subj${SED_DELIM}i\""
+
+printf "set editor='${EDITOR} %s'"
diff --git a/.config/neomutt/bgrun b/.config/neomutt/bgrun
new file mode 100755 (executable)
index 0000000..37f40ad
--- /dev/null
@@ -0,0 +1,180 @@
+#!/bin/sh
+
+#exec 2>> /tmp/bgrun.stderr
+#set -x
+
+SELF="${0##*/}"
+
+TEMPDIR=
+TEMPRUNDIR=.tempdir-run.d
+cleanup() {
+  if [ -d $TEMPRUNDIR ]; then
+    local TEMPDIR; TEMPDIR="$PWD"
+    notify_output
+    cd /
+    rm -rf "$TEMPDIR"
+  fi
+  trap - 1 2 3 4 5 6 7 8 10 11 12 13 14 15
+}
+trap cleanup 1 2 3 4 5 6 7 8 10 11 12 13 14 15
+
+enter_tempdir() {
+  if [ -d $TEMPRUNDIR ]; then
+    return
+
+  else
+    if [ -z "${TMPDIR:-}" ]; then
+      TMPDIR=/tmp
+    fi
+    for i in $LOGNAME volatile; do
+      if [ -d "${TMPDIR}/$i" ]; then
+        TMPDIR="${TMPDIR}/$i"
+        break
+      fi
+    done
+    cd $(mktemp -dp "$TMPDIR" mutt.XXXXXXXXXX)
+    mkdir $TEMPRUNDIR
+  fi
+}
+
+notify() {
+  if [ -x "$(command -v awesome-client)" ]; then
+    local stdout stderr escaped output
+    stdout="${2:-}"
+    stderr="${3:-}"
+    for i in stdout stderr; do
+      if eval test -s $TEMPRUNDIR/output.$i; then
+        escaped=$(eval sed -e 's,\",\\\",g' $TEMPRUNDIR/output.$i)
+        output="${output:+$output
+}${i}:
+$escaped"
+      fi
+    done
+    [ -n "${escaped:-}" ] || return
+    awesome-client <<-_eof
+       local naughty = require("naughty")
+       naughty.notify({ preset = naughty.config.presets.low,
+               title  = "${1:-Output from mutt/$SELF}",
+               text   = [[$output]]
+               })
+       _eof
+  fi
+}
+
+notify_output() {
+  [ -d $TEMPRUNDIR ] || return
+  local stdout stderr anything
+
+  for i in stdout stderr; do
+    if [ -s "$TEMPRUNDIR/output.$i" ]; then
+      eval $i="'$TEMPRUNDIR/output.$i'"
+    else
+      eval $i=/dev/null
+    fi
+  done
+
+  notify "Output from mutt/$SELF" $stdout $stderr
+}
+
+guess_extension() {
+  python3 -c "import mimetypes; print(mimetypes.guess_extension('$1'))"
+}
+
+get_file() {
+  local t
+  if [ -z "$1" ]; then
+    t=$(mktemp -p "$PWD" tmp.XXXXXXXXXX$(guess_extension "$MIMETYPE"))
+    cat > "$t"
+    echo "$t"
+  else
+    t="$(echo -n ${1##*/} | sed -re 's![^[:alnum:],.@%^+=_-]!_!gi')"
+    ln "$1" "$t" 2>/dev/null || cp "$1" "$t"
+    echo "$PWD/$t"
+  fi
+}
+
+MIMETYPE= FILENAME= VIEWER= DELAY=1
+state=
+for arg in "$@"; do
+  case "$state/$arg" in
+
+    (/-t) state=t;;
+    (t/*) MIMETYPE="$arg"; state=;;
+
+    (/-f) state=f;;
+    (f/*) FILENAME="$arg"; state=;;
+
+    (/-d) state=d;;
+    (d/*) DELAY="$arg"; state=;;
+
+    (/-v) state=v;;
+    (v/*) VIEWER="$arg"; state=;;
+
+    (*)
+      echo >&2 "E: Invalid argument: $i"
+      exit 1
+      ;;
+
+  esac
+done
+
+launch_viewer() {
+  local filename; filename="$1"
+  if [ -z "$VIEWER" ]; then
+    [ -n "${2:-}" ] && filename="${2}:${1}"
+    run-mailcap "$filename" > $TEMPRUNDIR/output.stdout 2> $TEMPRUNDIR/output.stderr
+  else
+    $VIEWER "$filename" > $TEMPRUNDIR/output.stdout 2> $TEMPRUNDIR/output.stderr
+  fi
+}
+
+case "$SELF" in
+  (bgview)
+    # make a copy of the file, then launch a shell process in the background
+    # to divert to run-mailcap, after which the temporary directory gets
+    # cleaned up.
+    enter_tempdir
+    FILE="$(get_file "$FILENAME")"
+    (
+      ts=$(($(date +%s) + $DELAY))
+      launch_viewer "$FILE" "$MIMETYPE"
+      while [ $(date +%s) -lt $ts ]; do sleep 1; done
+      cleanup
+    ) &
+    trap - 1 2 3 4 5 6 7 8 10 11 12 13 14 15
+    ;;
+  (bgview-fifo)
+    # hack to stay around until the viewer has read the file: make a fifo and
+    # wait for the cat process to finish writing to it, which means that it
+    # must have been consumed on the other end.
+    enter_tempdir
+    FILE="$(get_file "$FILENAME")"
+    FIFO="fifo-${FILE##*/}"
+    mkfifo "$FIFO"
+    cat "$FILE" > "$FIFO" &
+    # For some reason, we do have to write a tempfile and cannot seem to
+    # redirect stdin directly to the fifo, i.e. this does not work instead of
+    # the previous three lines:
+    ## cat > "$FIFO" &
+    launch_viewer "$FIFO" "$MIMETYPE"
+    wait
+    cleanup
+    ;;
+  (bgview-delay)
+    # hack to stay around until the file hasn't been accessed for a few
+    # seconds, so that we can clean up. This is for cases when the FIFO method
+    # doesn't work, because e.g. Firefox randomly chooses it needs to read
+    # HTML files twice.
+    enter_tempdir
+    FILE="$(get_file "$FILENAME")"
+    touch "$FILE"
+    (launch_viewer "$FILE" "$MIMETYPE") &
+    (
+      while [ $(($(stat -c%X "$FILE") + $DELAY)) -gt $(date +%s) ]; do
+        sleep 1
+      done
+      cleanup
+    ) &
+    trap - 1 2 3 4 5 6 7 8 10 11 12 13 14 15
+    ;;
+esac
diff --git a/.config/neomutt/bgview b/.config/neomutt/bgview
new file mode 100755 (executable)
index 0000000..37f40ad
--- /dev/null
@@ -0,0 +1,180 @@
+#!/bin/sh
+
+#exec 2>> /tmp/bgrun.stderr
+#set -x
+
+SELF="${0##*/}"
+
+TEMPDIR=
+TEMPRUNDIR=.tempdir-run.d
+cleanup() {
+  if [ -d $TEMPRUNDIR ]; then
+    local TEMPDIR; TEMPDIR="$PWD"
+    notify_output
+    cd /
+    rm -rf "$TEMPDIR"
+  fi
+  trap - 1 2 3 4 5 6 7 8 10 11 12 13 14 15
+}
+trap cleanup 1 2 3 4 5 6 7 8 10 11 12 13 14 15
+
+enter_tempdir() {
+  if [ -d $TEMPRUNDIR ]; then
+    return
+
+  else
+    if [ -z "${TMPDIR:-}" ]; then
+      TMPDIR=/tmp
+    fi
+    for i in $LOGNAME volatile; do
+      if [ -d "${TMPDIR}/$i" ]; then
+        TMPDIR="${TMPDIR}/$i"
+        break
+      fi
+    done
+    cd $(mktemp -dp "$TMPDIR" mutt.XXXXXXXXXX)
+    mkdir $TEMPRUNDIR
+  fi
+}
+
+notify() {
+  if [ -x "$(command -v awesome-client)" ]; then
+    local stdout stderr escaped output
+    stdout="${2:-}"
+    stderr="${3:-}"
+    for i in stdout stderr; do
+      if eval test -s $TEMPRUNDIR/output.$i; then
+        escaped=$(eval sed -e 's,\",\\\",g' $TEMPRUNDIR/output.$i)
+        output="${output:+$output
+}${i}:
+$escaped"
+      fi
+    done
+    [ -n "${escaped:-}" ] || return
+    awesome-client <<-_eof
+       local naughty = require("naughty")
+       naughty.notify({ preset = naughty.config.presets.low,
+               title  = "${1:-Output from mutt/$SELF}",
+               text   = [[$output]]
+               })
+       _eof
+  fi
+}
+
+notify_output() {
+  [ -d $TEMPRUNDIR ] || return
+  local stdout stderr anything
+
+  for i in stdout stderr; do
+    if [ -s "$TEMPRUNDIR/output.$i" ]; then
+      eval $i="'$TEMPRUNDIR/output.$i'"
+    else
+      eval $i=/dev/null
+    fi
+  done
+
+  notify "Output from mutt/$SELF" $stdout $stderr
+}
+
+guess_extension() {
+  python3 -c "import mimetypes; print(mimetypes.guess_extension('$1'))"
+}
+
+get_file() {
+  local t
+  if [ -z "$1" ]; then
+    t=$(mktemp -p "$PWD" tmp.XXXXXXXXXX$(guess_extension "$MIMETYPE"))
+    cat > "$t"
+    echo "$t"
+  else
+    t="$(echo -n ${1##*/} | sed -re 's![^[:alnum:],.@%^+=_-]!_!gi')"
+    ln "$1" "$t" 2>/dev/null || cp "$1" "$t"
+    echo "$PWD/$t"
+  fi
+}
+
+MIMETYPE= FILENAME= VIEWER= DELAY=1
+state=
+for arg in "$@"; do
+  case "$state/$arg" in
+
+    (/-t) state=t;;
+    (t/*) MIMETYPE="$arg"; state=;;
+
+    (/-f) state=f;;
+    (f/*) FILENAME="$arg"; state=;;
+
+    (/-d) state=d;;
+    (d/*) DELAY="$arg"; state=;;
+
+    (/-v) state=v;;
+    (v/*) VIEWER="$arg"; state=;;
+
+    (*)
+      echo >&2 "E: Invalid argument: $i"
+      exit 1
+      ;;
+
+  esac
+done
+
+launch_viewer() {
+  local filename; filename="$1"
+  if [ -z "$VIEWER" ]; then
+    [ -n "${2:-}" ] && filename="${2}:${1}"
+    run-mailcap "$filename" > $TEMPRUNDIR/output.stdout 2> $TEMPRUNDIR/output.stderr
+  else
+    $VIEWER "$filename" > $TEMPRUNDIR/output.stdout 2> $TEMPRUNDIR/output.stderr
+  fi
+}
+
+case "$SELF" in
+  (bgview)
+    # make a copy of the file, then launch a shell process in the background
+    # to divert to run-mailcap, after which the temporary directory gets
+    # cleaned up.
+    enter_tempdir
+    FILE="$(get_file "$FILENAME")"
+    (
+      ts=$(($(date +%s) + $DELAY))
+      launch_viewer "$FILE" "$MIMETYPE"
+      while [ $(date +%s) -lt $ts ]; do sleep 1; done
+      cleanup
+    ) &
+    trap - 1 2 3 4 5 6 7 8 10 11 12 13 14 15
+    ;;
+  (bgview-fifo)
+    # hack to stay around until the viewer has read the file: make a fifo and
+    # wait for the cat process to finish writing to it, which means that it
+    # must have been consumed on the other end.
+    enter_tempdir
+    FILE="$(get_file "$FILENAME")"
+    FIFO="fifo-${FILE##*/}"
+    mkfifo "$FIFO"
+    cat "$FILE" > "$FIFO" &
+    # For some reason, we do have to write a tempfile and cannot seem to
+    # redirect stdin directly to the fifo, i.e. this does not work instead of
+    # the previous three lines:
+    ## cat > "$FIFO" &
+    launch_viewer "$FIFO" "$MIMETYPE"
+    wait
+    cleanup
+    ;;
+  (bgview-delay)
+    # hack to stay around until the file hasn't been accessed for a few
+    # seconds, so that we can clean up. This is for cases when the FIFO method
+    # doesn't work, because e.g. Firefox randomly chooses it needs to read
+    # HTML files twice.
+    enter_tempdir
+    FILE="$(get_file "$FILENAME")"
+    touch "$FILE"
+    (launch_viewer "$FILE" "$MIMETYPE") &
+    (
+      while [ $(($(stat -c%X "$FILE") + $DELAY)) -gt $(date +%s) ]; do
+        sleep 1
+      done
+      cleanup
+    ) &
+    trap - 1 2 3 4 5 6 7 8 10 11 12 13 14 15
+    ;;
+esac
diff --git a/.config/neomutt/bgview-delay b/.config/neomutt/bgview-delay
new file mode 100755 (executable)
index 0000000..37f40ad
--- /dev/null
@@ -0,0 +1,180 @@
+#!/bin/sh
+
+#exec 2>> /tmp/bgrun.stderr
+#set -x
+
+SELF="${0##*/}"
+
+TEMPDIR=
+TEMPRUNDIR=.tempdir-run.d
+cleanup() {
+  if [ -d $TEMPRUNDIR ]; then
+    local TEMPDIR; TEMPDIR="$PWD"
+    notify_output
+    cd /
+    rm -rf "$TEMPDIR"
+  fi
+  trap - 1 2 3 4 5 6 7 8 10 11 12 13 14 15
+}
+trap cleanup 1 2 3 4 5 6 7 8 10 11 12 13 14 15
+
+enter_tempdir() {
+  if [ -d $TEMPRUNDIR ]; then
+    return
+
+  else
+    if [ -z "${TMPDIR:-}" ]; then
+      TMPDIR=/tmp
+    fi
+    for i in $LOGNAME volatile; do
+      if [ -d "${TMPDIR}/$i" ]; then
+        TMPDIR="${TMPDIR}/$i"
+        break
+      fi
+    done
+    cd $(mktemp -dp "$TMPDIR" mutt.XXXXXXXXXX)
+    mkdir $TEMPRUNDIR
+  fi
+}
+
+notify() {
+  if [ -x "$(command -v awesome-client)" ]; then
+    local stdout stderr escaped output
+    stdout="${2:-}"
+    stderr="${3:-}"
+    for i in stdout stderr; do
+      if eval test -s $TEMPRUNDIR/output.$i; then
+        escaped=$(eval sed -e 's,\",\\\",g' $TEMPRUNDIR/output.$i)
+        output="${output:+$output
+}${i}:
+$escaped"
+      fi
+    done
+    [ -n "${escaped:-}" ] || return
+    awesome-client <<-_eof
+       local naughty = require("naughty")
+       naughty.notify({ preset = naughty.config.presets.low,
+               title  = "${1:-Output from mutt/$SELF}",
+               text   = [[$output]]
+               })
+       _eof
+  fi
+}
+
+notify_output() {
+  [ -d $TEMPRUNDIR ] || return
+  local stdout stderr anything
+
+  for i in stdout stderr; do
+    if [ -s "$TEMPRUNDIR/output.$i" ]; then
+      eval $i="'$TEMPRUNDIR/output.$i'"
+    else
+      eval $i=/dev/null
+    fi
+  done
+
+  notify "Output from mutt/$SELF" $stdout $stderr
+}
+
+guess_extension() {
+  python3 -c "import mimetypes; print(mimetypes.guess_extension('$1'))"
+}
+
+get_file() {
+  local t
+  if [ -z "$1" ]; then
+    t=$(mktemp -p "$PWD" tmp.XXXXXXXXXX$(guess_extension "$MIMETYPE"))
+    cat > "$t"
+    echo "$t"
+  else
+    t="$(echo -n ${1##*/} | sed -re 's![^[:alnum:],.@%^+=_-]!_!gi')"
+    ln "$1" "$t" 2>/dev/null || cp "$1" "$t"
+    echo "$PWD/$t"
+  fi
+}
+
+MIMETYPE= FILENAME= VIEWER= DELAY=1
+state=
+for arg in "$@"; do
+  case "$state/$arg" in
+
+    (/-t) state=t;;
+    (t/*) MIMETYPE="$arg"; state=;;
+
+    (/-f) state=f;;
+    (f/*) FILENAME="$arg"; state=;;
+
+    (/-d) state=d;;
+    (d/*) DELAY="$arg"; state=;;
+
+    (/-v) state=v;;
+    (v/*) VIEWER="$arg"; state=;;
+
+    (*)
+      echo >&2 "E: Invalid argument: $i"
+      exit 1
+      ;;
+
+  esac
+done
+
+launch_viewer() {
+  local filename; filename="$1"
+  if [ -z "$VIEWER" ]; then
+    [ -n "${2:-}" ] && filename="${2}:${1}"
+    run-mailcap "$filename" > $TEMPRUNDIR/output.stdout 2> $TEMPRUNDIR/output.stderr
+  else
+    $VIEWER "$filename" > $TEMPRUNDIR/output.stdout 2> $TEMPRUNDIR/output.stderr
+  fi
+}
+
+case "$SELF" in
+  (bgview)
+    # make a copy of the file, then launch a shell process in the background
+    # to divert to run-mailcap, after which the temporary directory gets
+    # cleaned up.
+    enter_tempdir
+    FILE="$(get_file "$FILENAME")"
+    (
+      ts=$(($(date +%s) + $DELAY))
+      launch_viewer "$FILE" "$MIMETYPE"
+      while [ $(date +%s) -lt $ts ]; do sleep 1; done
+      cleanup
+    ) &
+    trap - 1 2 3 4 5 6 7 8 10 11 12 13 14 15
+    ;;
+  (bgview-fifo)
+    # hack to stay around until the viewer has read the file: make a fifo and
+    # wait for the cat process to finish writing to it, which means that it
+    # must have been consumed on the other end.
+    enter_tempdir
+    FILE="$(get_file "$FILENAME")"
+    FIFO="fifo-${FILE##*/}"
+    mkfifo "$FIFO"
+    cat "$FILE" > "$FIFO" &
+    # For some reason, we do have to write a tempfile and cannot seem to
+    # redirect stdin directly to the fifo, i.e. this does not work instead of
+    # the previous three lines:
+    ## cat > "$FIFO" &
+    launch_viewer "$FIFO" "$MIMETYPE"
+    wait
+    cleanup
+    ;;
+  (bgview-delay)
+    # hack to stay around until the file hasn't been accessed for a few
+    # seconds, so that we can clean up. This is for cases when the FIFO method
+    # doesn't work, because e.g. Firefox randomly chooses it needs to read
+    # HTML files twice.
+    enter_tempdir
+    FILE="$(get_file "$FILENAME")"
+    touch "$FILE"
+    (launch_viewer "$FILE" "$MIMETYPE") &
+    (
+      while [ $(($(stat -c%X "$FILE") + $DELAY)) -gt $(date +%s) ]; do
+        sleep 1
+      done
+      cleanup
+    ) &
+    trap - 1 2 3 4 5 6 7 8 10 11 12 13 14 15
+    ;;
+esac
diff --git a/.config/neomutt/bgview-fifo b/.config/neomutt/bgview-fifo
new file mode 100755 (executable)
index 0000000..37f40ad
--- /dev/null
@@ -0,0 +1,180 @@
+#!/bin/sh
+
+#exec 2>> /tmp/bgrun.stderr
+#set -x
+
+SELF="${0##*/}"
+
+TEMPDIR=
+TEMPRUNDIR=.tempdir-run.d
+cleanup() {
+  if [ -d $TEMPRUNDIR ]; then
+    local TEMPDIR; TEMPDIR="$PWD"
+    notify_output
+    cd /
+    rm -rf "$TEMPDIR"
+  fi
+  trap - 1 2 3 4 5 6 7 8 10 11 12 13 14 15
+}
+trap cleanup 1 2 3 4 5 6 7 8 10 11 12 13 14 15
+
+enter_tempdir() {
+  if [ -d $TEMPRUNDIR ]; then
+    return
+
+  else
+    if [ -z "${TMPDIR:-}" ]; then
+      TMPDIR=/tmp
+    fi
+    for i in $LOGNAME volatile; do
+      if [ -d "${TMPDIR}/$i" ]; then
+        TMPDIR="${TMPDIR}/$i"
+        break
+      fi
+    done
+    cd $(mktemp -dp "$TMPDIR" mutt.XXXXXXXXXX)
+    mkdir $TEMPRUNDIR
+  fi
+}
+
+notify() {
+  if [ -x "$(command -v awesome-client)" ]; then
+    local stdout stderr escaped output
+    stdout="${2:-}"
+    stderr="${3:-}"
+    for i in stdout stderr; do
+      if eval test -s $TEMPRUNDIR/output.$i; then
+        escaped=$(eval sed -e 's,\",\\\",g' $TEMPRUNDIR/output.$i)
+        output="${output:+$output
+}${i}:
+$escaped"
+      fi
+    done
+    [ -n "${escaped:-}" ] || return
+    awesome-client <<-_eof
+       local naughty = require("naughty")
+       naughty.notify({ preset = naughty.config.presets.low,
+               title  = "${1:-Output from mutt/$SELF}",
+               text   = [[$output]]
+               })
+       _eof
+  fi
+}
+
+notify_output() {
+  [ -d $TEMPRUNDIR ] || return
+  local stdout stderr anything
+
+  for i in stdout stderr; do
+    if [ -s "$TEMPRUNDIR/output.$i" ]; then
+      eval $i="'$TEMPRUNDIR/output.$i'"
+    else
+      eval $i=/dev/null
+    fi
+  done
+
+  notify "Output from mutt/$SELF" $stdout $stderr
+}
+
+guess_extension() {
+  python3 -c "import mimetypes; print(mimetypes.guess_extension('$1'))"
+}
+
+get_file() {
+  local t
+  if [ -z "$1" ]; then
+    t=$(mktemp -p "$PWD" tmp.XXXXXXXXXX$(guess_extension "$MIMETYPE"))
+    cat > "$t"
+    echo "$t"
+  else
+    t="$(echo -n ${1##*/} | sed -re 's![^[:alnum:],.@%^+=_-]!_!gi')"
+    ln "$1" "$t" 2>/dev/null || cp "$1" "$t"
+    echo "$PWD/$t"
+  fi
+}
+
+MIMETYPE= FILENAME= VIEWER= DELAY=1
+state=
+for arg in "$@"; do
+  case "$state/$arg" in
+
+    (/-t) state=t;;
+    (t/*) MIMETYPE="$arg"; state=;;
+
+    (/-f) state=f;;
+    (f/*) FILENAME="$arg"; state=;;
+
+    (/-d) state=d;;
+    (d/*) DELAY="$arg"; state=;;
+
+    (/-v) state=v;;
+    (v/*) VIEWER="$arg"; state=;;
+
+    (*)
+      echo >&2 "E: Invalid argument: $i"
+      exit 1
+      ;;
+
+  esac
+done
+
+launch_viewer() {
+  local filename; filename="$1"
+  if [ -z "$VIEWER" ]; then
+    [ -n "${2:-}" ] && filename="${2}:${1}"
+    run-mailcap "$filename" > $TEMPRUNDIR/output.stdout 2> $TEMPRUNDIR/output.stderr
+  else
+    $VIEWER "$filename" > $TEMPRUNDIR/output.stdout 2> $TEMPRUNDIR/output.stderr
+  fi
+}
+
+case "$SELF" in
+  (bgview)
+    # make a copy of the file, then launch a shell process in the background
+    # to divert to run-mailcap, after which the temporary directory gets
+    # cleaned up.
+    enter_tempdir
+    FILE="$(get_file "$FILENAME")"
+    (
+      ts=$(($(date +%s) + $DELAY))
+      launch_viewer "$FILE" "$MIMETYPE"
+      while [ $(date +%s) -lt $ts ]; do sleep 1; done
+      cleanup
+    ) &
+    trap - 1 2 3 4 5 6 7 8 10 11 12 13 14 15
+    ;;
+  (bgview-fifo)
+    # hack to stay around until the viewer has read the file: make a fifo and
+    # wait for the cat process to finish writing to it, which means that it
+    # must have been consumed on the other end.
+    enter_tempdir
+    FILE="$(get_file "$FILENAME")"
+    FIFO="fifo-${FILE##*/}"
+    mkfifo "$FIFO"
+    cat "$FILE" > "$FIFO" &
+    # For some reason, we do have to write a tempfile and cannot seem to
+    # redirect stdin directly to the fifo, i.e. this does not work instead of
+    # the previous three lines:
+    ## cat > "$FIFO" &
+    launch_viewer "$FIFO" "$MIMETYPE"
+    wait
+    cleanup
+    ;;
+  (bgview-delay)
+    # hack to stay around until the file hasn't been accessed for a few
+    # seconds, so that we can clean up. This is for cases when the FIFO method
+    # doesn't work, because e.g. Firefox randomly chooses it needs to read
+    # HTML files twice.
+    enter_tempdir
+    FILE="$(get_file "$FILENAME")"
+    touch "$FILE"
+    (launch_viewer "$FILE" "$MIMETYPE") &
+    (
+      while [ $(($(stat -c%X "$FILE") + $DELAY)) -gt $(date +%s) ]; do
+        sleep 1
+      done
+      cleanup
+    ) &
+    trap - 1 2 3 4 5 6 7 8 10 11 12 13 14 15
+    ;;
+esac
diff --git a/.config/neomutt/colours b/.config/neomutt/colours
new file mode 100644 (file)
index 0000000..a741805
--- /dev/null
@@ -0,0 +1,72 @@
+# color terminals:
+# (default, white, black, green, magenta, blue, cyan, yellow, red)
+# (bright...)
+# (color1,color2,...,colorN-1)
+#
+#     object   foreground      background
+#
+color normal   default         default # normal text
+color indicator        white           black   # actual message
+color tree     default         default # thread arrows
+color status   brightwhite     black   # status line
+color error    brightred       default # errors
+color message  default         default # info messages
+color signature        blue            default # signature
+color attachment       brightblack     default # MIME attachments
+color search   brightblack     yellow  # search matches
+color tilde    brightmagenta   default # ~ at bottom of msg
+color markers  white           default # + at beginning of wrapped lines
+color hdrdefault       blue            default # default header lines
+color bold     brightred       default # hiliting bold patterns in body
+color underline        brightmagenta   default # hiliting underlined patterns in body
+color quoted   red             default # quoted text
+color quoted1  magenta         default
+color quoted2  green           default
+color quoted3  red             default
+color quoted4  magenta         default
+color quoted5  green           default
+color quoted6  red             default
+color quoted7  magenta         default
+color quoted8  green           default
+color quoted9  red             default
+#
+#     object     foreground backg.   RegExp
+#
+color header   brightblue      default "^(from|subject):"
+#color body    cyan            default "((ftp|http|https)://|news:)[^ >)\"\t]+"
+color body     magenta         default "((ftp|http|https)://|(file|news):|www\\.)[-a-z0-9_.:]*[a-z0-9](/[^][{} \t\n\r\"<>()]*[^][{} \t\n\r\"<>().,:!])?/?"
+color body     magenta         default "[-_+=.[:alnum:]]+@[-_.[:alnum:]]+"
+#color body    red             default "(^| )\\*[-a-z0-9????*]+\\*[,.?]?[ \n]"
+#color body    green           default "(^| )_[-a-z0-9????_]+_[,.?]?[ \n]"
+color body     red             default "(^| )\\*[-a-z0-9*]+\\*[,.?]?[ \n]"
+color body     green           default "(^| )_[-a-z0-9_]+_[,.?]?[ \n]"
+
+uncolor index  *               # unset all color index entries
+
+color index    brightblack     default "~T"
+color index    red             default "~N|~O"
+color index    brightred       default "~T (~N|~O)"
+color index    white           blue    "~F"
+color index    brightwhite     blue    "~T ~F"
+color index    white           red     "(~N|~O) ~F"
+color index    brightwhite     red     "~T (~N|~O) ~F"
+color index    cyan            default "~D"
+color index    brightcyan      default "~T ~D"
+
+folder-hook .   "uncolor index brightblack default '!~D !~P'"
+folder-hook store "color index brightblack default '!~D !~P'"
+
+folder-hook .   "uncolor index brightwhite magenta '~h X-Postponed:'"
+folder-hook store "color index brightwhite magenta '~h X-Postponed:'"
+folder-hook .     "color index brightwhite magenta '(~N|~O) !~D ~h X-Tickle:'"
+
+folder-hook .         "color index default red '!~P ~H .'"
+folder-hook spam    "uncolor index default red '!~P ~H .'"
+folder-hook retrain "uncolor index default red '!~P ~H .'"
+
+color sidebar_new      red     default
+color sidebar_divider  default black
+color sidebar_indicator white  black
+color sidebar_highlight white  blue
+
+# vim:sw=9:noet:sts=9:ts=9:ft=muttrc
diff --git a/.config/neomutt/confvars b/.config/neomutt/confvars
new file mode 100644 (file)
index 0000000..82253d7
--- /dev/null
@@ -0,0 +1,6846 @@
+# Auto-generated using mkconf from manual.txt
+# on 2023-08-11 16:33:16
+#
+# Invoked as: ./mkconf
+#
+
+# 3.1. abort_backspace
+# 
+# Type: boolean
+# Default: yes
+# 
+# If set, hitting backspace against an empty prompt aborts the prompt.
+# 
+
+
+# 3.2. abort_key
+# 
+# Type: string
+# Default: “007”
+# 
+# Specifies the key that can be used to abort prompts. The format is the same as
+# used in "bind" commands. The default is equivalent to "Ctrl-G". Note that the
+# specified key should not be used in other bindings, as the abort operation has
+# higher precedence and the binding will not have the desired effect.
+# 
+# Example: 
+# 
+# set abort_key = "<Esc>"
+# 
+# Please note that when using <Esc> as the abort key, you may also want to set
+# the environment variable ESCDELAY to a low value or even 0 which will reduce
+# the time that ncurses waits to distinguish singular <Esc> key presses from the
+# start of a terminal escape sequence. The default time is 1000 milliseconds and
+# thus quite noticeable.
+# 
+
+
+# 3.3. abort_noattach
+# 
+# Type: quadoption
+# Default: no
+# 
+# If set to yes, when composing messages containing the regular expression
+# specified by $abort_noattach_regex and no attachments are given, composition
+# will be aborted. If set to no, composing messages as such will never be
+# aborted. 
+# 
+# Example: 
+# 
+# set abort_noattach_regex = "\<attach(|ed|ments?)\>"
+# 
+set abort_noattach=ask-yes
+
+
+# 3.4. abort_noattach_regex
+# 
+# Type: regular expression
+# Default: “<(attach|attached|attachments?)>”
+# 
+# Specifies a regular expression to match against the body of the message, to
+# determine if an attachment was mentioned but mistakenly forgotten. If it
+# matches, $abort_noattach will be consulted to determine if message sending will
+# be aborted.
+# 
+# Like other regular expressions in NeoMutt, the search is case sensitive if the
+# pattern contains at least one upper case letter, and case insensitive
+# otherwise. 
+# 
+
+
+# 3.5. abort_nosubject
+# 
+# Type: quadoption
+# Default: ask-yes
+# 
+# If set to yes, when composing messages and no subject is given at the subject
+# prompt, composition will be aborted. If set to no, composing messages with no
+# subject given at the subject prompt will never be aborted.
+# 
+
+
+# 3.6. abort_unmodified
+# 
+# Type: quadoption
+# Default: yes
+# 
+# If set to yes, composition will automatically abort after editing the message
+# body if no changes are made to the file (this check only happens after the
+# first edit of the file). When set to no, composition will never be aborted.
+# 
+
+
+# 3.7. alias_file
+# 
+# Type: path
+# Default: “~/.neomuttrc”
+# 
+# The default file in which to save aliases created by the <create-alias>
+# function. Entries added to this file are encoded in the character set specified
+# by $config_charset if it is set or the current character set otherwise.
+# 
+# Note: NeoMutt will not automatically source this file; you must explicitly use
+# the "source" command for it to be executed in case this option points to a
+# dedicated alias file.
+# 
+# The default for this option is the currently used neomuttrc file, or "~
+# /.neomuttrc" if no user neomuttrc was found.
+# 
+set alias_file="$my_confdir/aliases"
+
+
+# 3.8. alias_format
+# 
+# Type: string
+# Default: “%3n %f%t %-15a %-56r | %c”
+# 
+# Specifies the format of the data displayed for the "alias" menu. The following
+# printf(3)-style sequences are available:
+# 
+# ┌───┬───────────────────────────────────────────────────────────────┐ 
+# │%a │Alias name                                                     │
+# ├───┼───────────────────────────────────────────────────────────────┤ 
+# │%c │Comment                                                        │
+# ├───┼───────────────────────────────────────────────────────────────┤ 
+# │%f │Flags - currently, a "d" for an alias marked for deletion      │
+# ├───┼───────────────────────────────────────────────────────────────┤ 
+# │%n │Index number                                                   │
+# ├───┼───────────────────────────────────────────────────────────────┤ 
+# │%r │Address which alias expands to                                 │
+# ├───┼───────────────────────────────────────────────────────────────┤ 
+# │%t │Character which indicates if the alias is tagged for inclusion │
+# ├───┼───────────────────────────────────────────────────────────────┤ 
+# │%>X│right justify the rest of the string and pad with character "X"│
+# ├───┼───────────────────────────────────────────────────────────────┤ 
+# │%|X│pad to the end of the line with character "X"                  │
+# ├───┼───────────────────────────────────────────────────────────────┤ 
+# │%*X│soft-fill with character "X" as pad                            │
+# └───┴───────────────────────────────────────────────────────────────┘ 
+# 
+
+
+# 3.9. allow_8bit
+# 
+# Type: boolean
+# Default: yes
+# 
+# Controls whether 8-bit data is converted to 7-bit using either Quoted-
+# Printable or Base64 encoding when sending mail.
+# 
+
+
+# 3.10. allow_ansi
+# 
+# Type: boolean
+# Default: no
+# 
+# Controls whether ANSI color codes in messages (and color tags in rich text
+# messages) are to be interpreted. Messages containing these codes are rare, but
+# if this option is set, their text will be colored accordingly. Note that this
+# may override your color choices, and even present a security problem, since a
+# message could include a line like
+# 
+# [-- PGP output follows ...
+# 
+# and give it the same color as your attachment color (see also $crypt_timestamp
+# ). 
+# 
+
+
+# 3.11. arrow_cursor
+# 
+# Type: boolean
+# Default: no
+# 
+# When set, an arrow ("->") will be used to indicate the current entry in menus
+# instead of highlighting the whole line. On slow network or modem links this
+# will make response faster because there is less that has to be redrawn on the
+# screen when moving to the next or previous entries in the menu.
+# 
+
+
+# 3.12. arrow_string
+# 
+# Type: string
+# Default: “->”
+# 
+# Specifies the string of arrow_cursor when arrow_cursor enabled.
+# 
+
+
+# 3.13. ascii_chars
+# 
+# Type: boolean
+# Default: no
+# 
+# If set, NeoMutt will use plain ASCII characters when displaying thread and
+# attachment trees, instead of the default ACS characters.
+# 
+
+
+# 3.14. ask_bcc
+# 
+# Type: boolean
+# Default: no
+# 
+# If set, NeoMutt will prompt you for blind-carbon-copy (Bcc) recipients before
+# editing an outgoing message.
+# 
+
+
+# 3.15. ask_cc
+# 
+# Type: boolean
+# Default: no
+# 
+# If set, NeoMutt will prompt you for carbon-copy (Cc) recipients before editing
+# the body of an outgoing message.
+# 
+
+
+# 3.16. ask_follow_up
+# 
+# Type: boolean
+# Default: no
+# 
+# If set, NeoMutt will prompt you for follow-up groups before editing the body of
+# an outgoing message.
+# 
+
+
+# 3.17. ask_x_comment_to
+# 
+# Type: boolean
+# Default: no
+# 
+# If set, NeoMutt will prompt you for x-comment-to field before editing the body
+# of an outgoing message.
+# 
+
+
+# 3.18. assumed_charset
+# 
+# Type: string
+# Default: (empty)
+# 
+# This variable is a colon-separated list of character encoding schemes for
+# messages without character encoding indication. Header field values and message
+# body content without character encoding indication would be assumed that they
+# are written in one of this list. By default, all the header fields and message
+# body without any charset indication are assumed to be in "us-ascii".
+# 
+# For example, Japanese users might prefer this:
+# 
+# set assumed_charset="iso-2022-jp:euc-jp:shift_jis:utf-8"
+# 
+# However, only the first content is valid for the message body.
+# 
+
+
+# 3.19. attach_charset
+# 
+# Type: string
+# Default: (empty)
+# 
+# This variable is a colon-separated list of character encoding schemes for text
+# file attachments. NeoMutt uses this setting to guess which encoding files being
+# attached are encoded in to convert them to a proper character set given in
+# $send_charset. 
+# 
+# If unset, the value of $charset will be used instead. For example, the
+# following configuration would work for Japanese text handling:
+# 
+# set attach_charset="iso-2022-jp:euc-jp:shift_jis:utf-8"
+# 
+# Note: for Japanese users, "iso-2022-*" must be put at the head of the value as
+# shown above if included.
+# 
+
+
+# 3.20. attach_format
+# 
+# Type: string
+# Default: “%u%D%I %t%4n %T%.40d%> [%.7m/%.10M, %.6e%?C?, %C?, %s] ”
+# 
+# This variable describes the format of the "attachment" menu. The following
+# printf(3)-style sequences are understood:
+# 
+# ┌───┬─────────────────────────────────────────────────────────────────────────┐ 
+# │%C │Charset                                                                  │
+# ├───┼─────────────────────────────────────────────────────────────────────────┤ 
+# │%c │Requires charset conversion ("n" or "c")                                 │
+# ├───┼─────────────────────────────────────────────────────────────────────────┤ 
+# │%D │Deleted flag                                                             │
+# ├───┼─────────────────────────────────────────────────────────────────────────┤ 
+# │%d │Description (if none, falls back to %F)                                  │
+# ├───┼─────────────────────────────────────────────────────────────────────────┤ 
+# │%e │MIME content-transfer-encoding                                           │
+# ├───┼─────────────────────────────────────────────────────────────────────────┤ 
+# │%f │Filename                                                                 │
+# ├───┼─────────────────────────────────────────────────────────────────────────┤ 
+# │%F │Filename in content-disposition header (if none, falls back to %f)       │
+# ├───┼─────────────────────────────────────────────────────────────────────────┤ 
+# │%I │Disposition ("I" for inline, "A" for attachment)                         │
+# ├───┼─────────────────────────────────────────────────────────────────────────┤ 
+# │%m │Major MIME type                                                          │
+# ├───┼─────────────────────────────────────────────────────────────────────────┤ 
+# │%M │MIME subtype                                                             │
+# ├───┼─────────────────────────────────────────────────────────────────────────┤ 
+# │%n │Attachment number                                                        │
+# ├───┼─────────────────────────────────────────────────────────────────────────┤ 
+# │%Q │"Q", if MIME part qualifies for attachment counting                      │
+# ├───┼─────────────────────────────────────────────────────────────────────────┤ 
+# │%s │Size (see formatstrings-size)                                            │
+# ├───┼─────────────────────────────────────────────────────────────────────────┤ 
+# │%T │Graphic tree characters                                                  │
+# ├───┼─────────────────────────────────────────────────────────────────────────┤ 
+# │%t │Tagged flag                                                              │
+# ├───┼─────────────────────────────────────────────────────────────────────────┤ 
+# │%u │Unlink (=to delete) flag                                                 │
+# ├───┼─────────────────────────────────────────────────────────────────────────┤ 
+# │%X │Number of qualifying MIME parts in this part and its children (please see│
+# │ │the "attachments" section for possible speed effects)                    │
+# ├───┼─────────────────────────────────────────────────────────────────────────┤ 
+# │%>X│Right justify the rest of the string and pad with character "X"          │
+# ├───┼─────────────────────────────────────────────────────────────────────────┤ 
+# │%|X│Pad to the end of the line with character "X"                            │
+# ├───┼─────────────────────────────────────────────────────────────────────────┤ 
+# │%*X│Soft-fill with character "X" as pad                                      │
+# └───┴─────────────────────────────────────────────────────────────────────────┘ 
+# 
+# For an explanation of "soft-fill", see the $index_format documentation.
+# 
+
+
+# 3.21. attach_save_dir
+# 
+# Type: path
+# Default: “./”
+# 
+# The directory where attachments are saved.
+# 
+set attach_save_dir=$tmpdir
+
+
+# 3.22. attach_save_without_prompting
+# 
+# Type: boolean
+# Default: no
+# 
+# This variable, when set to true, will cause attachments to be saved to the
+# 'attach_save_dir' location without prompting the user for the filename.
+# 
+
+
+# 3.23. attach_sep
+# 
+# Type: string
+# Default: “n”
+# 
+# The separator to add between attachments when operating (saving, printing,
+# piping, etc) on a list of tagged attachments.
+# 
+
+
+# 3.24. attach_split
+# 
+# Type: boolean
+# Default: yes
+# 
+# If this variable is unset, when operating (saving, printing, piping, etc) on a
+# list of tagged attachments, NeoMutt will concatenate the attachments and will
+# operate on them as a single attachment. The $attach_sep separator is added
+# after each attachment. When set, NeoMutt will operate on the attachments one by
+# one. 
+# 
+
+
+# 3.25. attribution
+# 
+# Type: string
+# Default: “On %d, %n wrote:”
+# 
+# This is the string that will precede a message which has been included in a
+# reply. For a full listing of defined printf(3)-like sequences see the section
+# on $index_format.
+# 
+set attribution="$my_attribution_en"
+
+
+# 3.26. attribution_locale
+# 
+# Type: string
+# Default: (empty)
+# 
+# The locale used by strftime(3) to format dates in the attribution string. Legal
+# values are the strings your system accepts for the locale environment variable
+# $LC_TIME. 
+# 
+# This variable is to allow the attribution date format to be customized by
+# recipient or folder using hooks. By default, NeoMutt will use your locale
+# environment, so there is no need to set this except to override that default.
+# 
+
+
+# 3.27. auto_edit
+# 
+# Type: boolean
+# Default: no
+# 
+# When set along with $edit_headers, NeoMutt will skip the initial send-menu
+# (prompting for subject and recipients) and allow you to immediately begin
+# editing the body of your message. The send-menu may still be accessed once you
+# have finished editing the body of your message.
+# 
+# Note: when this option is set, you can't use send-hooks that depend on the
+# recipients when composing a new (non-reply) message, as the initial list of
+# recipients is empty.
+# 
+# Also see $fast_reply.
+# 
+set auto_edit=yes
+
+
+# 3.28. auto_subscribe
+# 
+# Type: boolean
+# Default: no
+# 
+# When set, NeoMutt assumes the presence of a List-Post header means the
+# recipient is subscribed to the list. Unless the mailing list is in the
+# "unsubscribe" or "unlist" lists, it will be added to the "subscribe" list.
+# Parsing and checking these things slows header reading down, so this option is
+# disabled by default.
+# 
+
+
+# 3.29. auto_tag
+# 
+# Type: boolean
+# Default: no
+# 
+# When set, functions in the index menu which affect a message will be applied to
+# all tagged messages (if there are any). When unset, you must first use the
+# <tag-prefix> function (bound to ";" by default) to make the next function apply
+# to all tagged messages.
+# 
+
+
+# 3.30. autocrypt
+# 
+# Type: boolean
+# Default: no
+# 
+# When set, enables autocrypt, which provides passive encryption protection with
+# keys exchanged via headers. See "autocryptdoc" for more details. (Autocrypt
+# only) 
+# 
+
+
+# 3.31. autocrypt_acct_format
+# 
+# Type: string
+# Default: “%4n %-30a %20p %10s”
+# 
+# This variable describes the format of the "autocrypt account" menu. The
+# following printf(3)-style sequences are understood
+# 
+# ┌──┬─────────────────────────────┐ 
+# │%a│email address                │
+# ├──┼─────────────────────────────┤ 
+# │%k│gpg keyid                    │
+# ├──┼─────────────────────────────┤ 
+# │%n│current entry number         │
+# ├──┼─────────────────────────────┤ 
+# │%p│prefer-encrypt flag          │
+# ├──┼─────────────────────────────┤ 
+# │%s│status flag (active/inactive)│
+# └──┴─────────────────────────────┘ 
+# 
+# (Autocrypt only)
+# 
+
+
+# 3.32. autocrypt_dir
+# 
+# Type: path
+# Default: “~/.mutt/autocrypt”
+# 
+# This variable sets where autocrypt files are stored, including the GPG keyring
+# and SQLite database. See "autocryptdoc" for more details. (Autocrypt only)
+# 
+
+
+# 3.33. autocrypt_reply
+# 
+# Type: boolean
+# Default: yes
+# 
+# When set, replying to an autocrypt email automatically enables autocrypt in the
+# reply. You may want to unset this if you're using the same key for autocrypt as
+# normal web-of-trust, so that autocrypt isn't forced on for all encrypted
+# replies. (Autocrypt only)
+# 
+
+
+# 3.34. beep
+# 
+# Type: boolean
+# Default: yes
+# 
+# When this variable is set, NeoMutt will beep when an error occurs.
+# 
+set beep=no
+
+
+# 3.35. beep_new
+# 
+# Type: boolean
+# Default: no
+# 
+# When this variable is set, NeoMutt will beep whenever it prints a message
+# notifying you of new mail. This is independent of the setting of the $beep
+# variable. 
+# 
+
+
+# 3.36. bounce
+# 
+# Type: quadoption
+# Default: ask-yes
+# 
+# Controls whether you will be asked to confirm bouncing messages. If set to yes
+# you don't get asked if you want to bounce a message. Setting this variable to
+# no is not generally useful, and thus not recommended, because you are unable to
+# bounce messages.
+# 
+
+
+# 3.37. bounce_delivered
+# 
+# Type: boolean
+# Default: yes
+# 
+# When this variable is set, NeoMutt will include Delivered-To headers when
+# bouncing messages. Postfix users may wish to unset this variable.
+# 
+# Note: On Debian systems, this option is unset by default in /etc/Muttrc.
+# 
+set bounce_delivered=no
+
+
+# 3.38. braille_friendly
+# 
+# Type: boolean
+# Default: no
+# 
+# When this variable is set, NeoMutt will place the cursor at the beginning of
+# the current line in menus, even when the $arrow_cursor variable is unset,
+# making it easier for blind persons using Braille displays to follow these
+# menus. The option is unset by default because many visual terminals don't
+# permit making the cursor invisible.
+# 
+
+
+# 3.39. browser_abbreviate_mailboxes
+# 
+# Type: boolean
+# Default: yes
+# 
+# When this variable is set, NeoMutt will abbreviate mailbox names in the browser
+# mailbox list, using '~' and '=' shortcuts.
+# 
+# The default "alpha" setting of $sort_browser uses locale-based sorting (using
+# strcoll(3)), which ignores some punctuation. This can lead to some situations
+# where the order doesn't make intuitive sense. In those cases, it may be
+# desirable to unset this variable.
+# 
+
+
+# 3.40. catchup_newsgroup
+# 
+# Type: quadoption
+# Default: ask-yes
+# 
+# If this variable is set, NeoMutt will mark all articles in newsgroup as read
+# when you quit the newsgroup (catchup newsgroup).
+# 
+
+
+# 3.41. certificate_file
+# 
+# Type: path
+# Default: “~/.mutt_certificates”
+# 
+# This variable specifies the file where the certificates you trust are saved.
+# When an unknown certificate is encountered, you are asked if you accept it or
+# not. If you accept it, the certificate can also be saved in this file and
+# further connections are automatically accepted.
+# 
+# You can also manually add CA certificates in this file. Any server certificate
+# that is signed with one of these CA certificates is also automatically
+# accepted. 
+# 
+# Example: 
+# 
+# set certificate_file=~/.neomutt/certificates
+# 
+
+
+# 3.42. change_folder_next
+# 
+# Type: boolean
+# Default: no
+# 
+# When this variable is set, the <change-folder> function mailbox suggestion will
+# start at the next folder in your "mailboxes" list, instead of starting at the
+# first folder in the list.
+# 
+
+
+# 3.43. charset
+# 
+# Type: string
+# Default: (empty)
+# 
+# Character set your terminal uses to display and enter textual data. It is also
+# the fallback for $send_charset.
+# 
+# Upon startup NeoMutt tries to derive this value from environment variables such
+# as $LC_CTYPE or $LANG.
+# 
+# Note: It should only be set in case NeoMutt isn't able to determine the
+# character set used correctly.
+# 
+
+
+# 3.44. check_mbox_size
+# 
+# Type: boolean
+# Default: no
+# 
+# When this variable is set, NeoMutt will use file size attribute instead of
+# access time when checking for new mail in mbox and mmdf folders.
+# 
+# This variable is unset by default and should only be enabled when new mail
+# detection for these folder types is unreliable or doesn't work.
+# 
+# Note that enabling this variable should happen before any "mailboxes"
+# directives occur in configuration files regarding mbox or mmdf folders because
+# NeoMutt needs to determine the initial new mail status of such a mailbox by
+# performing a fast mailbox scan when it is defined. Afterwards the new mail
+# status is tracked by file size changes.
+# 
+
+
+# 3.45. check_new
+# 
+# Type: boolean
+# Default: yes
+# 
+# Note: this option only affects maildir and MH style mailboxes.
+# 
+# When set, NeoMutt will check for new mail delivered while the mailbox is open.
+# Especially with MH mailboxes, this operation can take quite some time since it
+# involves scanning the directory and checking each file to see if it has already
+# been looked at. If this variable is unset, no check for new mail is performed
+# while the mailbox is open.
+# 
+
+
+# 3.46. collapse_all
+# 
+# Type: boolean
+# Default: no
+# 
+# When set, NeoMutt will collapse all threads when entering a folder.
+# 
+
+
+# 3.47. collapse_flagged
+# 
+# Type: boolean
+# Default: yes
+# 
+# When unset, NeoMutt will not collapse a thread if it contains any flagged
+# messages. 
+# 
+
+
+# 3.48. collapse_unread
+# 
+# Type: boolean
+# Default: yes
+# 
+# When unset, NeoMutt will not collapse a thread if it contains any unread
+# messages. 
+# 
+
+
+# 3.49. compose_format
+# 
+# Type: string
+# Default: “-- NeoMutt: Compose  [Approx. msg size: %l   Atts: %a]%>-”
+# 
+# Controls the format of the status line displayed in the "compose" menu. This
+# string is similar to $status_format, but has its own set of printf(3)-like
+# sequences: 
+# 
+# ┌───┬─────────────────────────────────────────────────────────────────────────┐ 
+# │%a │Total number of attachments                                              │
+# ├───┼─────────────────────────────────────────────────────────────────────────┤ 
+# │%h │Local hostname                                                           │
+# ├───┼─────────────────────────────────────────────────────────────────────────┤ 
+# │%l │Approximate size (in bytes) of the current message (see                  │
+# │ │formatstrings-size)                                                      │
+# ├───┼─────────────────────────────────────────────────────────────────────────┤ 
+# │%v │NeoMutt version string                                                   │
+# ├───┼─────────────────────────────────────────────────────────────────────────┤ 
+# │%>X│right justify the rest of the string and pad with character "X"          │
+# ├───┼─────────────────────────────────────────────────────────────────────────┤ 
+# │%|X│pad to the end of the line with character "X"                            │
+# ├───┼─────────────────────────────────────────────────────────────────────────┤ 
+# │%*X│soft-fill with character "X" as pad                                      │
+# └───┴─────────────────────────────────────────────────────────────────────────┘ 
+# 
+# See the text describing the $status_format option for more information on how
+# to set $compose_format.
+# 
+
+
+# 3.50. compose_show_user_headers
+# 
+# Type: boolean
+# Default: yes
+# 
+# When set, Neomutt will display user-defined headers (set via my_hdr or from
+# editing with edit-headers).
+# 
+set compose_show_user_headers=no
+
+# 3.51. config_charset
+# 
+# Type: string
+# Default: (empty)
+# 
+# When defined, NeoMutt will recode commands in rc files from this encoding to
+# the current character set as specified by $charset and aliases written to
+# $alias_file from the current character set.
+# 
+# Please note that if setting $charset it must be done before setting
+# $config_charset. 
+# 
+# Recoding should be avoided as it may render unconvertable characters as
+# question marks which can lead to undesired side effects (for example in regular
+# expressions). 
+# 
+
+
+# 3.52. confirm_append
+# 
+# Type: boolean
+# Default: yes
+# 
+# When set, NeoMutt will prompt for confirmation when appending messages to an
+# existing mailbox.
+# 
+set confirm_append=no
+
+
+# 3.53. confirm_create
+# 
+# Type: boolean
+# Default: yes
+# 
+# When set, NeoMutt will prompt for confirmation when saving messages to a
+# mailbox which does not yet exist before creating it.
+# 
+
+
+# 3.54. connect_timeout
+# 
+# Type: number
+# Default: 30
+# 
+# Causes NeoMutt to timeout a network connection (for IMAP, POP or SMTP) after
+# this many seconds if the connection is not able to be established. A negative
+# value causes NeoMutt to wait indefinitely for the connection attempt to
+# succeed. 
+# 
+
+
+# 3.55. content_type
+# 
+# Type: string
+# Default: “text/plain”
+# 
+# Sets the default Content-Type for the body of newly composed messages.
+# 
+set content_type="text/plain; markup=markdown"
+
+
+# 3.56. copy
+# 
+# Type: quadoption
+# Default: yes
+# 
+# This variable controls whether or not copies of your outgoing messages will be
+# saved for later references. Also see $record, $save_name, $force_name and "
+# fcc-hook". 
+# 
+set copy=yes
+
+
+# 3.57. copy_decode_weed
+# 
+# Type: boolean
+# Default: no
+# 
+# Controls whether NeoMutt will weed headers when invoking the <decode-copy> or
+# <decode-save> functions.
+# 
+
+
+# 3.58. count_alternatives
+# 
+# Type: boolean
+# Default: no
+# 
+# When set, NeoMutt will recurse inside multipart/alternatives while performing
+# attachment searching and counting(see attachments).
+# 
+# Traditionally, multipart/alternative parts have simply represented different
+# encodings of the main content of the email. Unfortunately, some mail clients
+# have started to place email attachments inside one of alternatives. Setting
+# this will allow NeoMutt to find and count matching attachments hidden there,
+# and include them in the index via %X or through ~X pattern matching.
+# 
+
+
+# 3.59. crypt_auto_encrypt
+# 
+# Type: boolean
+# Default: no
+# 
+# Setting this variable will cause NeoMutt to always attempt to PGP encrypt
+# outgoing messages. This is probably only useful in connection to the "send-hook
+# " command. It can be overridden by use of the pgp menu, when encryption is not
+# required or signing is requested as well. If $smime_is_default is set, then
+# OpenSSL is used instead to create S/MIME messages and settings can be
+# overridden by use of the smime menu instead. (Crypto only)
+# 
+
+
+# 3.60. crypt_auto_pgp
+# 
+# Type: boolean
+# Default: yes
+# 
+# This variable controls whether or not NeoMutt may automatically enable PGP
+# encryption/signing for messages. See also $crypt_auto_encrypt,
+# $crypt_reply_encrypt, $crypt_auto_sign, $crypt_reply_sign and $smime_is_default
+# . 
+# 
+
+
+# 3.61. crypt_auto_sign
+# 
+# Type: boolean
+# Default: no
+# 
+# Setting this variable will cause NeoMutt to always attempt to cryptographically
+# sign outgoing messages. This can be overridden by use of the pgp menu, when
+# signing is not required or encryption is requested as well. If
+# $smime_is_default is set, then OpenSSL is used instead to create S/MIME
+# messages and settings can be overridden by use of the smime menu instead of the
+# pgp menu. (Crypto only)
+# 
+
+
+# 3.62. crypt_auto_smime
+# 
+# Type: boolean
+# Default: yes
+# 
+# This variable controls whether or not NeoMutt may automatically enable S/MIME
+# encryption/signing for messages. See also $crypt_auto_encrypt,
+# $crypt_reply_encrypt, $crypt_auto_sign, $crypt_reply_sign and $smime_is_default
+# . 
+# 
+
+
+# 3.63. crypt_chars
+# 
+# Type: character string
+# Default: “SPsK ”
+# 
+# Controls the characters used in cryptography flags.
+# 
+# ┌─────────┬───────┬───────────────────────────────────────────────────────────┐ 
+# │Character│Default│Description │
+# ├─────────┼───────┼───────────────────────────────────────────────────────────┤ 
+# │1 │S      │The mail is signed, and the signature is successfully      │
+# │ │       │verified.                                                  │
+# ├─────────┼───────┼───────────────────────────────────────────────────────────┤ 
+# │2 │P      │The mail is PGP encrypted.                                 │
+# ├─────────┼───────┼───────────────────────────────────────────────────────────┤ 
+# │3 │s      │The mail is signed.                                        │
+# ├─────────┼───────┼───────────────────────────────────────────────────────────┤ 
+# │4 │K      │The mail contains a PGP public key.                        │
+# ├─────────┼───────┼───────────────────────────────────────────────────────────┤ 
+# │5 │<space>│The mail has no crypto info.                               │
+# └─────────┴───────┴───────────────────────────────────────────────────────────┘ 
+# 
+
+
+# 3.64. crypt_confirm_hook
+# 
+# Type: boolean
+# Default: yes
+# 
+# If set, then you will be prompted for confirmation of keys when using the
+# crypt-hook command. If unset, no such confirmation prompt will be presented.
+# This is generally considered unsafe, especially where typos are concerned.
+# 
+
+
+# 3.65. crypt_opportunistic_encrypt
+# 
+# Type: boolean
+# Default: no
+# 
+# Setting this variable will cause NeoMutt to automatically enable and disable
+# encryption, based on whether all message recipient keys can be located by
+# NeoMutt. 
+# 
+# When this option is enabled, NeoMutt will enable/disable encryption each time
+# the TO, CC, and BCC lists are edited. If $edit_headers is set, NeoMutt will
+# also do so each time the message is edited.
+# 
+# While this is set, encryption can't be manually enabled/disabled. The pgp or
+# smime menus provide a selection to temporarily disable this option for the
+# current message.
+# 
+# If $crypt_auto_encrypt or $crypt_reply_encrypt enable encryption for a message,
+# this option will be disabled for that message. It can be manually re-enabled in
+# the pgp or smime menus. (Crypto only)
+# 
+set crypt_opportunistic_encrypt=no
+
+
+# 3.66. crypt_opportunistic_encrypt_strong_keys
+# 
+# Type: boolean
+# Default: no
+# 
+# When set, this modifies the behavior of $crypt_opportunistic_encrypt to only
+# search for "strong keys", that is, keys with full validity according to the
+# web-of-trust algorithm. A key with marginal or no validity will not enable
+# opportunistic encryption.
+# 
+# For S/MIME, the behavior depends on the backend. Classic S/MIME will filter for
+# certificates with the 't'(trusted) flag in the .index file. The GPGME backend
+# will use the same filters as with OpenPGP, and depends on GPGME's logic for
+# assigning the GPGME_VALIDITY_FULL and GPGME_VALIDITY_ULTIMATE validity flag.
+# 
+
+
+# 3.67. crypt_protected_headers_read
+# 
+# Type: boolean
+# Default: yes
+# 
+# When set, NeoMutt will display protected headers ("Memory Hole") in the pager,
+# When set, NeoMutt will display protected headers in the pager, and will update
+# the index and header cache with revised headers.
+# 
+# Protected headers are stored inside the encrypted or signed part of an an
+# email, to prevent disclosure or tampering. For more information see https://
+# github.com/autocrypt/protected-headers Currently NeoMutt only supports the
+# Subject header.
+# 
+# Encrypted messages using protected headers often substitute the exposed Subject
+# header with a dummy value (see $crypt_protected_headers_subject). NeoMutt will
+# update its concept of the correct subject after the message is opened, i.e. via
+# the <display-message> function. If you reply to a message before opening it,
+# NeoMutt will end up using the dummy Subject header, so be sure to open such a
+# message first. (Crypto only)
+# 
+
+
+# 3.68. crypt_protected_headers_save
+# 
+# Type: boolean
+# Default: no
+# 
+# When $crypt_protected_headers_read is set, and a message with a protected
+# Subject is opened, NeoMutt will save the updated Subject into the header cache
+# by default. This allows searching/limiting based on the protected Subject
+# header if the mailbox is re-opened, without having to re-open the message each
+# time. However, for mbox/mh mailbox types, or if header caching is not set up,
+# you would need to re-open the message each time the mailbox was reopened before
+# you could see or search/limit on the protected subject again.
+# 
+# When this variable is set, NeoMutt additionally saves the protected Subject
+# back in the clear-text message headers. This provides better usability, but
+# with the tradeoff of reduced security. The protected Subject header, which may
+# have previously been encrypted, is now stored in clear-text in the message
+# headers. Copying the message elsewhere, via NeoMutt or external tools, could
+# expose this previously encrypted data. Please make sure you understand the
+# consequences of this before you enable this variable. (Crypto only)
+# 
+
+
+# 3.69. crypt_protected_headers_subject
+# 
+# Type: string
+# Default: “...”
+# 
+# When $crypt_protected_headers_write is set, and the message is marked for
+# encryption, this will be substituted into the Subject field in the message
+# headers. 
+# 
+# To prevent a subject from being substituted, unset this variable, or set it to
+# the empty string. (Crypto only)
+# 
+
+
+# 3.70. crypt_protected_headers_write
+# 
+# Type: boolean
+# Default: no
+# 
+# When set, NeoMutt will generate protected headers for signed and encrypted
+# emails. 
+# 
+# Protected headers are stored inside the encrypted or signed part of an an
+# email, to prevent disclosure or tampering. For more information see https://
+# github.com/autocrypt/protected-headers 
+# 
+# Currently NeoMutt only supports the Subject header. (Crypto only)
+# 
+
+
+# 3.71. crypt_reply_encrypt
+# 
+# Type: boolean
+# Default: yes
+# 
+# If set, automatically PGP or OpenSSL encrypt replies to messages which are
+# encrypted. (Crypto only)
+# 
+
+
+# 3.72. crypt_reply_sign
+# 
+# Type: boolean
+# Default: no
+# 
+# If set, automatically PGP or OpenSSL sign replies to messages which are signed.
+# 
+# Note: this does not work on messages that are encrypted and signed! (Crypto
+# only) 
+# 
+
+
+# 3.73. crypt_reply_sign_encrypted
+# 
+# Type: boolean
+# Default: no
+# 
+# If set, automatically PGP or OpenSSL sign replies to messages which are
+# encrypted. This makes sense in combination with $crypt_reply_encrypt, because
+# it allows you to sign all messages which are automatically encrypted. This
+# works around the problem noted in $crypt_reply_sign, that NeoMutt is not able
+# to find out whether an encrypted message is also signed. (Crypto only)
+# 
+
+
+# 3.74. crypt_timestamp
+# 
+# Type: boolean
+# Default: yes
+# 
+# If set, NeoMutt will include a time stamp in the lines surrounding PGP or S/
+# MIME output, so spoofing such lines is more difficult. If you are using colors
+# to mark these lines, and rely on these, you may unset this setting. (Crypto
+# only) 
+# 
+
+
+# 3.75. crypt_use_gpgme
+# 
+# Type: boolean
+# Default: yes
+# 
+# This variable controls the use of the GPGME-enabled crypto backends. If it is
+# set and NeoMutt was built with GPGME support, the gpgme code for S/MIME and PGP
+# will be used instead of the classic code. Note that you need to set this option
+# in .neomuttrc; it won't have any effect when used interactively.
+# 
+# Note that the GPGME backend does not support creating old-style inline
+# (traditional) PGP encrypted or signed messages (see $pgp_auto_inline).
+# 
+
+
+# 3.76. crypt_use_pka
+# 
+# Type: boolean
+# Default: no
+# 
+# Controls whether NeoMutt uses PKA (see http://www.g10code.de/docs/
+# pka-intro.de.pdf) during signature verification (only supported by the GPGME
+# backend). 
+# 
+set crypt_use_pka=yes
+
+
+# 3.77. crypt_verify_sig
+# 
+# Type: quadoption
+# Default: yes
+# 
+# If "yes", always attempt to verify PGP or S/MIME signatures. If "ask-*", ask
+# whether or not to verify the signature. If "no", never attempt to verify
+# cryptographic signatures. (Crypto only)
+# 
+
+
+# 3.78. date_format
+# 
+# Type: string
+# Default: “!%a, %b %d, %Y at %I:%M:%S%p %Z”
+# 
+# This variable controls the format of the date printed by the "%d" sequence in
+# $index_format. This is passed to the strftime(3) function to process the date,
+# see the man page for the proper syntax.
+# 
+# Unless the first character in the string is a bang ("!"), the month and week
+# day names are expanded according to the locale. If the first character in the
+# string is a bang, the bang is discarded, and the month and week day names in
+# the rest of the string are expanded in the C locale (that is in US English).
+# 
+set date_format="%F"
+
+
+# 3.79. debug_file
+# 
+# Type: path
+# Default: “~/.neomuttdebug”
+# 
+# Debug logging is controlled by the variables $debug_file and $debug_level.
+# $debug_file specifies the root of the filename. NeoMutt will add "0" to the
+# end. Each time NeoMutt is run with logging enabled, the log files are rotated.
+# A maximum of five log files are kept, numbered 0 (most recent) to 4 (oldest).
+# 
+# This option can be enabled on the command line, "neomutt -l mylog"
+# 
+# See also: $debug_level
+# 
+
+
+# 3.80. debug_level
+# 
+# Type: number
+# Default: 0
+# 
+# Debug logging is controlled by the variables $debug_file and $debug_level.
+# 
+# The debug level controls how much information is saved to the log file. If you
+# have a problem with NeoMutt, then enabling logging may help find the cause.
+# Levels 1-3 will usually provide enough information for writing a bug report.
+# Levels 4,5 will be extremely verbose.
+# 
+# Warning: Logging at high levels may save private information to the file.
+# 
+# This option can be enabled on the command line, "neomutt -d 2"
+# 
+# See also: $debug_file
+# 
+
+
+# 3.81. default_hook
+# 
+# Type: string
+# Default: “~f %s !~P | (~P ~C %s)”
+# 
+# This variable controls how "message-hook", "reply-hook", "send-hook", "
+# send2-hook", "save-hook", and "fcc-hook" will be interpreted if they are
+# specified with only a simple regex, instead of a matching pattern. The hooks
+# are expanded when they are declared, so a hook will be interpreted according to
+# the value of this variable at the time the hook is declared.
+# 
+# The default value matches if the message is either from a user matching the
+# regular expression given, or if it is from you (if the from address matches "
+# alternates") and is to or cc'ed to a user matching the given regular
+# expression. 
+# 
+
+
+# 3.82. delete
+# 
+# Type: quadoption
+# Default: ask-yes
+# 
+# Controls whether or not messages are really deleted when closing or
+# synchronizing a mailbox. If set to yes, messages marked for deleting will
+# automatically be purged without prompting. If set to no, messages marked for
+# deletion will be kept in the mailbox.
+# 
+set delete=yes
+
+
+# 3.83. delete_untag
+# 
+# Type: boolean
+# Default: yes
+# 
+# If this option is set, NeoMutt will untag messages when marking them for
+# deletion. This applies when you either explicitly delete a message, or when you
+# save it to another folder.
+# 
+
+
+# 3.84. digest_collapse
+# 
+# Type: boolean
+# Default: yes
+# 
+# If this option is set, NeoMutt's received-attachments menu will not show the
+# subparts of individual messages in a multipart/digest. To see these subparts,
+# press "v" on that menu.
+# 
+
+
+# 3.85. display_filter
+# 
+# Type: command
+# Default: (empty)
+# 
+# When set, specifies a command used to filter messages. When a message is viewed
+# it is passed as standard input to $display_filter, and the filtered message is
+# read from the standard output.
+# 
+# When preparing the message, NeoMutt inserts some escape sequences into the
+# text. They are of the form: <esc>]9;XXX<bel> where "XXX" is a random 64-bit
+# number. 
+# 
+# If these escape sequences interfere with your filter, they can be removed using
+# a tool like ansifilter or sed 's/^x1b]9;[0-9]+x7//'
+# 
+# If they are removed, then PGP and MIME headers will no longer be coloured. This
+# can be fixed by adding this to your config: color body magenta default '^[--
+# .* --]$'.
+# 
+
+
+# 3.86. dsn_notify
+# 
+# Type: string
+# Default: (empty)
+# 
+# This variable sets the request for when notification is returned. The string
+# consists of a comma separated list (no spaces!) of one or more of the
+# following: never, to never request notification, failure, to request
+# notification on transmission failure, delay, to be notified of message delays,
+# success, to be notified of successful transmission.
+# 
+# Example: 
+# 
+# set dsn_notify="failure,delay"
+# 
+# Note: when using $sendmail for delivery, you should not enable this unless you
+# are either using Sendmail 8.8.x or greater or a MTA providing a sendmail(1)
+# -compatible interface supporting the -N option for DSN. For SMTP delivery, DSN
+# support is auto-detected so that it depends on the server whether DSN will be
+# used or not.
+# 
+
+
+# 3.87. dsn_return
+# 
+# Type: string
+# Default: (empty)
+# 
+# This variable controls how much of your message is returned in DSN messages. It
+# may be set to either hdrs to return just the message header, or full to return
+# the full message.
+# 
+# Example: 
+# 
+# set dsn_return=hdrs
+# 
+# Note: when using $sendmail for delivery, you should not enable this unless you
+# are either using Sendmail 8.8.x or greater or a MTA providing a sendmail(1)
+# -compatible interface supporting the -R option for DSN. For SMTP delivery, DSN
+# support is auto-detected so that it depends on the server whether DSN will be
+# used or not.
+# 
+
+
+# 3.88. duplicate_threads
+# 
+# Type: boolean
+# Default: yes
+# 
+# This variable controls whether NeoMutt, when $sort is set to threads, threads
+# messages with the same Message-Id together. If it is set, it will indicate that
+# it thinks they are duplicates of each other with an equals sign in the thread
+# tree. 
+# 
+
+
+# 3.89. edit_headers
+# 
+# Type: boolean
+# Default: no
+# 
+# This option allows you to edit the header of your outgoing messages along with
+# the body of your message.
+# 
+# Although the compose menu may have localized header labels, the labels passed
+# to your editor will be standard RFC2822 headers, (e.g. To:, Cc:, Subject:).
+# Headers added in your editor must also be RFC2822 headers, or one of the pseudo
+# headers listed in "edit-header". NeoMutt will not understand localized header
+# labels, just as it would not when parsing an actual email.
+# 
+# Note that changes made to the References: and Date: headers are ignored for
+# interoperability reasons.
+# 
+set edit_headers=yes
+
+
+# 3.90. editor
+# 
+# Type: command
+# Default: (empty)
+# 
+# This variable specifies which editor is used by NeoMutt. It defaults to the
+# value of the $VISUAL, or $EDITOR, environment variable, or to the string "/usr/
+# bin/editor" if neither of those are set.
+# 
+# The $editor string may contain a %s escape, which will be replaced by the name
+# of the file to be edited. If the %s escape does not appear in $editor, a space
+# and the name to be edited are appended.
+# 
+# The resulting string is then executed by running
+# 
+# sh -c 'string'
+# 
+# where string is the expansion of $editor described above.
+# 
+set editor="mailplate --edit --auto --keep-unknown"
+
+
+# 3.91. empty_subject
+# 
+# Type: string
+# Default: “Re: your mail”
+# 
+# This variable specifies the subject to be used when replying to an email with
+# an empty subject. It defaults to "Re: your mail".
+# 
+
+
+# 3.92. encode_from
+# 
+# Type: boolean
+# Default: no
+# 
+# When set, NeoMutt will quoted-printable encode messages when they contain the
+# string "From " (note the trailing space) in the beginning of a line. This is
+# useful to avoid the tampering certain mail delivery and transport agents tend
+# to do with messages (in order to prevent tools from misinterpreting the line as
+# a mbox message separator).
+# 
+
+
+# 3.93. envelope_from_address
+# 
+# Type: e-mail address
+# Default: (empty)
+# 
+# Manually sets the envelope sender for outgoing messages. This value is ignored
+# if $use_envelope_from is unset.
+# 
+
+
+# 3.94. external_search_command
+# 
+# Type: command
+# Default: (empty)
+# 
+# If set, contains the name of the external program used by "~I" patterns. This
+# will usually be a wrapper script around mairix, mu, or similar indexers other
+# than notmuch (for which there is optional special support).
+# 
+# Here is an example how it works. Let's assume $external_search_command is set
+# to "mairix_filter", and mairix_filter is a script which runs the old but well
+# loved mairix indexer with the arguments given to mairix_filter, in the "raw"
+# mode of mairix, producing on the standard output a list of Message-IDs, one per
+# line. 
+# 
+# If possible, it also filters down the results coming from mairix such that only
+# messages in the current folder remain. It can do this because it gets a hidden
+# first argument which is the path to the folder. (This can be the type of clean
+# and simple script called a one-liner.)
+# 
+# Now if NeoMutt gets a limit or tag command followed by the pattern "~I '-t
+# s:bleeping='", mairix_filter runs mairix with the arguments from inside the
+# quotes (the quotes are needed because of the space after "-t"), mairix finds
+# all messages with "bleeping" in the Subject plus all messages sharing threads
+# with these and outputs their file names, and mairix_filter translates the file
+# names into Message-IDs. Finally, NeoMutt reads the Message-IDs and targets the
+# matching messages with the command given to it.
+# 
+# You, the user, still have to rewrite the mairix_filter script to match the
+# behavior of your indexer, but this should help users of indexers other than
+# notmuch to integrate them cleanly with NeoMutt.
+# 
+
+
+# 3.95. fast_reply
+# 
+# Type: boolean
+# Default: no
+# 
+# When set, the initial prompt for recipients (to, cc, bcc) and subject are
+# skipped when the relevant information is already provided. These cases include
+# replying to messages and passing the relevant command line arguments. The
+# initial prompt for recipients is also skipped when composing a new message to
+# the current message sender, while the initial prompt for subject is also
+# skipped when forwarding messages.
+# 
+# Note: this variable has no effect when the $auto_edit variable is set.
+# 
+# See also: $auto_edit, $edit_headers, $ask_cc, $ask_bcc
+# 
+
+
+# 3.96. fcc_attach
+# 
+# Type: quadoption
+# Default: yes
+# 
+# This variable controls whether or not attachments on outgoing messages are
+# saved along with the main body of your message.
+# 
+# Note: $fcc_before_send forces the default (set) behavior of this option.
+# 
+
+
+# 3.97. fcc_before_send
+# 
+# Type: boolean
+# Default: no
+# 
+# When this variable is set, FCCs will occur before sending the message. Before
+# sending, the message cannot be manipulated, so it will be stored the exact same
+# as sent: $fcc_attach and $fcc_clear will be ignored (using their default
+# values). 
+# 
+# When unset, the default, FCCs will occur after sending. Variables $fcc_attach
+# and $fcc_clear will be respected, allowing it to be stored without attachments
+# or encryption/signing if desired.
+# 
+
+
+# 3.98. fcc_clear
+# 
+# Type: boolean
+# Default: no
+# 
+# When this variable is set, FCCs will be stored unencrypted and unsigned, even
+# when the actual message is encrypted and/or signed.
+# 
+# Note: $fcc_before_send forces the default (unset) behavior of this option. (PGP
+# only) 
+# 
+# See also $pgp_self_encrypt, $smime_self_encrypt
+# 
+
+
+# 3.99. flag_chars
+# 
+# Type: character string
+# Default: “*!DdrONon- ”
+# 
+# Controls the characters used in several flags.
+# 
+# ┌─────────┬───────┬─────────────────────────────────────────────┐ 
+# │Character│Default│Description │
+# ├─────────┼───────┼─────────────────────────────────────────────┤ 
+# │1 │*      │The mail is tagged.                          │
+# ├─────────┼───────┼─────────────────────────────────────────────┤ 
+# │2 │!      │The mail is flagged as important.            │
+# ├─────────┼───────┼─────────────────────────────────────────────┤ 
+# │3 │D      │The mail is marked for deletion.             │
+# ├─────────┼───────┼─────────────────────────────────────────────┤ 
+# │4 │d      │The mail has attachments marked for deletion.│
+# ├─────────┼───────┼─────────────────────────────────────────────┤ 
+# │5 │r      │The mail has been replied to.                │
+# ├─────────┼───────┼─────────────────────────────────────────────┤ 
+# │6 │O      │The mail is Old (Unread but seen).           │
+# ├─────────┼───────┼─────────────────────────────────────────────┤ 
+# │7 │N      │The mail is New (Unread but not seen).       │
+# ├─────────┼───────┼─────────────────────────────────────────────┤ 
+# │8 │o      │The mail thread is Old (Unread but seen).    │
+# ├─────────┼───────┼─────────────────────────────────────────────┤ 
+# │9 │n      │The mail thread is New (Unread but not seen).│
+# ├─────────┼───────┼─────────────────────────────────────────────┤ 
+# │10 │-      │The mail is read - %S expando.               │
+# ├─────────┼───────┼─────────────────────────────────────────────┤ 
+# │11 │<space>│The mail is read - %Z expando.               │
+# └─────────┴───────┴─────────────────────────────────────────────┘ 
+# 
+
+
+# 3.100. flag_safe
+# 
+# Type: boolean
+# Default: no
+# 
+# If set, flagged messages can't be deleted.
+# 
+
+
+# 3.101. folder
+# 
+# Type: mailbox
+# Default: “~/Mail”
+# 
+# Specifies the default location of your mailboxes. A "+" or "=" at the beginning
+# of a pathname will be expanded to the value of this variable. Note that if you
+# change this variable (from the default) value you need to make sure that the
+# assignment occurs before you use "+" or "=" for any other variables since
+# expansion takes place when handling the "mailboxes" command.
+# 
+set folder="~/mail"
+
+
+# 3.102. folder_format
+# 
+# Type: string
+# Default: “%2C %t %N %F %2l %-8.8u %-8.8g %8s %d %i”
+# 
+# This variable allows you to customize the file browser display to your personal
+# taste. This string is similar to $index_format, but has its own set of printf
+# (3)-like sequences:
+# 
+# ┌───┬─┬───────────────────────────────────────────────────────────────────────┐ 
+# │%C │ │Current file number                                                    │
+# ├───┼─┼───────────────────────────────────────────────────────────────────────┤ 
+# │%d │ │Date/time folder was last modified                                     │
+# ├───┼─┼───────────────────────────────────────────────────────────────────────┤ 
+# │%D │ │Date/time folder was last modified using $date_format.                 │
+# ├───┼─┼───────────────────────────────────────────────────────────────────────┤ 
+# │%f │ │Filename ("/" is appended to directory names, "@" to symbolic links and│
+# │ │ │"*" to executable files)                                               │
+# ├───┼─┼───────────────────────────────────────────────────────────────────────┤ 
+# │%F │ │File permissions                                                       │
+# ├───┼─┼───────────────────────────────────────────────────────────────────────┤ 
+# │%g │ │Group name (or numeric gid, if missing)                                │
+# ├───┼─┼───────────────────────────────────────────────────────────────────────┤ 
+# │%i │ │Description of the folder                                              │
+# ├───┼─┼───────────────────────────────────────────────────────────────────────┤ 
+# │%l │ │Number of hard links                                                   │
+# ├───┼─┼───────────────────────────────────────────────────────────────────────┤ 
+# │%m │*│Number of messages in the mailbox                                      │
+# ├───┼─┼───────────────────────────────────────────────────────────────────────┤ 
+# │%n │*│Number of unread messages in the mailbox                               │
+# ├───┼─┼───────────────────────────────────────────────────────────────────────┤ 
+# │%N │ │"N" if mailbox has new mail, blank otherwise                           │
+# ├───┼─┼───────────────────────────────────────────────────────────────────────┤ 
+# │%s │ │Size in bytes (see formatstrings-size)                                 │
+# ├───┼─┼───────────────────────────────────────────────────────────────────────┤ 
+# │%t │ │"*" if the file is tagged, blank otherwise                             │
+# ├───┼─┼───────────────────────────────────────────────────────────────────────┤ 
+# │%u │ │Owner name (or numeric uid, if missing)                                │
+# ├───┼─┼───────────────────────────────────────────────────────────────────────┤ 
+# │%>X│ │Right justify the rest of the string and pad with character "X"        │
+# ├───┼─┼───────────────────────────────────────────────────────────────────────┤ 
+# │%|X│ │Pad to the end of the line with character "X"                          │
+# ├───┼─┼───────────────────────────────────────────────────────────────────────┤ 
+# │%*X│ │Soft-fill with character "X" as pad                                    │
+# └───┴─┴───────────────────────────────────────────────────────────────────────┘ 
+# 
+# For an explanation of "soft-fill", see the $index_format documentation.
+# 
+# * = can be optionally printed if nonzero
+# 
+# %m, %n, and %N only work for monitored mailboxes. %m requires $mail_check_stats
+# to be set. %n requires $mail_check_stats to be set (except for IMAP mailboxes).
+# 
+set folder_format='%t%N%2C  %D  %4s  %f'
+
+
+# 3.103. followup_to
+# 
+# Type: boolean
+# Default: yes
+# 
+# Controls whether or not the "Mail-Followup-To:" header field is generated when
+# sending mail. When set, NeoMutt will generate this field when you are replying
+# to a known mailing list, specified with the "subscribe" or "lists" commands.
+# 
+# This field has two purposes. First, preventing you from receiving duplicate
+# copies of replies to messages which you send to mailing lists, and second,
+# ensuring that you do get a reply separately for any messages sent to known
+# lists to which you are not subscribed.
+# 
+# The header will contain only the list's address for subscribed lists, and both
+# the list address and your own email address for unsubscribed lists. Without
+# this header, a group reply to your message sent to a subscribed list will be
+# sent to both the list and your address, resulting in two copies of the same
+# email for you.
+# 
+
+
+# 3.104. 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.
+# 
+
+
+# 3.105. force_name
+# 
+# Type: boolean
+# Default: no
+# 
+# This variable is similar to $save_name, except that NeoMutt will store a copy
+# of your outgoing message by the username of the address you are sending to even
+# if that mailbox does not exist.
+# 
+# Also see the $record variable.
+# 
+
+
+# 3.106. forward_attachments
+# 
+# Type: quadoption
+# Default: ask-yes
+# 
+# When forwarding inline (i.e. $mime_forward unset or answered with "no" and
+# $forward_decode set), attachments which cannot be decoded in a reasonable
+# manner will be attached to the newly composed message if this quadoption is set
+# or answered with "yes".
+# 
+
+
+# 3.107. forward_attribution_intro
+# 
+# Type: string
+# Default: “----- Forwarded message from %f -----”
+# 
+# This is the string that will precede a message which has been forwarded in the
+# main body of a message (when $mime_forward is unset). For a full listing of
+# defined printf(3)-like sequences see the section on $index_format. See also
+# $attribution_locale. 
+# 
+
+
+# 3.108. forward_attribution_trailer
+# 
+# Type: string
+# Default: “----- End forwarded message -----”
+# 
+# This is the string that will follow a message which has been forwarded in the
+# main body of a message (when $mime_forward is unset). For a full listing of
+# defined printf(3)-like sequences see the section on $index_format. See also
+# $attribution_locale. 
+# 
+
+
+# 3.109. forward_decode
+# 
+# Type: boolean
+# Default: yes
+# 
+# Controls the decoding of complex MIME messages into text/plain when forwarding
+# a message. The message header is also RFC2047 decoded. This variable is only
+# used, if $mime_forward is unset, otherwise $mime_forward_decode is used
+# instead. 
+# 
+
+
+# 3.110. forward_decrypt
+# 
+# Type: boolean
+# Default: yes
+# 
+# Controls the handling of encrypted messages when forwarding a message. When set
+# , the outer layer of encryption is stripped off. This variable is only used if
+# $mime_forward is set and $mime_forward_decode is unset. (PGP only)
+# 
+
+
+# 3.111. forward_edit
+# 
+# Type: quadoption
+# Default: yes
+# 
+# This quadoption controls whether or not the user is automatically placed in the
+# editor when forwarding messages. For those who always want to forward with no
+# modification, use a setting of "no".
+# 
+
+
+# 3.112. forward_format
+# 
+# Type: string
+# Default: “[%a: %s]”
+# 
+# This variable controls the default subject when forwarding a message. It uses
+# the same format sequences as the $index_format variable.
+# 
+set forward_format="(fwd) %s"
+
+
+# 3.113. forward_quote
+# 
+# Type: boolean
+# Default: no
+# 
+# When set, forwarded messages included in the main body of the message (when
+# $mime_forward is unset) will be quoted using $indent_string.
+# 
+
+
+# 3.114. forward_references
+# 
+# Type: boolean
+# Default: no
+# 
+# When set, forwarded messages set the "In-Reply-To:" and "References:" headers
+# in the same way as normal replies would. Hence the forwarded message becomes
+# part of the original thread instead of starting a new one.
+# 
+
+
+# 3.115. from
+# 
+# Type: e-mail address
+# Default: (empty)
+# 
+# When set, this variable contains a default "from" address. It can be overridden
+# using "my_hdr" (including from a "send-hook") and $reverse_name. This variable
+# is ignored if $use_from is unset.
+# 
+# If not specified, then it may be read from the environment variable $EMAIL.
+# 
+set from='martin f krafft <madduck@madduck.net>'
+
+
+# 3.116. from_chars
+# 
+# Type: character string
+# Default: (empty)
+# 
+# Controls the character used to prefix the %F and %L fields in the index.
+# 
+# ┌─────────┬───────────────────────────────────────────────────────────────────┐ 
+# │Character│Description │
+# ├─────────┼───────────────────────────────────────────────────────────────────┤ 
+# │1 │Mail is written by you and has a To address, or has a known mailing│
+# │ │list in the To address.                                            │
+# ├─────────┼───────────────────────────────────────────────────────────────────┤ 
+# │2 │Mail is written by you and has a Cc address, or has a known mailing│
+# │ │list in the Cc address.                                            │
+# ├─────────┼───────────────────────────────────────────────────────────────────┤ 
+# │3 │Mail is written by you and has a Bcc address.                      │
+# ├─────────┼───────────────────────────────────────────────────────────────────┤ 
+# │4 │All remaining cases.                                               │
+# └─────────┴───────────────────────────────────────────────────────────────────┘ 
+# 
+# If this is empty or unset (default), the traditional long "To ", "Cc " and "Bcc
+# " prefixes are used. If set but too short to include a character for a
+# particular case, a single space will be prepended to the field. To prevent any
+# prefix at all from being added in a particular case, use the special value CR
+# (aka ^M) for the corresponding character.
+# 
+# This slightly odd interface is necessitated by NeoMutt's handling of string
+# variables; one can't tell a variable that is unset from one that is set to the
+# empty string.
+# 
+
+
+# 3.117. gecos_mask
+# 
+# Type: regular expression
+# Default: “^[^,]*”
+# 
+# A regular expression used by NeoMutt to parse the GECOS field of a password
+# entry when expanding the alias. The default value will return the string up to
+# the first "," encountered. If the GECOS field contains a string like "lastname,
+# firstname" then you should set it to ".*".
+# 
+# This can be useful if you see the following behavior: you address an e-mail to
+# user ID "stevef" whose full name is "Steve Franklin". If NeoMutt expands
+# "stevef" to '"Franklin" stevef@foo.bar' then you should set the $gecos_mask to
+# a regular expression that will match the whole name so NeoMutt will expand
+# "Franklin" to "Franklin, Steve".
+# 
+
+
+# 3.118. greeting
+# 
+# Type: string
+# Default: (empty)
+# 
+# When set, this is the string that will precede every message as a greeting
+# phrase to the recipients.
+# 
+# "Format strings" are similar to the strings used in the "C" function printf to
+# format output (see the man page for more detail). The following sequences are
+# defined in NeoMutt:
+# 
+# ┌──┬──────────────────────────────┐ 
+# │%n│Recipient's real name         │
+# ├──┼──────────────────────────────┤ 
+# │%u│User (login) name of recipient│
+# ├──┼──────────────────────────────┤ 
+# │%v│First name of recipient       │
+# └──┴──────────────────────────────┘ 
+# 
+
+
+# 3.119. 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"                     │
+# └───┴──────────────────────────────────────────────────────────────────┘ 
+# 
+
+
+# 3.120. hdrs
+# 
+# Type: boolean
+# Default: yes
+# 
+# When unset, the header fields normally added by the "my_hdr" command are not
+# created. This variable must be unset before composing a new message or replying
+# in order to take effect. If set, the user defined header fields are added to
+# every new message.
+# 
+
+
+# 3.121. header
+# 
+# Type: boolean
+# Default: no
+# 
+# When set, this variable causes NeoMutt to include the header of the message you
+# are replying to into the edit buffer. The $weed setting applies.
+# 
+
+
+# 3.122. header_cache
+# 
+# Type: path
+# Default: (empty)
+# 
+# This variable points to the header cache database. If the path points to an
+# existing directory, NeoMutt will create a dedicated header cache database per
+# folder. Otherwise, the path points to a regular file, which will be created as
+# needed and used as a shared global header cache for all folders. By default it
+# is unset so no header caching will be used.
+# 
+# Header caching can greatly improve speed when opening POP, IMAP MH or Maildir
+# folders, see "caching" for details.
+# 
+set header_cache="~/.var/neomutt/header_cache"
+
+
+# 3.123. header_cache_backend
+# 
+# Type: string
+# Default: (empty)
+# 
+# This variable specifies the header cache backend. If no backend is specified,
+# the first available backend will be used in the following order: tokyocabinet,
+# kyotocabinet, qdbm, rocksdb, gdbm, bdb, tdb, lmdb.
+# 
+
+
+# 3.124. header_color_partial
+# 
+# Type: boolean
+# Default: no
+# 
+# When set, color header regexes behave like color body regexes: color is applied
+# to the exact text matched by the regex. When unset, color is applied to the
+# entire header.
+# 
+# One use of this option might be to apply color to just the header labels.
+# 
+# See "color" for more details.
+# 
+
+
+# 3.125. help
+# 
+# Type: boolean
+# Default: yes
+# 
+# When set, help lines describing the bindings for the major functions provided
+# by each menu are displayed on the first line of the screen.
+# 
+# Note: The binding will not be displayed correctly if the function is bound to a
+# sequence rather than a single keystroke. Also, the help line may not be updated
+# if a binding is changed while NeoMutt is running. Since this variable is
+# primarily aimed at new users, neither of these should present a major problem.
+# 
+
+
+# 3.126. hidden_host
+# 
+# Type: boolean
+# Default: no
+# 
+# When set, NeoMutt will skip the host name part of $hostname variable when
+# adding the domain part to addresses. This variable does not affect the
+# generation of Message-IDs, and it will not lead to the cut-off of first-level
+# domains. 
+# 
+
+
+# 3.127. hidden_tags
+# 
+# Type: string list
+# Default: “unread,draft,flagged,passed,replied,attachment,signed,encrypted”
+# 
+# This variable specifies a list of comma-separated private notmuch/imap tags
+# which should not be printed on screen.
+# 
+
+
+# 3.128. hide_limited
+# 
+# Type: boolean
+# Default: no
+# 
+# When set, NeoMutt will not show the presence of messages that are hidden by
+# limiting, in the thread tree.
+# 
+
+
+# 3.129. hide_missing
+# 
+# Type: boolean
+# Default: yes
+# 
+# When set, NeoMutt will not show the presence of missing messages in the thread
+# tree. 
+# 
+
+
+# 3.130. hide_thread_subject
+# 
+# Type: boolean
+# Default: yes
+# 
+# When set, NeoMutt will not show the subject of messages in the thread tree that
+# have the same subject as their parent or closest previously displayed sibling.
+# 
+
+
+# 3.131. hide_top_limited
+# 
+# Type: boolean
+# Default: no
+# 
+# When set, NeoMutt will not show the presence of messages that are hidden by
+# limiting, at the top of threads in the thread tree. Note that when
+# $hide_limited is set, this option will have no effect.
+# 
+
+
+# 3.132. hide_top_missing
+# 
+# Type: boolean
+# Default: yes
+# 
+# When set, NeoMutt will not show the presence of missing messages at the top of
+# threads in the thread tree. Note that when $hide_missing is set, this option
+# will have no effect.
+# 
+
+
+# 3.133. history
+# 
+# Type: number
+# Default: 10
+# 
+# This variable controls the size (in number of strings remembered) of the string
+# history buffer per category. The buffer is cleared each time the variable is
+# set. 
+# 
+
+
+# 3.134. history_file
+# 
+# Type: path
+# Default: “~/.mutthistory”
+# 
+# The file in which NeoMutt will save its history.
+# 
+# Also see $save_history.
+# 
+set history_file="~/.var/neomutt/history"
+
+
+# 3.135. history_remove_dups
+# 
+# Type: boolean
+# Default: no
+# 
+# When set, all of the string history will be scanned for duplicates when a new
+# entry is added. Duplicate entries in the $history_file will also be removed
+# when it is periodically compacted.
+# 
+
+
+# 3.136. honor_disposition
+# 
+# Type: boolean
+# Default: no
+# 
+# When set, NeoMutt will not display attachments with a disposition of
+# "attachment" inline even if it could render the part to plain text. These MIME
+# parts can only be viewed from the attachment menu.
+# 
+# If unset, NeoMutt will render all MIME parts it can properly transform to plain
+# text. 
+# 
+
+
+# 3.137. honor_followup_to
+# 
+# Type: quadoption
+# Default: yes
+# 
+# This variable controls whether or not a Mail-Followup-To header is honored when
+# group-replying to a message.
+# 
+
+
+# 3.138. hostname
+# 
+# Type: string
+# Default: (empty)
+# 
+# Specifies the fully-qualified hostname of the system NeoMutt is running on
+# containing the host's name and the DNS domain it belongs to. It is used as the
+# domain part (after "@") for local email addresses as well as Message-Id
+# headers. 
+# 
+# If not specified in a config file, then NeoMutt will try to determine the
+# hostname itself.
+# 
+# Optionally, NeoMutt can be compiled with a fixed domain name.
+# 
+# Also see $use_domain and $hidden_host.
+# 
+# Note: On Debian systems, the default for this variable is obtained from /etc/
+# mailname when Mutt starts.
+# 
+
+
+# 3.139. idn_decode
+# 
+# Type: boolean
+# Default: yes
+# 
+# When set, NeoMutt will show you international domain names decoded. Note: You
+# can use IDNs for addresses even if this is unset. This variable only affects
+# decoding. (IDN only)
+# 
+
+
+# 3.140. idn_encode
+# 
+# Type: boolean
+# Default: yes
+# 
+# When set, NeoMutt will encode international domain names using IDN. Unset this
+# if your SMTP server can handle newer (RFC6531) UTF-8 encoded domains. (IDN
+# only) 
+# 
+
+
+# 3.141. ignore_list_reply_to
+# 
+# Type: boolean
+# Default: no
+# 
+# Affects the behavior of the <reply> function when replying to messages from
+# mailing lists (as defined by the "subscribe" or "lists" commands). When set, if
+# the "Reply-To:" field is set to the same value as the "To:" field, NeoMutt
+# assumes that the "Reply-To:" field was set by the mailing list to automate
+# responses to the list, and will ignore this field. To direct a response to the
+# mailing list when this option is set, use the <list-reply> function;
+# <group-reply> will reply to both the sender and the list.
+# 
+set ignore_list_reply_to=yes
+
+
+# 3.142. imap_authenticators
+# 
+# Type: string list
+# Default: (empty)
+# 
+# This is a colon-separated list of authentication methods NeoMutt may attempt to
+# use to log in to an IMAP server, in the order NeoMutt should try them.
+# Authentication methods are either "login" or the right side of an IMAP "AUTH=
+# xxx" capability string, e.g. "digest-md5", "gssapi" or "cram-md5". This option
+# is case-insensitive. If it's unset (the default) NeoMutt will try all available
+# methods, in order from most-secure to least-secure.
+# 
+# Example: 
+# 
+# set imap_authenticators="gssapi:cram-md5:login"
+# 
+# Note: NeoMutt will only fall back to other authentication methods if the
+# previous methods are unavailable. If a method is available but authentication
+# fails, NeoMutt will not connect to the IMAP server.
+# 
+
+
+# 3.143. imap_check_subscribed
+# 
+# Type: boolean
+# Default: no
+# 
+# When set, NeoMutt will fetch the set of subscribed folders from your server
+# whenever a mailbox is selected, and add them to the set of mailboxes it polls
+# for new mail just as if you had issued individual "mailboxes" commands.
+# 
+
+
+# 3.144. imap_condstore
+# 
+# Type: boolean
+# Default: no
+# 
+# When set, NeoMutt will use the CONDSTORE extension (RFC7162) if advertised by
+# the server. NeoMutt's current implementation is basic, used only for initial
+# message fetching and flag updates.
+# 
+# For some IMAP servers, enabling this will slightly speed up downloading initial
+# messages. Unfortunately, Gmail is not one those, and displays worse performance
+# when enabled. Your mileage may vary.
+# 
+
+
+# 3.145. imap_delim_chars
+# 
+# Type: string
+# Default: “/.”
+# 
+# This contains the list of characters that NeoMutt will use as folder separators
+# for IMAP paths, when no separator is provided on the IMAP connection.
+# 
+
+
+# 3.146. imap_fetch_chunk_size
+# 
+# Type: number (long)
+# Default: 0
+# 
+# When set to a value greater than 0, new headers will be downloaded in groups of
+# this many headers per request. If you have a very large mailbox, this might
+# prevent a timeout and disconnect when opening the mailbox, by sending a FETCH
+# per set of this many headers, instead of a single FETCH for all new headers.
+# 
+
+
+# 3.147. imap_headers
+# 
+# Type: string
+# Default: (empty)
+# 
+# NeoMutt requests these header fields in addition to the default headers
+# ("Date:", "From:", "Sender:", "Subject:", "To:", "Cc:", "Message-Id:",
+# "References:", "Content-Type:", "Content-Description:", "In-Reply-To:",
+# "Reply-To:", "Lines:", "List-Post:", "X-Label:") from IMAP servers before
+# displaying the index menu. You may want to add more headers for spam detection.
+# 
+# Note: This is a space separated list, items should be uppercase and not contain
+# the colon, e.g. "X-BOGOSITY X-SPAM-STATUS" for the "X-Bogosity:" and
+# "X-Spam-Status:" header fields.
+# 
+
+
+# 3.148. imap_idle
+# 
+# Type: boolean
+# Default: no
+# 
+# When set, NeoMutt will attempt to use the IMAP IDLE extension to check for new
+# mail in the current mailbox. Some servers (dovecot was the inspiration for this
+# option) react badly to NeoMutt's implementation. If your connection seems to
+# freeze up periodically, try unsetting this.
+# 
+
+
+# 3.149. imap_keepalive
+# 
+# Type: number
+# Default: 300
+# 
+# This variable specifies the maximum amount of time in seconds that NeoMutt will
+# wait before polling open IMAP connections, to prevent the server from closing
+# them before NeoMutt has finished with them. The default is well within the
+# RFC-specified minimum amount of time (30 minutes) before a server is allowed to
+# do this, but in practice the RFC does get violated every now and then. Reduce
+# this number if you find yourself getting disconnected from your IMAP server due
+# to inactivity.
+# 
+
+
+# 3.150. imap_list_subscribed
+# 
+# Type: boolean
+# Default: no
+# 
+# This variable configures whether IMAP folder browsing will look for only
+# subscribed folders or all folders. This can be toggled in the IMAP browser with
+# the <toggle-subscribed> function.
+# 
+
+
+# 3.151. imap_login
+# 
+# Type: string
+# Default: (empty)
+# 
+# Your login name on the IMAP server.
+# 
+# This variable defaults to the value of $imap_user.
+# 
+
+
+# 3.152. imap_oauth_refresh_command
+# 
+# Type: command
+# Default: (empty)
+# 
+# The command to run to generate an OAUTH refresh token for authorizing your
+# connection to your IMAP server. This command will be run on every connection
+# attempt that uses the OAUTHBEARER or XOAUTH2 authentication mechanisms. See "
+# oauth" for details.
+# 
+
+
+# 3.153. imap_pass
+# 
+# Type: string
+# Default: (empty)
+# 
+# Specifies the password for your IMAP account. If unset, NeoMutt will prompt you
+# for your password when you invoke the <imap-fetch-mail> function or try to open
+# an IMAP folder.
+# 
+# Warning: you should only use this option when you are on a fairly secure
+# machine, because the superuser can read your neomuttrc even if you are the only
+# one who can read the file.
+# 
+
+
+# 3.154. imap_passive
+# 
+# Type: boolean
+# Default: yes
+# 
+# When set, NeoMutt will not open new IMAP connections to check for new mail.
+# NeoMutt will only check for new mail over existing IMAP connections. This is
+# useful if you don't want to be prompted for user/password pairs on NeoMutt
+# invocation, or if opening the connection is slow.
+# 
+
+
+# 3.155. imap_peek
+# 
+# Type: boolean
+# Default: yes
+# 
+# When set, NeoMutt will avoid implicitly marking your mail as read whenever you
+# fetch a message from the server. This is generally a good thing, but can make
+# closing an IMAP folder somewhat slower. This option exists to appease speed
+# freaks. 
+# 
+
+
+# 3.156. imap_pipeline_depth
+# 
+# Type: number
+# Default: 15
+# 
+# Controls the number of IMAP commands that may be queued up before they are sent
+# to the server. A deeper pipeline reduces the amount of time NeoMutt must wait
+# for the server, and can make IMAP servers feel much more responsive. But not
+# all servers correctly handle pipelined commands, so if you have problems you
+# might want to try setting this variable to 0.
+# 
+# Note: Changes to this variable have no effect on open connections.
+# 
+
+
+# 3.157. imap_poll_timeout
+# 
+# Type: number
+# Default: 15
+# 
+# This variable specifies the maximum amount of time in seconds that NeoMutt will
+# wait for a response when polling IMAP connections for new mail, before timing
+# out and closing the connection. Set to 0 to disable timing out.
+# 
+
+
+# 3.158. imap_qresync
+# 
+# Type: boolean
+# Default: no
+# 
+# When set, NeoMutt will use the QRESYNC extension (RFC7162) if advertised by the
+# server. NeoMutt's current implementation is basic, used only for initial
+# message fetching and flag updates.
+# 
+# Note: this feature is currently experimental. If you experience strange
+# behavior, such as duplicate or missing messages please file a bug report to let
+# us know.
+# 
+
+
+# 3.159. imap_rfc5161
+# 
+# Type: boolean
+# Default: yes
+# 
+# When set, NeoMutt will use the IMAP ENABLE extension (RFC5161) to select
+# CAPABILITIES. Some servers (notably Coremail System IMap Server) do not
+# properly respond to ENABLE commands, which might cause NeoMutt to hang. If your
+# connection seems to freeze at login, try unsetting this. See also https://
+# github.com/neomutt/neomutt/issues/1689 
+# 
+
+
+# 3.160. imap_server_noise
+# 
+# Type: boolean
+# Default: yes
+# 
+# When set, NeoMutt will display warning messages from the IMAP server as error
+# messages. Since these messages are often harmless, or generated due to
+# configuration problems on the server which are out of the users' hands, you may
+# wish to suppress them at some point.
+# 
+
+
+# 3.161. imap_user
+# 
+# Type: string
+# Default: (empty)
+# 
+# The name of the user whose mail you intend to access on the IMAP server.
+# 
+# This variable defaults to your user name on the local machine.
+# 
+
+
+# 3.162. implicit_autoview
+# 
+# Type: boolean
+# Default: no
+# 
+# If set to "yes", NeoMutt will look for a mailcap entry with the "copiousoutput"
+# flag set for every MIME attachment it doesn't have an internal viewer defined
+# for. If such an entry is found, NeoMutt will use the viewer defined in that
+# entry to convert the body part to text form.
+# 
+set implicit_autoview=no
+
+
+# 3.163. include
+# 
+# Type: quadoption
+# Default: ask-yes
+# 
+# Controls whether or not a copy of the message(s) you are replying to is
+# included in your reply.
+# 
+set include=yes
+
+
+# 3.164. include_encrypted
+# 
+# Type: boolean
+# Default: no
+# 
+# Controls whether or not NeoMutt includes separately encrypted attachment
+# contents when replying.
+# 
+# This variable was added to prevent accidental exposure of encrypted contents
+# when replying to an attacker. If a previously encrypted message were attached
+# by the attacker, they could trick an unwary recipient into decrypting and
+# including the message in their reply.
+# 
+
+
+# 3.165. include_only_first
+# 
+# Type: boolean
+# Default: no
+# 
+# Controls whether or not NeoMutt includes only the first attachment of the
+# message you are replying.
+# 
+
+
+# 3.166. indent_string
+# 
+# Type: string
+# Default: “> ”
+# 
+# Specifies the string to prepend to each line of text quoted in a message to
+# which you are replying. You are strongly encouraged not to change this value,
+# as it tends to agitate the more fanatical netizens.
+# 
+# The value of this option is ignored if $text_flowed is set, because the quoting
+# mechanism is strictly defined for format=flowed.
+# 
+# This option is a format string, please see the description of $index_format for
+# supported printf(3)-style sequences.
+# 
+
+
+# 3.167. index_format
+# 
+# Type: string
+# Default: “%4C %Z %{%b %d} %-15.15L (%?l?%4l&%4c?) %s”
+# 
+# This variable allows you to customize the message index display to your
+# personal taste.
+# 
+# "Format strings" are similar to the strings used in the C function printf(3) to
+# format output (see the man page for more details). For an explanation of the %?
+# construct, see the status_format description. The following sequences are
+# defined in NeoMutt:
+# 
+# ┌───────┬─────────────────────────────────────────────────────────────────────┐ 
+# │%a │Address of the author                                                │
+# ├───────┼─────────────────────────────────────────────────────────────────────┤ 
+# │%A │Reply-to address (if present; otherwise: address of author)          │
+# ├───────┼─────────────────────────────────────────────────────────────────────┤ 
+# │%b │Filename of the original message folder (think mailbox)              │
+# ├───────┼─────────────────────────────────────────────────────────────────────┤ 
+# │%B │Same as %K                                                           │
+# ├───────┼─────────────────────────────────────────────────────────────────────┤ 
+# │%C │Current message number                                               │
+# ├───────┼─────────────────────────────────────────────────────────────────────┤ 
+# │%c │Number of characters (bytes) in the body of the message (see         │
+# │ │formatstrings-size)                                                  │
+# ├───────┼─────────────────────────────────────────────────────────────────────┤ 
+# │%cr │Number of characters (bytes) in the raw message, including the header│
+# │ │(see formatstrings-size)                                             │
+# ├───────┼─────────────────────────────────────────────────────────────────────┤ 
+# │%D │Date and time of message using date_format and local timezone        │
+# ├───────┼─────────────────────────────────────────────────────────────────────┤ 
+# │%d │Date and time of message using date_format and sender's timezone     │
+# ├───────┼─────────────────────────────────────────────────────────────────────┤ 
+# │%e │Current message number in thread                                     │
+# ├───────┼─────────────────────────────────────────────────────────────────────┤ 
+# │%E │Number of messages in current thread                                 │
+# ├───────┼─────────────────────────────────────────────────────────────────────┤ 
+# │%F │Author name, or recipient name if the message is from you            │
+# ├───────┼─────────────────────────────────────────────────────────────────────┤ 
+# │%Fp │Like %F, but plain. No contextual formatting is applied to recipient │
+# │ │name                                                                 │
+# ├───────┼─────────────────────────────────────────────────────────────────────┤ 
+# │%f │Sender (address + real name), either From: or Return-Path:           │
+# ├───────┼─────────────────────────────────────────────────────────────────────┤ 
+# │%g │Newsgroup name (if compiled with NNTP support)                       │
+# ├───────┼─────────────────────────────────────────────────────────────────────┤ 
+# │%g │Message tags (e.g. notmuch tags/imap flags)                          │
+# ├───────┼─────────────────────────────────────────────────────────────────────┤ 
+# │%Gx │Individual message tag (e.g. notmuch tags/imap flags)                │
+# ├───────┼─────────────────────────────────────────────────────────────────────┤ 
+# │%H │Spam attribute(s) of this message                                    │
+# ├───────┼─────────────────────────────────────────────────────────────────────┤ 
+# │%I │Initials of author                                                   │
+# ├───────┼─────────────────────────────────────────────────────────────────────┤ 
+# │%i │Message-id of the current message                                    │
+# ├───────┼─────────────────────────────────────────────────────────────────────┤ 
+# │%J │Message tags (if present, tree unfolded, and != parent's tags)       │
+# ├───────┼─────────────────────────────────────────────────────────────────────┤ 
+# │%K │The list to which the letter was sent (if any; otherwise: empty)     │
+# ├───────┼─────────────────────────────────────────────────────────────────────┤ 
+# │ │If an address in the "To:" or "Cc:" header field matches an address  │
+# │%L │Defined by the user's "subscribe" command, this displays "To         │
+# │ │<list-name>", otherwise the same as %F                               │
+# ├───────┼─────────────────────────────────────────────────────────────────────┤ 
+# │%l │number of lines in the unprocessed message (may not work with        │
+# │ │maildir, mh, and IMAP folders)                                       │
+# ├───────┼─────────────────────────────────────────────────────────────────────┤ 
+# │%M │Number of hidden messages if the thread is collapsed                 │
+# ├───────┼─────────────────────────────────────────────────────────────────────┤ 
+# │%m │Total number of message in the mailbox                               │
+# ├───────┼─────────────────────────────────────────────────────────────────────┤ 
+# │%N │Message score                                                        │
+# ├───────┼─────────────────────────────────────────────────────────────────────┤ 
+# │%n │Author's real name (or address if missing)                           │
+# ├───────┼─────────────────────────────────────────────────────────────────────┤ 
+# │%O │Original save folder where NeoMutt would formerly have Stashed the   │
+# │ │message: list name or recipient name If not sent to a list           │
+# ├───────┼─────────────────────────────────────────────────────────────────────┤ 
+# │%P │Progress indicator for the built-in pager (how much of the file has  │
+# │ │been displayed)                                                      │
+# ├───────┼─────────────────────────────────────────────────────────────────────┤ 
+# │%q │Newsgroup name (if compiled with NNTP support)                       │
+# ├───────┼─────────────────────────────────────────────────────────────────────┤ 
+# │%R │Comma separated list of "Cc:" recipients                             │
+# ├───────┼─────────────────────────────────────────────────────────────────────┤ 
+# │%r │Comma separated list of "To:" recipients                             │
+# ├───────┼─────────────────────────────────────────────────────────────────────┤ 
+# │%S │Single character status of the message ("N"/"O"/"D"/"d"/"!"/"r"/"*") │
+# ├───────┼─────────────────────────────────────────────────────────────────────┤ 
+# │%s │Subject of the message                                               │
+# ├───────┼─────────────────────────────────────────────────────────────────────┤ 
+# │%T │The appropriate character from the $to_chars string                  │
+# ├───────┼─────────────────────────────────────────────────────────────────────┤ 
+# │%t │"To:" field (recipients)                                             │
+# ├───────┼─────────────────────────────────────────────────────────────────────┤ 
+# │%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 MIME attachments (please see the "attachments" section for │
+# │ │possible speed effects)                                              │
+# ├───────┼─────────────────────────────────────────────────────────────────────┤ 
+# │ │"X-Label:" field, if present, and (1) not at part of a thread tree,  │
+# │%Y │(2) at the top of a thread, or (3) "X-Label:" is different from      │
+# │ │Preceding message's "X-Label:"                                       │
+# ├───────┼─────────────────────────────────────────────────────────────────────┤ 
+# │%y │"X-Label:" field, if present                                         │
+# ├───────┼─────────────────────────────────────────────────────────────────────┤ 
+# │ │A three character set of message status flags. The first character is│
+# │ │new/read/replied flags ("n"/"o"/"r"/"O"/"N"). The second is deleted  │
+# │%Z │or encryption flags ("D"/"d"/"S"/"P"/"s"/"K"). The third is either   │
+# │ │tagged/flagged ("*"/"!"), or one of the characters Listed in         │
+# │ │$to_chars.                                                           │
+# ├───────┼─────────────────────────────────────────────────────────────────────┤ 
+# │%zc │Message crypto flags                                                 │
+# ├───────┼─────────────────────────────────────────────────────────────────────┤ 
+# │%zs │Message status flags                                                 │
+# ├───────┼─────────────────────────────────────────────────────────────────────┤ 
+# │%zt │Message tag flags                                                    │
+# ├───────┼─────────────────────────────────────────────────────────────────────┤ 
+# │%@name@│insert and evaluate format-string from the matching "                │
+# │ │index-format-hook" command                                           │
+# ├───────┼─────────────────────────────────────────────────────────────────────┤ 
+# │ │the date and time of the message is converted to sender's time zone, │
+# │ │and "fmt" is expanded by the library function strftime(3); if the    │
+# │%{fmt} │first character inside the braces is a bang ("!"), the date is       │
+# │ │formatted ignoring any locale settings. Note that the sender's time  │
+# │ │zone might only be available as a numerical offset, so "%Z" behaves  │
+# │ │like "%z".                                                           │
+# ├───────┼─────────────────────────────────────────────────────────────────────┤ 
+# │ │the date and time of the message is converted to the local time zone,│
+# │%[fmt] │and "fmt" is expanded by the library function strftime(3); if the    │
+# │ │first character inside the brackets is a bang ("!"), the date is     │
+# │ │formatted ignoring any locale settings.                              │
+# ├───────┼─────────────────────────────────────────────────────────────────────┤ 
+# │ │the local date and time when the message was received, and "fmt" is  │
+# │%(fmt) │expanded by the library function strftime(3); if the first character │
+# │ │inside the parentheses is a bang ("!"), the date is formatted        │
+# │ │ignoring any locale settings.                                        │
+# ├───────┼─────────────────────────────────────────────────────────────────────┤ 
+# │%>X │right justify the rest of the string and pad with character "X"      │
+# ├───────┼─────────────────────────────────────────────────────────────────────┤ 
+# │%|X │pad to the end of the line with character "X"                        │
+# ├───────┼─────────────────────────────────────────────────────────────────────┤ 
+# │%*X │soft-fill with character "X" as pad                                  │
+# └───────┴─────────────────────────────────────────────────────────────────────┘ 
+# 
+# Date format expressions can be constructed based on relative dates. Using the
+# date formatting operators along with nested conditionals, the date format can
+# be modified based on how old a message is. See the section on "Conditional
+# Dates" for an explanation and examples
+# 
+# Note that for mbox/mmdf, "%l" applies to the unprocessed message, and for
+# maildir/mh, the value comes from the "Lines:" header field when present (the
+# meaning is normally the same). Thus the value depends on the encodings used in
+# the different parts of the message and has little meaning in practice.
+# 
+# "Soft-fill" deserves some explanation: Normal right-justification will print
+# everything to the left of the "%>", displaying padding and whatever lies to the
+# right only if there's room. By contrast, soft-fill gives priority to the
+# right-hand side, guaranteeing space to display it and showing padding only if
+# there's still room. If necessary, soft-fill will eat text leftwards to make
+# room for rightward text.
+# 
+# Note that these expandos are supported in "save-hook", "fcc-hook" and "
+# fcc-save-hook", too.
+# 
+
+
+# 3.168. inews
+# 
+# Type: command
+# Default: (empty)
+# 
+# If set, specifies the program and arguments used to deliver news posted by
+# NeoMutt. Otherwise, NeoMutt 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"
+# 
+
+
+# 3.169. ispell
+# 
+# Type: command
+# Default: “ispell”
+# 
+# How to invoke ispell (GNU's spell-checking software).
+# 
+
+
+# 3.170. keep_flagged
+# 
+# Type: boolean
+# Default: no
+# 
+# If set, read messages marked as flagged will not be moved from your spool
+# mailbox to your $mbox mailbox, or as a result of a "mbox-hook" command.
+# 
+
+
+# 3.171. local_date_header
+# 
+# Type: boolean
+# Default: yes
+# 
+# If set, the date in the Date header of emails that you send will be in your
+# local timezone. If unset a UTC date will be used instead to avoid leaking
+# information about your current location.
+# 
+
+
+# 3.172. mail_check
+# 
+# Type: number
+# Default: 5
+# 
+# This variable configures how often (in seconds) NeoMutt should look for new
+# mail. Also see the $timeout variable.
+# 
+
+
+# 3.173. mail_check_recent
+# 
+# Type: boolean
+# Default: yes
+# 
+# When set, NeoMutt will only notify you about new mail that has been received
+# since the last time you opened the mailbox. When unset, NeoMutt will notify you
+# if any new mail exists in the mailbox, regardless of whether you have visited
+# it recently.
+# 
+# When $mark_old is set, NeoMutt does not consider the mailbox to contain new
+# mail if only old messages exist.
+# 
+
+
+# 3.174. mail_check_stats
+# 
+# Type: boolean
+# Default: no
+# 
+# When set, NeoMutt will periodically calculate message statistics of a mailbox
+# while polling for new mail. It will check for unread, flagged, and total
+# message counts. Because this operation is more performance intensive, it
+# defaults to unset, and has a separate option, $mail_check_stats_interval, to
+# control how often to update these counts.
+# 
+# Message statistics can also be explicitly calculated by invoking the
+# <check-stats> function.
+# 
+set mail_check_stats=yes
+
+
+# 3.175. mail_check_stats_interval
+# 
+# Type: number
+# Default: 60
+# 
+# When $mail_check_stats is set, this variable configures how often (in seconds)
+# NeoMutt will update message counts.
+# 
+
+
+# 3.176. mailcap_path
+# 
+# Type: string list
+# Default: “~/.mailcap:/usr/share/neomutt/mailcap:/etc/mailcap:/etc/mailcap:/usr/
+# etc/mailcap:/usr/local/etc/mailcap” 
+# 
+# This variable specifies a list of colon-separated files to consult when
+# attempting to display MIME bodies not directly supported by NeoMutt. The
+# default value is generated during startup: see the "mailcap" section of the
+# manual. 
+# 
+# $mailcap_path is overridden by the environment variable $MAILCAPS.
+# 
+# The default search path is from RFC1524.
+# 
+set mailcap_path="$my_confdir/mailcap.containers:$my_confdir/mailcap.icalendar:$my_confdir/mailcap.backgrounding:$my_confdir/mailcap.htmldump"
+
+
+# 3.177. mailcap_sanitize
+# 
+# Type: boolean
+# Default: yes
+# 
+# If set, NeoMutt will restrict possible characters in mailcap % expandos to a
+# well-defined set of safe characters. This is the safe setting, but we are not
+# sure it doesn't break some more advanced MIME stuff.
+# 
+# DON'T CHANGE THIS SETTING UNLESS YOU ARE REALLY SURE WHAT YOU ARE DOING!
+# 
+
+
+# 3.178. maildir_check_cur
+# 
+# Type: boolean
+# Default: no
+# 
+# If set, NeoMutt will poll both the new and cur directories of a maildir folder
+# for new messages. This might be useful if other programs interacting with the
+# folder (e.g. dovecot) are moving new messages to the cur directory. Note that
+# setting this option may slow down polling for new messages in large folders,
+# since NeoMutt has to scan all cur messages.
+# 
+
+
+# 3.179. maildir_header_cache_verify
+# 
+# Type: boolean
+# Default: yes
+# 
+# Check for Maildir unaware programs other than NeoMutt having modified maildir
+# files when the header cache is in use. This incurs one stat(2) per message
+# every time the folder is opened (which can be very slow for NFS folders).
+# 
+set maildir_header_cache_verify=no
+
+
+# 3.180. maildir_trash
+# 
+# Type: boolean
+# Default: no
+# 
+# If set, messages marked as deleted will be saved with the maildir trashed flag
+# instead of unlinked. Note: this only applies to maildir-style mailboxes.
+# Setting it will have no effect on other mailbox types.
+# 
+
+
+# 3.181. mark_macro_prefix
+# 
+# Type: string
+# Default: “'”
+# 
+# Prefix for macros created using mark-message. A new macro automatically
+# generated with <mark-message>a will be composed from this prefix and the letter
+# a. 
+# 
+
+
+# 3.182. mark_old
+# 
+# Type: boolean
+# Default: yes
+# 
+# Controls whether or not NeoMutt marks new unread messages as old if you exit a
+# mailbox without reading them. With this option set, the next time you start
+# NeoMutt, the messages will show up with an "O" next to them in the index menu,
+# indicating that they are old.
+# 
+set mark_old=no
+
+
+# 3.183. markers
+# 
+# Type: boolean
+# Default: yes
+# 
+# Controls the display of wrapped lines in the internal pager. If set, a "+"
+# marker is displayed at the beginning of wrapped lines.
+# 
+# Also see the $smart_wrap variable.
+# 
+set markers=no
+
+
+# 3.184. mask
+# 
+# Type: regular expression
+# Default: “!^.[^.]”
+# 
+# A regular expression used in the file browser, optionally preceded by the not
+# operator "!". Only files whose names match this mask will be shown. The match
+# is always case-sensitive.
+# 
+
+
+# 3.185. mbox
+# 
+# Type: mailbox
+# Default: “~/mbox”
+# 
+# This specifies the folder into which read mail in your $spool_file folder will
+# be appended.
+# 
+# Also see the $move variable.
+# 
+set mbox="=spool"
+
+
+# 3.186. mbox_type
+# 
+# Type: enumeration
+# Default: mbox
+# 
+# The default mailbox type used when creating new folders. May be any of "mbox",
+# "MMDF", "MH" or "Maildir".
+# 
+# This can also be set using the -m command-line option.
+# 
+set mbox_type=Maildir
+
+
+# 3.187. me_too
+# 
+# Type: boolean
+# Default: no
+# 
+# If unset, NeoMutt will remove your address (see the "alternates" command) from
+# the list of recipients when replying to a message.
+# 
+
+
+# 3.188. menu_context
+# 
+# Type: number
+# Default: 0
+# 
+# This variable controls the number of lines of context that are given when
+# scrolling through menus. (Similar to $pager_context.)
+# 
+set menu_context=5
+
+
+# 3.189. menu_move_off
+# 
+# Type: boolean
+# Default: yes
+# 
+# When unset, the bottom entry of menus will never scroll up past the bottom of
+# the screen, unless there are less entries than lines. When set, the bottom
+# entry may move off the bottom.
+# 
+
+
+# 3.190. menu_scroll
+# 
+# Type: boolean
+# Default: no
+# 
+# When set, menus will be scrolled up or down one line when you attempt to move
+# across a screen boundary. If unset, the screen is cleared and the next or
+# previous page of the menu is displayed (useful for slow links to avoid many
+# redraws). 
+# 
+set menu_scroll=yes
+
+
+# 3.191. message_cache_clean
+# 
+# Type: boolean
+# Default: no
+# 
+# If set, NeoMutt will clean out obsolete entries from the message cache when the
+# mailbox is synchronized. You probably only want to set it every once in a
+# while, since it can be a little slow (especially for large folders).
+# 
+
+
+# 3.192. message_cachedir
+# 
+# Type: path
+# Default: (empty)
+# 
+# Set this to a directory and NeoMutt will cache copies of messages from your
+# IMAP and POP servers here. You are free to remove entries at any time.
+# 
+# When setting this variable to a directory, NeoMutt needs to fetch every remote
+# message only once and can perform regular expression searches as fast as for
+# local folders.
+# 
+# Also see the $message_cache_clean variable.
+# 
+
+
+# 3.193. message_format
+# 
+# Type: string
+# Default: “%s”
+# 
+# This is the string displayed in the "attachment" menu for attachments of type
+# message/rfc822. For a full listing of defined printf(3)-like sequences see the
+# section on $index_format.
+# 
+
+
+# 3.194. meta_key
+# 
+# Type: boolean
+# Default: no
+# 
+# If set, forces NeoMutt to interpret keystrokes with the high bit (bit 8) set as
+# if the user had pressed the Esc key and whatever key remains after having the
+# high bit removed. For example, if the key pressed has an ASCII value of 0xf8,
+# then this is treated as if the user had pressed Esc then "x". This is because
+# the result of removing the high bit from 0xf8 is 0x78, which is the ASCII
+# character "x".
+# 
+
+
+# 3.195. mh_purge
+# 
+# Type: boolean
+# Default: no
+# 
+# When unset, NeoMutt will mimic mh's behavior and rename deleted messages to ,
+# <old file name> in mh folders instead of really deleting them. This leaves the
+# message on disk but makes programs reading the folder ignore it. If the
+# variable is set, the message files will simply be deleted.
+# 
+# This option is similar to $maildir_trash for Maildir folders.
+# 
+
+
+# 3.196. mh_seq_flagged
+# 
+# Type: string
+# Default: “flagged”
+# 
+# The name of the MH sequence used for flagged messages.
+# 
+
+
+# 3.197. mh_seq_replied
+# 
+# Type: string
+# Default: “replied”
+# 
+# The name of the MH sequence used to tag replied messages.
+# 
+
+
+# 3.198. mh_seq_unseen
+# 
+# Type: string
+# Default: “unseen”
+# 
+# The name of the MH sequence used for unseen messages.
+# 
+
+
+# 3.199. mime_forward
+# 
+# Type: quadoption
+# Default: no
+# 
+# When set, the message you are forwarding will be attached as a separate message
+# /rfc822 MIME part instead of included in the main body of the message. This is
+# useful for forwarding MIME messages so the receiver can properly view the
+# message as it was delivered to you. If you like to switch between MIME and not
+# MIME from mail to mail, set this variable to "ask-no" or "ask-yes".
+# 
+# Also see $forward_decode and $mime_forward_decode.
+# 
+set mime_forward=ask-yes
+
+
+# 3.200. mime_forward_decode
+# 
+# Type: boolean
+# Default: no
+# 
+# Controls the decoding of complex MIME messages into text/plain when forwarding
+# a message while $mime_forward is set. Otherwise $forward_decode is used
+# instead. 
+# 
+
+
+# 3.201. mime_forward_rest
+# 
+# Type: quadoption
+# Default: yes
+# 
+# When forwarding multiple attachments of a MIME message from the attachment
+# menu, attachments which can't be decoded in a reasonable manner will be
+# attached to the newly composed message if this option is set.
+# 
+
+
+# 3.202. mime_type_query_command
+# 
+# Type: command
+# Default: (empty)
+# 
+# This specifies a command to run, to determine the mime type of a new attachment
+# when composing a message. Unless $mime_type_query_first is set, this will only
+# be run if the attachment's extension is not found in the mime.types file.
+# 
+# The string may contain a "%s", which will be substituted with the attachment
+# filename. NeoMutt will add quotes around the string substituted for "%s"
+# automatically according to shell quoting rules, so you should avoid adding your
+# own. If no "%s" is found in the string, NeoMutt will append the attachment
+# filename to the end of the string.
+# 
+# The command should output a single line containing the attachment's mime type.
+# 
+# Suggested values are "xdg-mime query filetype" or "file -bi".
+# 
+
+
+# 3.203. mime_type_query_first
+# 
+# Type: boolean
+# Default: no
+# 
+# When set, the $mime_type_query_command will be run before the mime.types
+# lookup. 
+# 
+
+
+# 3.204. mix_entry_format
+# 
+# Type: string
+# Default: “%4n %c %-16s %a”
+# 
+# This variable describes the format of a remailer line on the mixmaster chain
+# selection screen. The following printf(3)-like sequences are supported:
+# 
+# ┌───┬───────────────────────────────────────────────────────────────┐ 
+# │%a │The remailer's e-mail address                                  │
+# ├───┼───────────────────────────────────────────────────────────────┤ 
+# │%c │Remailer capabilities                                          │
+# ├───┼───────────────────────────────────────────────────────────────┤ 
+# │%n │The running number on the menu                                 │
+# ├───┼───────────────────────────────────────────────────────────────┤ 
+# │%s │The remailer's short name                                      │
+# ├───┼───────────────────────────────────────────────────────────────┤ 
+# │%>X│right justify the rest of the string and pad with character "X"│
+# ├───┼───────────────────────────────────────────────────────────────┤ 
+# │%|X│pad to the end of the line with character "X"                  │
+# ├───┼───────────────────────────────────────────────────────────────┤ 
+# │%*X│soft-fill with character "X" as pad                            │
+# └───┴───────────────────────────────────────────────────────────────┘ 
+# 
+
+
+# 3.205. mixmaster
+# 
+# Type: command
+# Default: “mixmaster”
+# 
+# This variable contains the path to the Mixmaster binary on your system. It is
+# used with various sets of parameters to gather the list of known remailers, and
+# to finally send a message through the mixmaster chain.
+# 
+# Note: On Debian systems, this option is set by default to “mixmaster-filter” in
+# /etc/Muttrc. 
+# 
+set mixmaster="mixmaster-filter"
+
+
+# 3.206. move
+# 
+# Type: quadoption
+# Default: no
+# 
+# Controls whether or not NeoMutt will move read messages from your spool mailbox
+# to your $mbox mailbox, or as a result of a "mbox-hook" command.
+# 
+set move=no
+
+
+# 3.207. narrow_tree
+# 
+# Type: boolean
+# Default: no
+# 
+# This variable, when set, makes the thread tree narrower, allowing deeper
+# threads to fit on the screen.
+# 
+set narrow_tree=yes
+
+
+# 3.208. net_inc
+# 
+# Type: number
+# Default: 10
+# 
+# Operations that expect to transfer a large amount of data over the network will
+# update their progress every $net_inc kilobytes. If set to 0, no progress
+# messages will be displayed.
+# 
+# See also $read_inc, $write_inc and $net_inc.
+# 
+
+
+# 3.209. new_mail_command
+# 
+# Type: command
+# Default: (empty)
+# 
+# If set, NeoMutt will call this command after a new message is received. See the
+# $status_format documentation for the values that can be formatted into this
+# command. 
+# 
+
+
+# 3.210. news_cache_dir
+# 
+# Type: path
+# Default: “~/.neomutt”
+# 
+# This variable pointing to directory where NeoMutt 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.
+# 
+
+
+# 3.211. news_server
+# 
+# Type: string
+# Default: (empty)
+# 
+# This variable specifies domain name or address of NNTP server.
+# 
+# You can also specify username and an alternative port for each news server,
+# e.g. [[s]news://][username[:password]@]server[:port]
+# 
+# This option can also be set using the command line option "-g", the environment
+# variable $NNTPSERVER, or putting the server name in the file "/etc/nntpserver".
+# 
+
+
+# 3.212. newsgroups_charset
+# 
+# Type: string
+# Default: “utf-8”
+# 
+# Character set of newsgroups descriptions.
+# 
+
+
+# 3.213. 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:
+# 
+# ┌───────┬─────────────────┬───────────────────┐ 
+# │Expando│Description │Example            │
+# ├───────┼─────────────────┼───────────────────┤ 
+# │%a │Account url      │news:news.gmane.org│
+# ├───────┼─────────────────┼───────────────────┤ 
+# │%p │Port             │119                │
+# ├───────┼─────────────────┼───────────────────┤ 
+# │%P │Port if specified│10119              │
+# ├───────┼─────────────────┼───────────────────┤ 
+# │%s │News server name │news.gmane.org     │
+# ├───────┼─────────────────┼───────────────────┤ 
+# │%S │Url schema       │news               │
+# ├───────┼─────────────────┼───────────────────┤ 
+# │%u │Username         │username           │
+# └───────┴─────────────────┴───────────────────┘ 
+# 
+
+
+# 3.214. nm_db_limit
+# 
+# Type: number
+# Default: 0
+# 
+# This variable specifies the default limit used in notmuch queries.
+# 
+
+
+# 3.215. nm_default_url
+# 
+# Type: string
+# Default: (empty)
+# 
+# This variable specifies the default Notmuch database in format notmuch://
+# <absolute path>.
+# 
+#set nm_default_url="notmuch://$HOME/nmmail"
+
+
+# 3.216. nm_exclude_tags
+# 
+# Type: string
+# Default: (empty)
+# 
+# The messages tagged with these tags are excluded and not loaded from notmuch DB
+# to NeoMutt unless specified explicitly.
+# 
+
+
+# 3.217. nm_flagged_tag
+# 
+# Type: string
+# Default: “flagged”
+# 
+# This variable specifies notmuch tag which is used for flagged messages. The
+# variable is used to count flagged messages in DB and set the flagged flag when
+# modifying tags. All other NeoMutt commands use standard (e.g. maildir) flags.
+# 
+
+
+# 3.218. nm_open_timeout
+# 
+# Type: number
+# Default: 5
+# 
+# This variable specifies the timeout for database open in seconds.
+# 
+
+
+# 3.219. nm_query_type
+# 
+# Type: string
+# Default: “messages”
+# 
+# This variable specifies the default query type (threads or messages) used in
+# notmuch queries.
+# 
+#set nm_query_type="threads"
+
+
+# 3.220. nm_query_window_current_position
+# 
+# Type: number
+# Default: 0
+# 
+# This variable contains the position of the current search for window based
+# vfolder. 
+# 
+
+
+# 3.221. nm_query_window_current_search
+# 
+# Type: string
+# Default: (empty)
+# 
+# This variable contains the currently setup notmuch search for window based
+# vfolder. 
+# 
+
+
+# 3.222. nm_query_window_duration
+# 
+# Type: number
+# Default: 0
+# 
+# This variable sets the time duration of a windowed notmuch query. Accepted
+# values all non negative integers. A value of 0 disables the feature.
+# 
+#set nm_query_window_duration=2
+
+
+# 3.223. nm_query_window_enable
+# 
+# Type: boolean
+# Default: no
+# 
+# This variable enables windowed notmuch queries even if window duration is 0.
+# 
+#set nm_query_window_enable=yes
+
+
+# 3.224. nm_query_window_or_terms
+# 
+# Type: string
+# Default: (empty)
+# 
+# This variable contains additional notmuch search terms for messages to be shown
+# regardless of date.
+# 
+# Example: 
+# 
+# Using "notmuch://?query=tag:inbox" as the mailbox and "tag:flagged and
+# tag:unread" as the or terms, NeoMutt will produce a query window such as:
+# 
+# notmuch://?query=tag:inbox and (date:... or (tag:flagged and tag:unread))
+# 
+#set nm_query_window_or_terms="tag:unread and tag:flagged"
+
+
+# 3.225. nm_query_window_timebase
+# 
+# Type: string
+# Default: “week”
+# 
+# This variable sets the time base of a windowed notmuch query. Accepted values
+# are 'minute', 'hour', 'day', 'week', 'month', 'year'
+# 
+
+
+# 3.226. nm_record
+# 
+# Type: boolean
+# Default: no
+# 
+# This variable specifies whether, when writing a just-sent message to the
+# $record, the message should also be added to the notmuch DB. Replies inherit
+# the notmuch tags from the original message. See $nm_record_tags for how to
+# modify the set of notmuch tags assigned to sent messages written to the record.
+# 
+#set nm_record=yes
+
+
+# 3.227. nm_record_tags
+# 
+# Type: string
+# Default: (empty)
+# 
+# This variable specifies the notmuch tag modifications (addition, removal,
+# toggling) applied to messages added to the Neomutt record when $nm_record is
+# true. See the description of the <modify-labels> function for the syntax.
+# 
+#set nm_record_tags="-unread,reply,archive"
+
+
+# 3.228. nm_replied_tag
+# 
+# Type: string
+# Default: “replied”
+# 
+# This variable specifies notmuch tag which is used for replied messages. The
+# variable is used to set the replied flag when modifying tags. All other NeoMutt
+# commands use standard (e.g. maildir) flags.
+# 
+
+
+# 3.229. nm_unread_tag
+# 
+# Type: string
+# Default: “unread”
+# 
+# This variable specifies notmuch tag which is used for unread messages. The
+# variable is used to count unread messages in DB and set the unread flag when
+# modifiying tags. All other NeoMutt commands use standard (e.g. maildir) flags.
+# 
+
+
+# 3.230. nntp_authenticators
+# 
+# Type: string
+# Default: (empty)
+# 
+# This is a colon-delimited list of authentication methods NeoMutt may attempt to
+# use to log in to a news server, in the order NeoMutt 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) NeoMutt will try all available methods, in order from
+# most-secure to least-secure.
+# 
+# Example: 
+# 
+# set nntp_authenticators="digest-md5:user"
+# 
+# Note: NeoMutt will only fall back to other authentication methods if the
+# previous methods are unavailable. If a method is available but authentication
+# fails, NeoMutt will not connect to the IMAP server.
+# 
+
+
+# 3.231. 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.
+# 
+
+
+# 3.232. nntp_listgroup
+# 
+# Type: boolean
+# Default: yes
+# 
+# This variable controls whether or not existence of each article is checked when
+# newsgroup is entered.
+# 
+
+
+# 3.233. 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).
+# 
+
+
+# 3.234. nntp_pass
+# 
+# Type: string
+# Default: (empty)
+# 
+# Your password for NNTP account.
+# 
+
+
+# 3.235. 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, NeoMutt will recheck newsgroup on
+# each operation in index (stepping, read article, etc.).
+# 
+
+
+# 3.236. nntp_user
+# 
+# Type: string
+# Default: (empty)
+# 
+# Your login name on the NNTP server. If unset and NNTP server requires
+# authentication, NeoMutt will prompt you for your account name when you connect
+# to news server.
+# 
+
+
+# 3.237. pager
+# 
+# Type: command
+# Default: “builtin”
+# 
+# This variable specifies which pager you would like to use to view messages. The
+# value "builtin" means to use the built-in pager, otherwise this variable should
+# specify the pathname of the external pager you would like to use.
+# 
+# Using an external pager may have some disadvantages: Additional keystrokes are
+# necessary because you can't call NeoMutt functions directly from the pager, and
+# screen resizes cause lines longer than the screen width to be badly formatted
+# in the help menu.
+# 
+
+
+# 3.238. pager_context
+# 
+# Type: number
+# Default: 0
+# 
+# This variable controls the number of lines of context that are given when
+# displaying the next or previous page in the internal pager. By default, NeoMutt
+# will display the line after the last one on the screen at the top of the next
+# page (0 lines of context).
+# 
+# This variable also specifies the amount of context given for search results. If
+# positive, this many lines will be given before a match, if 0, the match will be
+# top-aligned. 
+# 
+set pager_context=2
+
+
+# 3.239. pager_format
+# 
+# Type: string
+# Default: “-%Z- %C/%m: %-20.20n   %s%*  -- (%P)”
+# 
+# This variable controls the format of the one-line message "status" displayed
+# before each message in either the internal or an external pager. The valid
+# sequences are listed in the $index_format section.
+# 
+set pager_format="<%a> %*  %i (%P)"
+
+
+# 3.240. pager_index_lines
+# 
+# Type: number
+# Default: 0
+# 
+# Determines the number of lines of a mini-index which is shown when in the
+# pager. The current message, unless near the top or bottom of the folder, will
+# be roughly one third of the way down this mini-index, giving the reader the
+# context of a few messages before and after the message. This is useful, for
+# example, to determine how many messages remain to be read in the current
+# thread. A value of 0 results in no index being shown. If the number of messages
+# in the current folder is less than $pager_index_lines, then the index will only
+# use as many lines as it needs.
+# 
+set pager_index_lines=$menu_context
+
+
+# 3.241. pager_read_delay
+# 
+# Type: number
+# Default: 0
+# 
+# Determines the number of seconds that must elapse after first opening a new
+# message in the pager before that message will be marked as read. A value of 0
+# results in the message being marked read unconditionally; for other values,
+# navigating to another message or exiting the pager before the timeout will
+# leave the message marked unread. This setting is ignored if $pager is not
+# builtin. 
+# 
+
+
+# 3.242. pager_skip_quoted_context
+# 
+# Type: number
+# Default: 0
+# 
+# Determines the number of lines of context to show before the unquoted text when
+# using the <skip-quoted> function. When set to a positive number at most that
+# many lines of the previous quote are displayed. If the previous quote is
+# shorter the whole quote is displayed.
+# 
+# The (now deprecated) skip_quoted_offset is an alias for this variable, and
+# should no longer be used.
+# 
+
+
+# 3.243. pager_stop
+# 
+# Type: boolean
+# Default: no
+# 
+# When set, the internal-pager will not move to the next message when you are at
+# the end of a message and invoke the <next-page> function.
+# 
+set pager_stop=yes
+
+
+# 3.244. pattern_format
+# 
+# Type: string
+# Default: “%2n %-15e  %d”
+# 
+# This variable describes the format of the "pattern completion" menu. The
+# following printf(3)-style sequences are understood:
+# 
+# ┌──┬────────────────────┐ 
+# │%d│pattern description │
+# ├──┼────────────────────┤ 
+# │%e│pattern expression  │
+# ├──┼────────────────────┤ 
+# │%n│index number        │
+# └──┴────────────────────┘ 
+# 
+
+
+# 3.245. pgp_auto_decode
+# 
+# Type: boolean
+# Default: no
+# 
+# If set, NeoMutt will automatically attempt to decrypt traditional PGP messages
+# whenever the user performs an operation which ordinarily would result in the
+# contents of the message being operated on. For example, if the user displays a
+# pgp-traditional message which has not been manually checked with the
+# <check-traditional-pgp> function, NeoMutt will automatically check the message
+# for traditional pgp.
+# 
+
+
+# 3.246. pgp_auto_inline
+# 
+# Type: boolean
+# Default: no
+# 
+# This option controls whether NeoMutt generates old-style inline (traditional)
+# PGP encrypted or signed messages under certain circumstances. This can be
+# overridden by use of the pgp menu, when inline is not required. The GPGME
+# backend does not support this option.
+# 
+# Note that NeoMutt might automatically use PGP/MIME for messages which consist
+# of more than a single MIME part. NeoMutt can be configured to ask before
+# sending PGP/MIME messages when inline (traditional) would not work.
+# 
+# Also see the $pgp_mime_auto variable.
+# 
+# Also note that using the old-style PGP message format is strongly deprecated.
+# (PGP only)
+# 
+
+
+# 3.247. pgp_check_exit
+# 
+# Type: boolean
+# Default: yes
+# 
+# If set, NeoMutt will check the exit code of the PGP subprocess when signing or
+# encrypting. A non-zero exit code means that the subprocess failed. (PGP only)
+# 
+
+
+# 3.248. pgp_check_gpg_decrypt_status_fd
+# 
+# Type: boolean
+# Default: yes
+# 
+# If set, NeoMutt will check the status file descriptor output of
+# $pgp_decrypt_command and $pgp_decode_command for GnuPG status codes indicating
+# successful decryption. This will check for the presence of DECRYPTION_OKAY,
+# absence of DECRYPTION_FAILED, and that all PLAINTEXT occurs between the
+# BEGIN_DECRYPTION and END_DECRYPTION status codes.
+# 
+# If unset, NeoMutt will instead match the status fd output against
+# $pgp_decryption_okay. (PGP only)
+# 
+
+
+# 3.249. pgp_clear_sign_command
+# 
+# Type: command
+# Default: (empty)
+# 
+# This format is used to create an old-style "clearsigned" PGP message. Note that
+# the use of this format is strongly deprecated.
+# 
+# This is a format string, see the $pgp_decode_command command for possible
+# printf(3)-like sequences. Note that in this case, %r expands to the search
+# string, which is a list of one or more quoted values such as email address,
+# name, or keyid. (PGP only)
+# 
+
+
+# 3.250. pgp_decode_command
+# 
+# Type: command
+# Default: (empty)
+# 
+# This format strings specifies a command which is used to decode application/pgp
+# attachments. 
+# 
+# The PGP command formats have their own set of printf(3)-like sequences:
+# 
+# ┌──┬──────────────────────────────────────────────────────────────────────────┐ 
+# │%a│The value of $pgp_sign_as if set, otherwise the value of $pgp_default_key.│
+# ├──┼──────────────────────────────────────────────────────────────────────────┤ 
+# │%f│Expands to the name of a file containing a message.                       │
+# ├──┼──────────────────────────────────────────────────────────────────────────┤ 
+# │%p│Expands to PGPPASSFD=0 when a pass phrase is needed, to an empty string   │
+# │ │otherwise. Note: This may be used with a %? construct.                    │
+# ├──┼──────────────────────────────────────────────────────────────────────────┤ 
+# │%r│One or more key IDs (or fingerprints if available).                       │
+# ├──┼──────────────────────────────────────────────────────────────────────────┤ 
+# │%s│Expands to the name of a file containing the signature part of a multipart│
+# │ │/signed attachment when verifying it.                                     │
+# └──┴──────────────────────────────────────────────────────────────────────────┘ 
+# 
+# For examples on how to configure these formats for the various versions of PGP
+# which are floating around, see the pgp and gpg sample configuration files in
+# the samples/ subdirectory which has been installed on your system alongside the
+# documentation. (PGP only)
+# 
+
+
+# 3.251. pgp_decrypt_command
+# 
+# Type: command
+# Default: (empty)
+# 
+# This command is used to decrypt a PGP encrypted message.
+# 
+# This is a format string, see the $pgp_decode_command command for possible
+# printf(3)-like sequences. (PGP only)
+# 
+# Note: When decrypting messages using gpg, a pinentry program needs to be
+# invoked unless the password is cached within gpg-agent. Currently, the
+# pinentry-tty program (usually distributed with gpg) isn't suitable for being
+# invoked by NeoMutt. You are encouraged to use a different pinentry-program when
+# running NeoMutt in order to avoid problems.
+# 
+# See also: https://github.com/neomutt/neomutt/issues/1014
+# 
+
+
+# 3.252. pgp_decryption_okay
+# 
+# Type: regular expression
+# Default: (empty)
+# 
+# If you assign text to this variable, then an encrypted PGP message is only
+# considered successfully decrypted if the output from $pgp_decrypt_command
+# contains the text. This is used to protect against a spoofed encrypted message,
+# with multipart/encrypted headers but containing a block that is not actually
+# encrypted. (e.g. simply signed and ascii armored text).
+# 
+# Note that if $pgp_check_gpg_decrypt_status_fd is set, this variable is ignored.
+# (PGP only)
+# 
+
+
+# 3.253. pgp_default_key
+# 
+# Type: string
+# Default: (empty)
+# 
+# This is the default key-pair to use for PGP operations. It will be used for
+# encryption (see $postpone_encrypt and $pgp_self_encrypt).
+# 
+# It will also be used for signing unless $pgp_sign_as is set.
+# 
+# The (now deprecated) pgp_self_encrypt_as is an alias for this variable, and
+# should no longer be used. (PGP only)
+# 
+
+
+# 3.254. pgp_encrypt_only_command
+# 
+# Type: command
+# Default: (empty)
+# 
+# This command is used to encrypt a body part without signing it.
+# 
+# This is a format string, see the $pgp_decode_command command for possible
+# printf(3)-like sequences. Note that in this case, %r expands to the search
+# string, which is a list of one or more quoted values such as email address,
+# name, or keyid. (PGP only)
+# 
+
+
+# 3.255. pgp_encrypt_sign_command
+# 
+# Type: command
+# Default: (empty)
+# 
+# This command is used to both sign and encrypt a body part.
+# 
+# This is a format string, see the $pgp_decode_command command for possible
+# printf(3)-like sequences. (PGP only)
+# 
+
+
+# 3.256. pgp_entry_format
+# 
+# Type: string
+# Default: “%4n %t%f %4l/0x%k %-4a %2c %u”
+# 
+# This variable allows you to customize the PGP key selection menu to your
+# personal taste. If $crypt_use_gpgme is set, then it applies to S/MIME key
+# selection menu also. This string is similar to $index_format, but has its own
+# set of printf(3)-like sequences:
+# 
+# ┌──────┬──────────────────────────────────────────────────────┐ 
+# │%a │Algorithm                                             │
+# ├──────┼──────────────────────────────────────────────────────┤ 
+# │%c │Capabilities                                          │
+# ├──────┼──────────────────────────────────────────────────────┤ 
+# │%f │Flags                                                 │
+# ├──────┼──────────────────────────────────────────────────────┤ 
+# │%k │Key id                                                │
+# ├──────┼──────────────────────────────────────────────────────┤ 
+# │%l │Key length                                            │
+# ├──────┼──────────────────────────────────────────────────────┤ 
+# │%n │Number                                                │
+# ├──────┼──────────────────────────────────────────────────────┤ 
+# │%p │Protocol                                              │
+# ├──────┼──────────────────────────────────────────────────────┤ 
+# │%t │Trust/validity of the key-uid association             │
+# ├──────┼──────────────────────────────────────────────────────┤ 
+# │%u │User id                                               │
+# ├──────┼──────────────────────────────────────────────────────┤ 
+# │%[<s>]│Date of the key where <s> is an strftime(3) expression│
+# └──────┴──────────────────────────────────────────────────────┘ 
+# 
+# (Crypto only) or (PGP only when GPGME disabled)
+# 
+
+
+# 3.257. pgp_export_command
+# 
+# Type: command
+# Default: (empty)
+# 
+# This command is used to export a public key from the user's key ring.
+# 
+# This is a format string, see the $pgp_decode_command command for possible
+# printf(3)-like sequences. (PGP only)
+# 
+
+
+# 3.258. pgp_get_keys_command
+# 
+# Type: command
+# Default: (empty)
+# 
+# This command is invoked whenever NeoMutt needs to fetch the public key
+# associated with an email address. Of the sequences supported by
+# $pgp_decode_command, %r is the only printf(3)-like sequence used with this
+# format. Note that in this case, %r expands to the email address, not the public
+# key ID (the key ID is unknown, which is why NeoMutt is invoking this command).
+# (PGP only)
+# 
+
+
+# 3.259. pgp_good_sign
+# 
+# Type: regular expression
+# Default: (empty)
+# 
+# If you assign a text to this variable, then a PGP signature is only considered
+# verified if the output from $pgp_verify_command contains the text. Use this
+# variable if the exit code from the command is 0 even for bad signatures. (PGP
+# only) 
+# 
+
+
+# 3.260. pgp_ignore_subkeys
+# 
+# Type: boolean
+# Default: yes
+# 
+# Setting this variable will cause NeoMutt to ignore OpenPGP subkeys. Instead,
+# the principal key will inherit the subkeys' capabilities. Unset this if you
+# want to play interesting key selection games. (PGP only)
+# 
+
+
+# 3.261. pgp_import_command
+# 
+# Type: command
+# Default: (empty)
+# 
+# This command is used to import a key from a message into the user's public key
+# ring. 
+# 
+# This is a format string, see the $pgp_decode_command command for possible
+# printf(3)-like sequences. (PGP only)
+# 
+
+
+# 3.262. pgp_list_pubring_command
+# 
+# Type: command
+# Default: (empty)
+# 
+# This command is used to list the public key ring's contents. The output format
+# must be analogous to the one used by
+# 
+# gpg --list-keys --with-colons --with-fingerprint
+# 
+# Note: gpg's fixed-list-mode option should not be used. It produces a different
+# date format which may result in NeoMutt showing incorrect key generation dates.
+# 
+# This is a format string, see the $pgp_decode_command command for possible
+# printf(3)-like sequences. (PGP only)
+# 
+
+
+# 3.263. pgp_list_secring_command
+# 
+# Type: command
+# Default: (empty)
+# 
+# This command is used to list the secret key ring's contents. The output format
+# must be analogous to the one used by:
+# 
+# gpg --list-keys --with-colons --with-fingerprint
+# 
+# Note: gpg's fixed-list-mode option should not be used. It produces a different
+# date format which may result in NeoMutt showing incorrect key generation dates.
+# 
+# This is a format string, see the $pgp_decode_command command for possible
+# printf(3)-like sequences. (PGP only)
+# 
+
+
+# 3.264. pgp_long_ids
+# 
+# Type: boolean
+# Default: yes
+# 
+# If set, use 64 bit PGP key IDs, if unset use the normal 32 bit key IDs. NOTE:
+# Internally, NeoMutt has transitioned to using fingerprints (or long key IDs as
+# a fallback). This option now only controls the display of key IDs in the key
+# selection menu and a few other places. (PGP only)
+# 
+
+
+# 3.265. pgp_mime_auto
+# 
+# Type: quadoption
+# Default: ask-yes
+# 
+# This option controls whether NeoMutt will prompt you for automatically sending
+# a (signed/encrypted) message using PGP/MIME when inline (traditional) fails
+# (for any reason).
+# 
+# Also note that using the old-style PGP message format is strongly deprecated.
+# (PGP only)
+# 
+
+
+# 3.266. pgp_reply_inline
+# 
+# Type: boolean
+# Default: no
+# 
+# Setting this variable will cause NeoMutt to always attempt to create an inline
+# (traditional) message when replying to a message which is PGP encrypted/signed
+# inline. This can be overridden by use of the pgp menu, when inline is not
+# required. This option does not automatically detect if the (replied-to) message
+# is inline; instead it relies on NeoMutt internals for previously checked/
+# flagged messages.
+# 
+# Note that NeoMutt might automatically use PGP/MIME for messages which consist
+# of more than a single MIME part. NeoMutt can be configured to ask before
+# sending PGP/MIME messages when inline (traditional) would not work.
+# 
+# Also see the $pgp_mime_auto variable.
+# 
+# Also note that using the old-style PGP message format is strongly deprecated.
+# (PGP only)
+# 
+
+
+# 3.267. pgp_retainable_sigs
+# 
+# Type: boolean
+# Default: no
+# 
+# If set, signed and encrypted messages will consist of nested multipart/signed
+# and multipart/encrypted body parts.
+# 
+# This is useful for applications like encrypted and signed mailing lists, where
+# the outer layer (multipart/encrypted) can be easily removed, while the inner
+# multipart/signed part is retained. (PGP only)
+# 
+set pgp_retainable_sigs=yes
+
+
+# 3.268. pgp_self_encrypt
+# 
+# Type: boolean
+# Default: yes
+# 
+# When set, PGP encrypted messages will also be encrypted using the key in
+# $pgp_default_key. (PGP only)
+# 
+
+
+# 3.269. pgp_show_unusable
+# 
+# Type: boolean
+# Default: yes
+# 
+# If set, NeoMutt will display non-usable keys on the PGP key selection menu.
+# This includes keys which have been revoked, have expired, or have been marked
+# as "disabled" by the user. (PGP only)
+# 
+set pgp_show_unusable=no
+
+
+# 3.270. pgp_sign_as
+# 
+# Type: string
+# Default: (empty)
+# 
+# If you have a different key pair to use for signing, you should set this to the
+# signing key. Most people will only need to set $pgp_default_key. It is
+# recommended that you use the keyid form to specify your key (e.g. 0x00112233).
+# (PGP only)
+# 
+set pgp_sign_as="0x9C9D6979AE941637"
+
+
+# 3.271. pgp_sign_command
+# 
+# Type: command
+# Default: (empty)
+# 
+# This command is used to create the detached PGP signature for a multipart/
+# signed PGP/MIME body part.
+# 
+# This is a format string, see the $pgp_decode_command command for possible
+# printf(3)-like sequences. (PGP only)
+# 
+
+
+# 3.272. pgp_sort_keys
+# 
+# Type: sort order
+# Default: address
+# 
+# Specifies how the entries in the pgp menu are sorted. The following are legal
+# values: 
+# 
+# ┌───────┬──────────────────────────────┐ 
+# │address│sort alphabetically by user id│
+# ├───────┼──────────────────────────────┤ 
+# │keyid │sort alphabetically by key id │
+# ├───────┼──────────────────────────────┤ 
+# │date │sort by key creation date     │
+# ├───────┼──────────────────────────────┤ 
+# │trust │sort by the trust of the key  │
+# └───────┴──────────────────────────────┘ 
+# 
+# If you prefer reverse order of the above values, prefix it with "reverse-".
+# (PGP only)
+# 
+
+
+# 3.273. pgp_strict_enc
+# 
+# Type: boolean
+# Default: yes
+# 
+# If set, NeoMutt will automatically encode PGP/MIME signed messages as
+# quoted-printable. Please note that unsetting this variable may lead to problems
+# with non-verifyable PGP signatures, so only change this if you know what you
+# are doing. (PGP only)
+# 
+
+
+# 3.274. pgp_timeout
+# 
+# Type: number (long)
+# Default: 300
+# 
+# The number of seconds after which a cached passphrase will expire if not used.
+# (PGP only)
+# 
+
+
+# 3.275. pgp_use_gpg_agent
+# 
+# Type: boolean
+# Default: yes
+# 
+# If set, NeoMutt expects a gpg-agent(1) process will handle private key
+# passphrase prompts. If unset, NeoMutt will prompt for the passphrase and pass
+# it via stdin to the pgp command.
+# 
+# Note that as of version 2.1, GnuPG automatically spawns an agent and requires
+# the agent be used for passphrase management. Since that version is increasingly
+# prevalent, this variable now defaults set.
+# 
+# NeoMutt works with a GUI or curses pinentry program. A TTY pinentry should not
+# be used.
+# 
+# If you are using an older version of GnuPG without an agent running, or another
+# encryption program without an agent, you will need to unset this variable. (PGP
+# only) 
+# 
+set pgp_use_gpg_agent=yes
+
+
+# 3.276. pgp_verify_command
+# 
+# Type: command
+# Default: (empty)
+# 
+# This command is used to verify PGP signatures.
+# 
+# This is a format string, see the $pgp_decode_command command for possible
+# printf(3)-like sequences. (PGP only)
+# 
+
+
+# 3.277. pgp_verify_key_command
+# 
+# Type: command
+# Default: (empty)
+# 
+# This command is used to verify key information from the key selection menu.
+# 
+# This is a format string, see the $pgp_decode_command command for possible
+# printf(3)-like sequences. (PGP only)
+# 
+
+
+# 3.278. pipe_decode
+# 
+# Type: boolean
+# Default: no
+# 
+# Used in connection with the <pipe-message> function. When unset, NeoMutt will
+# pipe the messages without any preprocessing. When set, NeoMutt will attempt to
+# decode the messages first.
+# 
+# Also see $pipe_decode_weed, which controls whether headers will be weeded when
+# this is set.
+# 
+
+
+# 3.279. pipe_decode_weed
+# 
+# Type: boolean
+# Default: yes
+# 
+# For <pipe-message>, when $pipe_decode is set, this further controls whether
+# NeoMutt will weed headers.
+# 
+
+
+# 3.280. pipe_sep
+# 
+# Type: string
+# Default: “n”
+# 
+# The separator to add between messages when piping a list of tagged messages to
+# an external Unix command.
+# 
+
+
+# 3.281. pipe_split
+# 
+# Type: boolean
+# Default: no
+# 
+# Used in connection with the <pipe-message> function following <tag-prefix>. If
+# this variable is unset, when piping a list of tagged messages NeoMutt will
+# concatenate the messages and will pipe them all concatenated. When set, NeoMutt
+# will pipe the messages one by one. In both cases the messages are piped in the
+# current sorted order, and the $pipe_sep separator is added after each message.
+# 
+
+
+# 3.282. pop_auth_try_all
+# 
+# Type: boolean
+# Default: yes
+# 
+# If set, NeoMutt will try all available authentication methods. When unset,
+# NeoMutt will only fall back to other authentication methods if the previous
+# methods are unavailable. If a method is available but authentication fails,
+# NeoMutt will not connect to the POP server.
+# 
+
+
+# 3.283. pop_authenticators
+# 
+# Type: string list
+# Default: (empty)
+# 
+# This is a colon-separated list of authentication methods NeoMutt may attempt to
+# use to log in to an POP server, in the order NeoMutt should try them.
+# Authentication methods are either "user", "apop" or any SASL mechanism, e.g.
+# "digest-md5", "gssapi" or "cram-md5". This option is case-insensitive. If this
+# option is unset (the default) NeoMutt will try all available methods, in order
+# from most-secure to least-secure.
+# 
+# Example: 
+# 
+# set pop_authenticators="digest-md5:apop:user"
+# 
+
+
+# 3.284. pop_check_interval
+# 
+# Type: number
+# Default: 60
+# 
+# This variable configures how often (in seconds) NeoMutt should look for new
+# mail in the currently selected mailbox if it is a POP mailbox.
+# 
+
+
+# 3.285. pop_delete
+# 
+# Type: quadoption
+# Default: ask-no
+# 
+# If set, NeoMutt will delete successfully downloaded messages from the POP
+# server when using the <fetch-mail> function. When unset, NeoMutt will download
+# messages but also leave them on the POP server.
+# 
+
+
+# 3.286. pop_host
+# 
+# Type: string
+# Default: (empty)
+# 
+# The name of your POP server for the <fetch-mail> function. You can also specify
+# an alternative port, username and password, i.e.:
+# 
+# [pop[s]://][username[:password]@]popserver[:port] 
+# 
+# where "[...]" denotes an optional part.
+# 
+
+
+# 3.287. pop_last
+# 
+# Type: boolean
+# Default: no
+# 
+# If this variable is set, NeoMutt will try to use the "LAST" POP command for
+# retrieving only unread messages from the POP server when using the <fetch-mail>
+# function. 
+# 
+
+
+# 3.288. pop_oauth_refresh_command
+# 
+# Type: command
+# Default: (empty)
+# 
+# The command to run to generate an OAUTH refresh token for authorizing your
+# connection to your POP server. This command will be run on every connection
+# attempt that uses the OAUTHBEARER authentication mechanism. See "oauth" for
+# details. 
+# 
+
+
+# 3.289. pop_pass
+# 
+# Type: string
+# Default: (empty)
+# 
+# Specifies the password for your POP account. If unset, NeoMutt will prompt you
+# for your password when you open a POP mailbox.
+# 
+# Warning: you should only use this option when you are on a fairly secure
+# machine, because the superuser can read your neomuttrc even if you are the only
+# one who can read the file.
+# 
+
+
+# 3.290. pop_reconnect
+# 
+# Type: quadoption
+# Default: ask-yes
+# 
+# Controls whether or not NeoMutt will try to reconnect to the POP server if the
+# connection is lost.
+# 
+
+
+# 3.291. pop_user
+# 
+# Type: string
+# Default: (empty)
+# 
+# Your login name on the POP server.
+# 
+# This variable defaults to your user name on the local machine.
+# 
+
+
+# 3.292. post_indent_string
+# 
+# Type: string
+# Default: (empty)
+# 
+# Similar to the $attribution variable, NeoMutt will append this string after the
+# inclusion of a message which is being replied to.
+# 
+
+
+# 3.293. post_moderated
+# 
+# Type: quadoption
+# Default: ask-yes
+# 
+# If set to yes, NeoMutt 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.
+# 
+
+
+# 3.294. postpone
+# 
+# Type: quadoption
+# Default: ask-yes
+# 
+# Controls whether or not messages are saved in the $postponed mailbox when you
+# elect not to send immediately. If set to ask-yes or ask-no, you will be
+# prompted with "Save (postpone) draft message?" when quitting from the "compose"
+# screen. 
+# 
+# Also see the $recall variable.
+# 
+
+
+# 3.295. postpone_encrypt
+# 
+# Type: boolean
+# Default: no
+# 
+# When set, postponed messages that are marked for encryption will be
+# self-encrypted. NeoMutt will first try to encrypt using the value specified in
+# $pgp_default_key or $smime_default_key. If those are not set, it will try the
+# deprecated $postpone_encrypt_as. (Crypto only)
+# 
+
+
+# 3.296. postpone_encrypt_as
+# 
+# Type: string
+# Default: (empty)
+# 
+# This is a deprecated fall-back variable for $postpone_encrypt. Please use
+# $pgp_default_key or $smime_default_key. (Crypto only)
+# 
+
+
+# 3.297. postponed
+# 
+# Type: mailbox
+# Default: “~/postponed”
+# 
+# NeoMutt allows you to indefinitely "postpone sending a message" which you are
+# editing. When you choose to postpone a message, NeoMutt saves it in the mailbox
+# specified by this variable.
+# 
+# Also see the $postpone variable.
+# 
+set postponed="=drafts"
+
+
+# 3.298. preconnect
+# 
+# Type: string
+# Default: (empty)
+# 
+# If set, a shell command to be executed if NeoMutt fails to establish a
+# connection to the server. This is useful for setting up secure connections,
+# e.g. with ssh(1). If the command returns a nonzero status, NeoMutt gives up
+# opening the server. Example:
+# 
+# set preconnect="ssh -f -q -L 1234:mailhost.net:143 mailhost.net sleep 20 < /dev/null > /dev/null"
+# 
+# Mailbox "foo" on "mailhost.net" can now be reached as "{localhost:1234}foo".
+# 
+# Note: For this example to work, you must be able to log in to the remote
+# machine without having to enter a password.
+# 
+
+
+# 3.299. preferred_languages
+# 
+# Type: string list
+# Default: (empty)
+# 
+# This variable specifies a list of comma-separated languages. RFC8255 : user
+# preferred languages to be searched in parts and display. Example:
+# 
+# set preferred_languages="en,fr,de"
+# 
+
+
+# 3.300. print
+# 
+# Type: quadoption
+# Default: ask-no
+# 
+# Controls whether or not NeoMutt really prints messages. This is set to "ask-no"
+# by default, because some people accidentally hit "p" often.
+# 
+
+
+# 3.301. print_command
+# 
+# Type: command
+# Default: “lpr”
+# 
+# This specifies the command pipe that should be used to print messages.
+# 
+set print_command="muttprint"
+
+
+# 3.302. print_decode
+# 
+# Type: boolean
+# Default: yes
+# 
+# Used in connection with the <print-message> function. If this option is set,
+# the message is decoded before it is passed to the external command specified by
+# $print_command. If this option is unset, no processing will be applied to the
+# message when printing it. The latter setting may be useful if you are using
+# some advanced printer filter which is able to properly format e-mail messages
+# for printing.
+# 
+# Also see $print_decode_weed, which controls whether headers will be weeded when
+# this is set.
+# 
+
+
+# 3.303. print_decode_weed
+# 
+# Type: boolean
+# Default: yes
+# 
+# For <print-message>, when $print_decode is set, this further controls whether
+# NeoMutt will weed headers.
+# 
+
+
+# 3.304. print_split
+# 
+# Type: boolean
+# Default: no
+# 
+# Used in connection with the <print-message> function. If this option is set,
+# the command specified by $print_command is executed once for each message which
+# is to be printed. If this option is unset, the command specified by
+# $print_command is executed only once, and all the messages are concatenated,
+# with a form feed as the message separator.
+# 
+# Those who use the enscript(1) program's mail-printing mode will most likely
+# want to set this option.
+# 
+set print_split=yes
+
+
+# 3.305. prompt_after
+# 
+# Type: boolean
+# Default: yes
+# 
+# If you use an external $pager, setting this variable will cause NeoMutt to
+# prompt you for a command when the pager exits rather than returning to the
+# index menu. If unset, NeoMutt will return to the index menu when the external
+# pager exits.
+# 
+
+
+# 3.306. query_command
+# 
+# Type: command
+# Default: (empty)
+# 
+# This specifies the command NeoMutt will use to make external address queries.
+# The string may contain a "%s", which will be substituted with the query string
+# the user types. NeoMutt will add quotes around the string substituted for "%s"
+# automatically according to shell quoting rules, so you should avoid adding your
+# own. If no "%s" is found in the string, NeoMutt will append the user's query to
+# the end of the string. See "query" (https://neomutt.org/guide/
+# advancedusage.html#query) for more information.
+# 
+set query_command="lbdbq"
+
+
+# 3.307. query_format
+# 
+# Type: string
+# Default: “%3c %t %-25.25n %-25.25a | %e”
+# 
+# This variable describes the format of the "query" menu. The following printf(3)
+# -style sequences are understood:
+# 
+# ┌───┬─┬─────────────────────────────────────────────────────┐ 
+# │%a │ │Destination address                                  │
+# ├───┼─┼─────────────────────────────────────────────────────┤ 
+# │%c │ │Current entry number                                 │
+# ├───┼─┼─────────────────────────────────────────────────────┤ 
+# │%e │*│Extra information                                    │
+# ├───┼─┼─────────────────────────────────────────────────────┤ 
+# │%n │ │Destination name                                     │
+# ├───┼─┼─────────────────────────────────────────────────────┤ 
+# │%t │ │"*" if current entry is tagged, a space otherwise    │
+# ├───┼─┼─────────────────────────────────────────────────────┤ 
+# │%>X│ │Right justify the rest of the string and pad with "X"│
+# ├───┼─┼─────────────────────────────────────────────────────┤ 
+# │%|X│ │Pad to the end of the line with "X"                  │
+# ├───┼─┼─────────────────────────────────────────────────────┤ 
+# │%*X│ │Soft-fill with character "X" as pad                  │
+# └───┴─┴─────────────────────────────────────────────────────┘ 
+# 
+# For an explanation of "soft-fill", see the $index_format documentation.
+# 
+# * = can be optionally printed if nonzero, see the $status_format documentation.
+# 
+
+
+# 3.308. quit
+# 
+# Type: quadoption
+# Default: yes
+# 
+# This variable controls whether "quit" and "exit" actually quit from NeoMutt. If
+# this option is set, they do quit, if it is unset, they have no effect, and if
+# it is set to ask-yes or ask-no, you are prompted for confirmation when you try
+# to quit.
+# 
+
+
+# 3.309. quote_regex
+# 
+# Type: regular expression
+# Default: “^([ t]*[|>:}#])+”
+# 
+# A regular expression used in the internal pager to determine quoted sections of
+# text in the body of a message. Quoted text may be filtered out using the
+# <toggle-quoted> command, or colored according to the "color quoted" family of
+# directives. 
+# 
+# Higher levels of quoting may be colored differently ("color quoted1", "color
+# quoted2", etc.). The quoting level is determined by removing the last character
+# from the matched text and recursively reapplying the regular expression until
+# it fails to produce a match.
+# 
+# Match detection may be overridden by the $smileys regular expression.
+# 
+
+
+# 3.310. read_inc
+# 
+# Type: number
+# Default: 10
+# 
+# If set to a value greater than 0, NeoMutt will display which message it is
+# currently on when reading a mailbox or when performing search actions such as
+# search and limit. The message is printed after this many messages have been
+# read or searched (e.g., if set to 25, NeoMutt will print a message when it is
+# at message 25, and then again when it gets to message 50). This variable is
+# meant to indicate progress when reading or searching large mailboxes which may
+# take some time. When set to 0, only a single message will appear before the
+# reading the mailbox.
+# 
+# Also see the $write_inc, $net_inc and $time_inc variables and the "tuning"
+# section of the manual for performance considerations.
+# 
+
+
+# 3.311. read_only
+# 
+# Type: boolean
+# Default: no
+# 
+# If set, all folders are opened in read-only mode.
+# 
+
+
+# 3.312. real_name
+# 
+# Type: string
+# Default: (empty)
+# 
+# This variable specifies what "real" or "personal" name should be used when
+# sending messages.
+# 
+# If not specified, then the user's "real name" will be read from /etc/passwd.
+# This option will not be used, if "$from" is set.
+# 
+
+
+# 3.313. recall
+# 
+# Type: quadoption
+# Default: ask-yes
+# 
+# Controls whether or not NeoMutt recalls postponed messages when composing a new
+# message. 
+# 
+# Setting this variable to yes is not generally useful, and thus not recommended.
+# Note that the <recall-message> function can be used to manually recall
+# postponed messages.
+# 
+# Also see $postponed variable.
+# 
+set recall=no
+
+
+# 3.314. record
+# 
+# Type: mailbox
+# Default: “~/sent”
+# 
+# This specifies the file into which your outgoing messages should be appended.
+# (This is meant as the primary method for saving a copy of your messages, but
+# another way to do this is using the "my_hdr" command to create a "Bcc:" field
+# with your email address in it.)
+# 
+# The value of $record is overridden by the $force_name and $save_name variables,
+# and the "fcc-hook" command. Also see $copy and $write_bcc.
+# 
+set record="=store"
+
+
+# 3.315. reflow_space_quotes
+# 
+# Type: boolean
+# Default: yes
+# 
+# This option controls how quotes from format=flowed messages are displayed in
+# the pager and when replying (with $text_flowed unset). When set, this option
+# adds spaces after each level of quote marks, turning ">>>foo" into "> > > foo".
+# 
+# Note: If $reflow_text is unset, this option has no effect. Also, this option
+# does not affect replies when $text_flowed is set.
+# 
+
+
+# 3.316. reflow_text
+# 
+# Type: boolean
+# Default: yes
+# 
+# When set, NeoMutt will reformat paragraphs in text/plain parts marked format=
+# flowed. If unset, NeoMutt will display paragraphs unaltered from how they
+# appear in the message body. See RFC3676 for details on the format=flowed
+# format. 
+# 
+# Also see $reflow_wrap, and $wrap.
+# 
+
+
+# 3.317. reflow_wrap
+# 
+# Type: number
+# Default: 78
+# 
+# This variable controls the maximum paragraph width when reformatting text/plain
+# parts when $reflow_text is set. When the value is 0, paragraphs will be wrapped
+# at the terminal's right margin. A positive value sets the paragraph width
+# relative to the left margin. A negative value set the paragraph width relative
+# to the right margin.
+# 
+# Also see $wrap.
+# 
+set reflow_wrap=-10
+
+
+# 3.318. reply_regex
+# 
+# Type: regular expression
+# Default: “^((re|aw|sv)([[0-9]+])*:[ t]*)*”
+# 
+# A regular expression used to recognize reply messages when threading and
+# replying. The default value corresponds to the English "Re:", the German "Aw:"
+# and the Swedish "Sv:".
+# 
+
+
+# 3.319. reply_self
+# 
+# Type: boolean
+# Default: no
+# 
+# If unset and you are replying to a message sent by you, NeoMutt will assume
+# that you want to reply to the recipients of that message rather than to
+# yourself. 
+# 
+# Also see the "alternates" command.
+# 
+
+
+# 3.320. reply_to
+# 
+# Type: quadoption
+# Default: ask-yes
+# 
+# If set, when replying to a message, NeoMutt will use the address listed in the
+# Reply-to: header as the recipient of the reply. If unset, it will use the
+# address in the From: header field instead. This option is useful for reading a
+# mailing list that sets the Reply-To: header field to the list address and you
+# want to send a private message to the author of a message.
+# 
+
+
+# 3.321. reply_with_xorig
+# 
+# Type: boolean
+# Default: no
+# 
+# This variable provides a toggle. When active, the From: header will be
+# extracted from the current mail's 'X-Original-To:' header. This setting does
+# not have precedence over "reverse_real_name".
+# 
+# Assuming 'fast_reply' is disabled, this option will prompt the user with a
+# prefilled From: header.
+# 
+
+
+# 3.322. resolve
+# 
+# Type: boolean
+# Default: yes
+# 
+# When set, the cursor will be automatically advanced to the next (possibly
+# undeleted) message whenever a command that modifies the current message is
+# executed. 
+# 
+
+
+# 3.323. resume_draft_files
+# 
+# Type: boolean
+# Default: no
+# 
+# If set, draft files (specified by -H on the command line) are processed
+# similarly to when resuming a postponed message. Recipients are not prompted
+# for; send-hooks are not evaluated; no alias expansion takes place; user-defined
+# headers and signatures are not added to the message.
+# 
+
+
+# 3.324. resume_edited_draft_files
+# 
+# Type: boolean
+# Default: yes
+# 
+# If set, draft files previously edited (via -E -H on the command line) will have
+# $resume_draft_files automatically set when they are used as a draft file again.
+# 
+# The first time a draft file is saved, NeoMutt will add a header,
+# X-Mutt-Resume-Draft to the saved file. The next time the draft file is read in,
+# if NeoMutt sees the header, it will set $resume_draft_files.
+# 
+# This option is designed to prevent multiple signatures, user-defined headers,
+# and other processing effects from being made multiple times to the draft file.
+# 
+
+
+# 3.325. reverse_alias
+# 
+# Type: boolean
+# Default: no
+# 
+# This variable controls whether or not NeoMutt will display the "personal" name
+# from your aliases in the index menu if it finds an alias that matches the
+# message's sender. For example, if you have the following alias:
+# 
+# alias juser abd30425@somewhere.net (Joe User)
+# 
+# and then you receive mail which contains the following header:
+# 
+# From: abd30425@somewhere.net
+# 
+# It would be displayed in the index menu as "Joe User" instead of
+# "abd30425@somewhere.net." This is useful when the person's e-mail address is
+# not human friendly.
+# 
+
+
+# 3.326. reverse_name
+# 
+# Type: boolean
+# Default: no
+# 
+# It may sometimes arrive that you receive mail to a certain machine, move the
+# messages to another machine, and reply to some the messages from there. If this
+# variable is set, the default From: line of the reply messages is built using
+# the address where you received the messages you are replying to if that address
+# matches your "alternates". If the variable is unset, or the address that would
+# be used doesn't match your "alternates", the From: line will use your address
+# on the current machine.
+# 
+# Also see the "alternates" command and $reverse_real_name.
+# 
+set reverse_name=yes
+
+
+# 3.327. reverse_real_name
+# 
+# Type: boolean
+# Default: yes
+# 
+# This variable fine-tunes the behavior of the $reverse_name feature.
+# 
+# When it is unset, NeoMutt will remove the real name part of a matching address.
+# This allows the use of the email address without having to also use what the
+# sender put in the real name field.
+# 
+# When it is set, NeoMutt will use the matching address as-is.
+# 
+# In either case, a missing real name will be filled in afterwards using the
+# value of $real_name.
+# 
+
+
+# 3.328. rfc2047_parameters
+# 
+# Type: boolean
+# Default: no
+# 
+# When this variable is set, NeoMutt will decode RFC2047-encoded MIME parameters.
+# You want to set this variable when NeoMutt suggests you to save attachments to
+# files named like:
+# 
+# =?iso-8859-1?Q?file=5F=E4=5F991116=2Ezip?= 
+# =?utf-8?Q?z=C4=99ta.png?= 
+# 
+# When this variable is set interactively, the change won't be active until you
+# change folders.
+# 
+# Note that this use of RFC2047's encoding is explicitly prohibited by the
+# standard, but nevertheless encountered in the wild and produced by, e.g.,
+# Outlook. 
+# 
+# Also note that setting this parameter will not have the effect that NeoMutt
+# generates this kind of encoding. Instead, NeoMutt will unconditionally use the
+# encoding specified in RFC2231.
+# 
+set rfc2047_parameters=yes
+
+
+# 3.329. save_address
+# 
+# Type: boolean
+# Default: no
+# 
+# If set, NeoMutt will take the sender's full address when choosing a default
+# folder for saving a mail. If $save_name or $force_name is set too, the
+# selection of the Fcc folder will be changed as well.
+# 
+
+
+# 3.330. save_empty
+# 
+# Type: boolean
+# Default: yes
+# 
+# When unset, mailboxes which contain no saved messages will be removed when
+# closed (the exception is $spool_file which is never removed). If set, mailboxes
+# are never removed.
+# 
+# Note: This only applies to mbox and MMDF folders, NeoMutt does not delete MH
+# and Maildir directories.
+# 
+
+
+# 3.331. save_history
+# 
+# Type: number
+# Default: 0
+# 
+# This variable controls the size of the history (per category) saved in the
+# $history_file file.
+# 
+set save_history=100
+
+
+# 3.332. save_name
+# 
+# Type: boolean
+# Default: no
+# 
+# This variable controls how copies of outgoing messages are saved. When set, a
+# check is made to see if a mailbox specified by the recipient address exists
+# (this is done by searching for a mailbox in the $folder directory with the
+# username part of the recipient address). If the mailbox exists, the outgoing
+# message will be saved to that mailbox, otherwise the message is saved to the
+# $record mailbox.
+# 
+# Also see the $force_name variable.
+# 
+
+
+# 3.333. save_unsubscribed
+# 
+# Type: boolean
+# Default: no
+# 
+# When set, info about unsubscribed newsgroups will be saved into "newsrc" file
+# and into cache.
+# 
+
+
+# 3.334. score
+# 
+# Type: boolean
+# Default: yes
+# 
+# When this variable is unset, scoring is turned off. This can be useful to
+# selectively disable scoring for certain folders when the
+# $score_threshold_delete variable and related are used.
+# 
+
+
+# 3.335. score_threshold_delete
+# 
+# Type: number
+# Default: -1
+# 
+# Messages which have been assigned a score equal to or lower than the value of
+# this variable are automatically marked for deletion by NeoMutt. Since NeoMutt
+# scores are always greater than or equal to zero, the default setting of this
+# variable will never mark a message for deletion.
+# 
+
+
+# 3.336. score_threshold_flag
+# 
+# Type: number
+# Default: 9999
+# 
+# Messages which have been assigned a score greater than or equal to this
+# variable's value are automatically marked "flagged".
+# 
+
+
+# 3.337. score_threshold_read
+# 
+# Type: number
+# Default: -1
+# 
+# Messages which have been assigned a score equal to or lower than the value of
+# this variable are automatically marked as read by NeoMutt. Since NeoMutt scores
+# are always greater than or equal to zero, the default setting of this variable
+# will never mark a message read.
+# 
+
+
+# 3.338. search_context
+# 
+# Type: number
+# Default: 0
+# 
+# For the pager, this variable specifies the number of lines shown before search
+# results. By default, search results will be top-aligned.
+# 
+set search_context=5
+
+
+# 3.339. send_charset
+# 
+# Type: string
+# Default: “us-ascii:iso-8859-1:utf-8”
+# 
+# A colon-delimited list of character sets for outgoing messages. NeoMutt will
+# use the first character set into which the text can be converted exactly. If
+# your $charset is not "iso-8859-1" and recipients may not understand "UTF-8", it
+# is advisable to include in the list an appropriate widely used standard
+# character set (such as "iso-8859-2", "koi8-r" or "iso-2022-jp") either instead
+# of or after "iso-8859-1".
+# 
+# In case the text can't be converted into one of these exactly, NeoMutt uses
+# $charset as a fallback.
+# 
+set send_charset="utf-8"
+
+
+# 3.340. sendmail
+# 
+# Type: command
+# Default: “/usr/sbin/sendmail -oem -oi”
+# 
+# Specifies the program and arguments used to deliver mail sent by NeoMutt.
+# NeoMutt expects that the specified program interprets additional arguments as
+# recipient addresses. NeoMutt appends all recipients after adding a -- delimiter
+# (if not already present). Additional flags, such as for $use_8bit_mime,
+# $use_envelope_from, $dsn_notify, or $dsn_return will be added before the
+# delimiter. 
+# 
+# See also: $write_bcc.
+# 
+set sendmail="$my_confdir/sendmail"
+
+
+# 3.341. sendmail_wait
+# 
+# Type: number
+# Default: 0
+# 
+# Specifies the number of seconds to wait for the $sendmail process to finish
+# before giving up and putting delivery in the background.
+# 
+# NeoMutt interprets the value of this variable as follows:
+# 
+# ┌──┬──────────────────────────────────────────────────────────────────┐ 
+# │>0│number of seconds to wait for sendmail to finish before continuing│
+# ├──┼──────────────────────────────────────────────────────────────────┤ 
+# │0 │wait forever for sendmail to finish                               │
+# ├──┼──────────────────────────────────────────────────────────────────┤ 
+# │<0│always put sendmail in the background without waiting             │
+# └──┴──────────────────────────────────────────────────────────────────┘ 
+# 
+# Note that if you specify a value other than 0, the output of the child process
+# will be put in a temporary file. If there is some error, you will be informed
+# as to where to find the output.
+# 
+
+
+# 3.342. shell
+# 
+# Type: command
+# Default: “/bin/sh”
+# 
+# Command to use when spawning a subshell. If not specified, then the user's
+# login shell from /etc/passwd is used.
+# 
+
+
+# 3.343. show_multipart_alternative
+# 
+# Type: string
+# Default: (empty)
+# 
+# When set to info, the multipart/alternative information is shown. When set to
+# inline, all of the alternatives are displayed. When not set, the default
+# behavior is to show only the chosen alternative.
+# 
+
+
+# 3.344. 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.
+# 
+
+
+# 3.345. show_only_unread
+# 
+# Type: boolean
+# Default: no
+# 
+# If set, only subscribed newsgroups that contain unread articles will be
+# displayed in browser.
+# 
+
+
+# 3.346. sidebar_component_depth
+# 
+# Type: number
+# Default: 0
+# 
+# By default the sidebar will show the mailbox's path, relative to the $folder
+# variable. This specifies the number of parent directories to hide from display
+# in the sidebar. For example: If a maildir is normally displayed in the sidebar
+# as dir1/dir2/dir3/maildir, setting sidebar_component_depth=2 will display it as
+# dir3/maildir, having truncated the 2 highest directories.
+# 
+# See also: $sidebar_short_path
+# 
+
+
+# 3.347. sidebar_delim_chars
+# 
+# Type: string
+# Default: “/.”
+# 
+# This contains the list of characters which you would like to treat as folder
+# separators for displaying paths in the sidebar.
+# 
+# Local mail is often arranged in directories: 'dir1/dir2/mailbox'.
+# 
+# set sidebar_delim_chars='/'
+# 
+# IMAP mailboxes are often named: 'folder1.folder2.mailbox'.
+# 
+# set sidebar_delim_chars='.'
+# 
+# See also: $sidebar_short_path, $sidebar_folder_indent, $sidebar_indent_string.
+# 
+
+
+# 3.348. sidebar_divider_char
+# 
+# Type: string
+# Default: (empty)
+# 
+# This specifies the characters to be drawn between the sidebar (when visible)
+# and the other NeoMutt panels. ASCII and Unicode line-drawing characters are
+# supported. 
+# 
+set sidebar_divider_char=" "
+
+
+# 3.349. sidebar_folder_indent
+# 
+# Type: boolean
+# Default: no
+# 
+# Set this to indent mailboxes in the sidebar.
+# 
+# See also: $sidebar_short_path, $sidebar_indent_string, $sidebar_delim_chars.
+# 
+set sidebar_folder_indent=yes
+
+
+# 3.350. sidebar_format
+# 
+# Type: string
+# Default: “%D%*  %n”
+# 
+# This variable allows you to customize the sidebar display. This string is
+# similar to $index_format, but has its own set of printf(3)-like sequences:
+# 
+# ┌───┬──┬──────────────────────────────────────────────────────────────────────┐ 
+# │%B │  │Name of the mailbox                                                   │
+# ├───┼──┼──────────────────────────────────────────────────────────────────────┤ 
+# │%d │* │Number of deleted messages in the mailbox                             │
+# │ │@ │                                                                      │
+# ├───┼──┼──────────────────────────────────────────────────────────────────────┤ 
+# │%D │  │Descriptive name of the mailbox                                       │
+# ├───┼──┼──────────────────────────────────────────────────────────────────────┤ 
+# │%F │* │Number of flagged messages in the mailbox                             │
+# ├───┼──┼──────────────────────────────────────────────────────────────────────┤ 
+# │%L │* │Number of messages after limiting                                     │
+# │ │@ │                                                                      │
+# ├───┼──┼──────────────────────────────────────────────────────────────────────┤ 
+# │%n │  │"N" if mailbox has new mail, ' ' (space) otherwise                    │
+# ├───┼──┼──────────────────────────────────────────────────────────────────────┤ 
+# │%N │* │Number of unread messages in the mailbox (seen or unseen)             │
+# ├───┼──┼──────────────────────────────────────────────────────────────────────┤ 
+# │%o │* │Number of old messages in the mailbox (unread, seen)                  │
+# ├───┼──┼──────────────────────────────────────────────────────────────────────┤ 
+# │%r │* │Number of read messages in the mailbox (read, seen)                   │
+# ├───┼──┼──────────────────────────────────────────────────────────────────────┤ 
+# │%S │* │Size of mailbox (total number of messages)                            │
+# ├───┼──┼──────────────────────────────────────────────────────────────────────┤ 
+# │%t │* │Number of tagged messages in the mailbox                              │
+# │ │@ │                                                                      │
+# ├───┼──┼──────────────────────────────────────────────────────────────────────┤ 
+# │%Z │* │Number of new messages in the mailbox (unread, unseen)                │
+# ├───┼──┼──────────────────────────────────────────────────────────────────────┤ 
+# │%! │  │"!" : one flagged message; "!!" : two flagged messages; "n!" : n      │
+# │ │  │flagged messages (for n > 2). Otherwise prints nothing.               │
+# ├───┼──┼──────────────────────────────────────────────────────────────────────┤ 
+# │%>X│ │Right justify the rest of the string and pad with "X"                 │
+# ├───┼──┼──────────────────────────────────────────────────────────────────────┤ 
+# │%|X│ │Pad to the end of the line with "X"                                   │
+# ├───┼──┼──────────────────────────────────────────────────────────────────────┤ 
+# │%*X│ │Soft-fill with character "X" as pad                                   │
+# └───┴──┴──────────────────────────────────────────────────────────────────────┘ 
+# 
+# * = Can be optionally printed if nonzero
+# 
+# @ = Only applicable to the current folder
+# 
+# In order to use %S, %N, %F, and %!, $mail_check_stats must be set. When thus
+# set, a suggested value for this option is "%B%?F? [%F]?%* %?N?%N/?%S".
+# 
+set sidebar_format="%D%?F? [%F]?%*  %?N?%N/?%S"
+
+
+# 3.351. sidebar_indent_string
+# 
+# Type: string
+# Default: “  ”
+# 
+# This specifies the string that is used to indent mailboxes in the sidebar. It
+# defaults to two spaces.
+# 
+# See also: $sidebar_short_path, $sidebar_folder_indent, $sidebar_delim_chars.
+# 
+set sidebar_indent_string=" "
+
+
+# 3.352. sidebar_new_mail_only
+# 
+# Type: boolean
+# Default: no
+# 
+# When set, the sidebar will only display mailboxes containing new, or flagged,
+# mail. 
+# 
+# See also: $sidebar_whitelist, $sidebar_non_empty_mailbox_only.
+# 
+
+
+# 3.353. sidebar_next_new_wrap
+# 
+# Type: boolean
+# Default: no
+# 
+# When set, the <sidebar-next-new> command will not stop and the end of the list
+# of mailboxes, but wrap around to the beginning. The <sidebar-prev-new> command
+# is similarly affected, wrapping around to the end of the list.
+# 
+set sidebar_next_new_wrap=yes
+
+
+# 3.354. sidebar_non_empty_mailbox_only
+# 
+# Type: boolean
+# Default: no
+# 
+# When set, the sidebar will only display mailboxes that contain one or more
+# mails. 
+# 
+# See also: $sidebar_new_mail_only, $sidebar_whitelist.
+# 
+
+
+# 3.355. sidebar_on_right
+# 
+# Type: boolean
+# Default: no
+# 
+# When set, the sidebar will appear on the right-hand side of the screen.
+# 
+
+
+# 3.356. sidebar_short_path
+# 
+# Type: boolean
+# Default: no
+# 
+# By default the sidebar will show the mailbox's path, relative to the $folder
+# variable. Setting sidebar_shortpath=yes will shorten the names relative to the
+# previous name. Here's an example:
+# 
+# ┌────────────┬─────────────┬───────────────────────────────────────────────┐ 
+# │shortpath=no│shortpath=yes│shortpath=yes, folderindent=yes, indentstr=".."│
+# ├────────────┼─────────────┼───────────────────────────────────────────────┤ 
+# │fruit │fruit        │fruit                                          │
+# ├────────────┼─────────────┼───────────────────────────────────────────────┤ 
+# │fruit.apple │apple        │..apple                                        │
+# ├────────────┼─────────────┼───────────────────────────────────────────────┤ 
+# │fruit.banana│banana │..banana                                       │
+# ├────────────┼─────────────┼───────────────────────────────────────────────┤ 
+# │fruit.cherry│cherry │..cherry                                       │
+# └────────────┴─────────────┴───────────────────────────────────────────────┘ 
+# 
+# See also: $sidebar_delim_chars, $sidebar_folder_indent, $sidebar_indent_string,
+# $sidebar_component_depth. 
+# 
+set sidebar_short_path=no
+
+
+# 3.357. sidebar_sort_method
+# 
+# Type: sort order
+# Default: order
+# 
+# Specifies how to sort mailbox entries in the sidebar. By default, the entries
+# are sorted alphabetically. Valid values:
+# 
+# • path (alphabetically)
+# 
+# • count (all message count)
+# 
+# • flagged (flagged message count)
+# 
+# • new (unread message count)
+# 
+# • unread (unread message count)
+# 
+# • unsorted
+# 
+# You may optionally use the "reverse-" prefix to specify reverse sorting order
+# (example: "set sidebar_sort_method=reverse-alpha").
+# 
+# The "alpha" and "name" values are synonyms for "path".
+# 
+set sidebar_sort_method=path
+
+
+# 3.358. sidebar_visible
+# 
+# Type: boolean
+# Default: no
+# 
+# This specifies whether or not to show sidebar. The sidebar shows a list of all
+# your mailboxes.
+# 
+# See also: $sidebar_format, $sidebar_width
+# 
+set sidebar_visible=no
+
+
+# 3.359. sidebar_width
+# 
+# Type: number
+# Default: 30
+# 
+# This controls the width of the sidebar. It is measured in screen columns. For
+# example: sidebar_width=20 could display 20 ASCII characters, or 10 Chinese
+# characters. 
+# 
+set sidebar_width=20
+
+
+# 3.360. sig_dashes
+# 
+# Type: boolean
+# Default: yes
+# 
+# If set, a line containing "-- " (note the trailing space) will be inserted
+# before your $signature. It is strongly recommended that you not unset this
+# variable unless your signature contains just your name. The reason for this is
+# because many software packages use "-- n" to detect your signature. For
+# example, NeoMutt has the ability to highlight the signature in a different
+# color in the built-in pager.
+# 
+set sig_dashes=no
+
+
+# 3.361. sig_on_top
+# 
+# Type: boolean
+# Default: no
+# 
+# If set, the signature will be included before any quoted or forwarded text. It
+# is strongly recommended that you do not set this variable unless you really
+# know what you are doing, and are prepared to take some heat from netiquette
+# guardians. 
+# 
+
+
+# 3.362. signature
+# 
+# Type: path
+# Default: “~/.signature”
+# 
+# Specifies the filename of your signature, which is appended to all outgoing
+# messages. If the filename ends with a pipe ("|"), it is assumed that filename
+# is a shell command and input should be read from its standard output.
+# 
+
+
+# 3.363. simple_search
+# 
+# Type: string
+# Default: “~f %s | ~s %s”
+# 
+# Specifies how NeoMutt should expand a simple search into a real search pattern.
+# A simple search is one that does not contain any of the "~" pattern operators.
+# See "patterns" for more information on search patterns.
+# 
+# For example, if you simply type "joe" at a search or limit prompt, NeoMutt will
+# automatically expand it to the value specified by this variable by replacing
+# "%s" with the supplied string. For the default value, "joe" would be expanded
+# to: "~f joe | ~s joe".
+# 
+set simple_search="~L %s | ~s %s"
+
+
+# 3.364. size_show_bytes
+# 
+# Type: boolean
+# Default: no
+# 
+# If set, message sizes will display bytes for values less than 1 kilobyte. See
+# formatstrings-size. 
+# 
+
+
+# 3.365. size_show_fractions
+# 
+# Type: boolean
+# Default: yes
+# 
+# If set, message sizes will be displayed with a single decimal value for sizes
+# from 0 to 10 kilobytes and 1 to 10 megabytes. See formatstrings-size.
+# 
+
+
+# 3.366. size_show_mb
+# 
+# Type: boolean
+# Default: yes
+# 
+# If set, message sizes will display megabytes for values greater than or equal
+# to 1 megabyte. See formatstrings-size.
+# 
+
+
+# 3.367. size_units_on_left
+# 
+# Type: boolean
+# Default: no
+# 
+# If set, message sizes units will be displayed to the left of the number. See
+# formatstrings-size. 
+# 
+
+
+# 3.368. sleep_time
+# 
+# Type: number
+# Default: 1
+# 
+# Specifies time, in seconds, to pause while displaying certain informational
+# messages, while moving from folder to folder and after expunging messages from
+# the current folder. The default is to pause one second, so a value of zero for
+# this option suppresses the pause.
+# 
+
+
+# 3.369. smart_wrap
+# 
+# Type: boolean
+# Default: yes
+# 
+# Controls the display of lines longer than the screen width in the internal
+# pager. If set, long lines are wrapped at a word boundary. If unset, lines are
+# simply wrapped at the screen edge. Also see the $markers variable.
+# 
+
+
+# 3.370. smileys
+# 
+# Type: regular expression
+# Default: “(>From )|(:[-^]?[][)(><}{|/DP])”
+# 
+# The pager uses this variable to catch some common false positives of
+# $quote_regex, most notably smileys and not consider a line quoted text if it
+# also matches $smileys. This mostly happens at the beginning of a line.
+# 
+
+
+# 3.371. smime_ask_cert_label
+# 
+# Type: boolean
+# Default: yes
+# 
+# This flag controls whether you want to be asked to enter a label for a
+# certificate about to be added to the database or not. It is set by default. (S/
+# MIME only)
+# 
+
+
+# 3.372. smime_ca_location
+# 
+# Type: path
+# Default: (empty)
+# 
+# This variable contains the name of either a directory, or a file which contains
+# trusted certificates for use with OpenSSL. (S/MIME only)
+# 
+
+
+# 3.373. smime_certificates
+# 
+# Type: path
+# Default: (empty)
+# 
+# Since for S/MIME there is no pubring/secring as with PGP, NeoMutt has to handle
+# storage and retrieval of keys by itself. This is very basic right now, and keys
+# and certificates are stored in two different directories, both named as the
+# hash-value retrieved from OpenSSL. There is an index file which contains
+# mailbox-address keyid pairs, and which can be manually edited. This option
+# points to the location of the certificates. (S/MIME only)
+# 
+set smime_certificates="~/.smime/certificates"
+
+
+# 3.374. smime_decrypt_command
+# 
+# Type: command
+# Default: (empty)
+# 
+# This format string specifies a command which is used to decrypt application/
+# x-pkcs7-mime attachments.
+# 
+# The OpenSSL command formats have their own set of printf(3)-like sequences
+# similar to PGP's:
+# 
+# ┌──┬──────────────────────────────────────────────────────────────────────────┐ 
+# │%f│Expands to the name of a file containing a message.                       │
+# ├──┼──────────────────────────────────────────────────────────────────────────┤ 
+# │%s│Expands to the name of a file containing the signature part of a multipart│
+# │ │/signed attachment when verifying it.                                     │
+# ├──┼──────────────────────────────────────────────────────────────────────────┤ 
+# │%k│The key-pair specified with $smime_default_key                            │
+# ├──┼──────────────────────────────────────────────────────────────────────────┤ 
+# │%i│Intermediate certificates                                                 │
+# ├──┼──────────────────────────────────────────────────────────────────────────┤ 
+# │%c│One or more certificate IDs.                                              │
+# ├──┼──────────────────────────────────────────────────────────────────────────┤ 
+# │%a│The algorithm used for encryption.                                        │
+# ├──┼──────────────────────────────────────────────────────────────────────────┤ 
+# │%d│The message digest algorithm specified with $smime_sign_digest_alg.       │
+# ├──┼──────────────────────────────────────────────────────────────────────────┤ 
+# │ │CA location: Depending on whether $smime_ca_location points to a directory│
+# │%C│or file, this expands to "-CApath $smime_ca_location" or "-CAfile         │
+# │ │$smime_ca_location".                                                      │
+# └──┴──────────────────────────────────────────────────────────────────────────┘ 
+# 
+# For examples on how to configure these formats, see the smime.rc in the samples
+# / subdirectory which has been installed on your system alongside the
+# documentation. (S/MIME only)
+# 
+
+
+# 3.375. smime_decrypt_use_default_key
+# 
+# Type: boolean
+# Default: yes
+# 
+# If set (default) this tells NeoMutt to use the default key for decryption.
+# Otherwise, if managing multiple certificate-key-pairs, NeoMutt will try to use
+# the mailbox-address to determine the key to use. It will ask you to supply a
+# key, if it can't find one. (S/MIME only)
+# 
+
+
+# 3.376. smime_default_key
+# 
+# Type: string
+# Default: (empty)
+# 
+# This is the default key-pair to use for S/MIME operations, and must be set to
+# the keyid (the hash-value that OpenSSL generates) to work properly.
+# 
+# It will be used for encryption (see $postpone_encrypt and $smime_self_encrypt).
+# 
+# It will be used for decryption unless $smime_decrypt_use_default_key is unset.
+# 
+# It will also be used for signing unless $smime_sign_as is set.
+# 
+# The (now deprecated) smime_self_encrypt_as is an alias for this variable, and
+# should no longer be used. (S/MIME only)
+# 
+
+
+# 3.377. smime_encrypt_command
+# 
+# Type: command
+# Default: (empty)
+# 
+# This command is used to create encrypted S/MIME messages.
+# 
+# This is a format string, see the $smime_decrypt_command command for possible
+# printf(3)-like sequences. (S/MIME only)
+# 
+# Encrypt the message to $smime_default_key too. (S/MIME only) Note: On Debian
+# systems, this defaults to the first existing file in the following list: ~
+# /.smime/ca-certificates.crt ~/.smime/ca-bundle.crt /etc/ssl/certs/
+# ca-certificates.crt. 
+# 
+
+
+# 3.378. smime_encrypt_with
+# 
+# Type: string
+# Default: “aes256”
+# 
+# This sets the algorithm that should be used for encryption. Valid choices are
+# "aes128", "aes192", "aes256", "des", "des3", "rc2-40", "rc2-64", "rc2-128". (S/
+# MIME only)
+# 
+
+
+# 3.379. smime_get_cert_command
+# 
+# Type: command
+# Default: (empty)
+# 
+# This command is used to extract X509 certificates from a PKCS7 structure.
+# 
+# This is a format string, see the $smime_decrypt_command command for possible
+# printf(3)-like sequences. (S/MIME only)
+# 
+
+
+# 3.380. smime_get_cert_email_command
+# 
+# Type: command
+# Default: (empty)
+# 
+# This command is used to extract the mail address(es) used for storing X509
+# certificates, and for verification purposes (to check whether the certificate
+# was issued for the sender's mailbox).
+# 
+# This is a format string, see the $smime_decrypt_command command for possible
+# printf(3)-like sequences. (S/MIME only)
+# 
+
+
+# 3.381. smime_get_signer_cert_command
+# 
+# Type: command
+# Default: (empty)
+# 
+# This command is used to extract only the signers X509 certificate from a S/MIME
+# signature, so that the certificate's owner may get compared to the email's
+# "From:" field.
+# 
+# This is a format string, see the $smime_decrypt_command command for possible
+# printf(3)-like sequences. (S/MIME only)
+# 
+
+
+# 3.382. smime_import_cert_command
+# 
+# Type: command
+# Default: (empty)
+# 
+# This command is used to import a certificate via smime_keys.
+# 
+# This is a format string, see the $smime_decrypt_command command for possible
+# printf(3)-like sequences. NOTE: %c and %k will default to $smime_sign_as if
+# set, otherwise $smime_default_key. (S/MIME only)
+# 
+
+
+# 3.383. smime_is_default
+# 
+# Type: boolean
+# Default: no
+# 
+# The default behavior of NeoMutt is to use PGP on all auto-sign/encryption
+# operations. To override and to use OpenSSL instead this must be set. However,
+# this has no effect while replying, since NeoMutt will automatically select the
+# same application that was used to sign/encrypt the original message. (Note that
+# this variable can be overridden by unsetting $crypt_auto_smime.) (S/MIME only)
+# 
+
+
+# 3.384. smime_keys
+# 
+# Type: path
+# Default: (empty)
+# 
+# Since for S/MIME there is no pubring/secring as with PGP, NeoMutt has to handle
+# storage and retrieval of keys/certs by itself. This is very basic right now,
+# and stores keys and certificates in two different directories, both named as
+# the hash-value retrieved from OpenSSL. There is an index file which contains
+# mailbox-address keyid pair, and which can be manually edited. This option
+# points to the location of the private keys. (S/MIME only)
+# 
+set smime_keys="~/.smime/keys"
+
+
+# 3.385. smime_pk7out_command
+# 
+# Type: command
+# Default: (empty)
+# 
+# This command is used to extract PKCS7 structures of S/MIME signatures, in order
+# to extract the public X509 certificate(s).
+# 
+# This is a format string, see the $smime_decrypt_command command for possible
+# printf(3)-like sequences. (S/MIME only)
+# 
+
+
+# 3.386. smime_self_encrypt
+# 
+# Type: boolean
+# Default: yes
+# 
+# When set, S/MIME encrypted messages will also be encrypted using the
+# certificate in $smime_default_key. (S/MIME only)
+# 
+
+
+# 3.387. smime_sign_as
+# 
+# Type: string
+# Default: (empty)
+# 
+# If you have a separate key to use for signing, you should set this to the
+# signing key. Most people will only need to set $smime_default_key. (S/MIME
+# only) 
+# 
+
+
+# 3.388. smime_sign_command
+# 
+# Type: command
+# Default: (empty)
+# 
+# This command is used to created S/MIME signatures of type multipart/signed,
+# which can be read by all mail clients.
+# 
+# This is a format string, see the $smime_decrypt_command command for possible
+# printf(3)-like sequences. (S/MIME only)
+# 
+
+
+# 3.389. smime_sign_digest_alg
+# 
+# Type: string
+# Default: “sha256”
+# 
+# This sets the algorithm that should be used for the signature message digest.
+# Valid choices are "md5", "sha1", "sha224", "sha256", "sha384", "sha512". (S/
+# MIME only)
+# 
+
+
+# 3.390. smime_timeout
+# 
+# Type: number
+# Default: 300
+# 
+# The number of seconds after which a cached passphrase will expire if not used.
+# (S/MIME only)
+# 
+
+
+# 3.391. smime_verify_command
+# 
+# Type: command
+# Default: (empty)
+# 
+# This command is used to verify S/MIME signatures of type multipart/signed.
+# 
+# This is a format string, see the $smime_decrypt_command command for possible
+# printf(3)-like sequences. (S/MIME only)
+# 
+
+
+# 3.392. smime_verify_opaque_command
+# 
+# Type: command
+# Default: (empty)
+# 
+# This command is used to verify S/MIME signatures of type application/
+# x-pkcs7-mime. 
+# 
+# This is a format string, see the $smime_decrypt_command command for possible
+# printf(3)-like sequences. (S/MIME only)
+# 
+
+
+# 3.393. smtp_authenticators
+# 
+# Type: string list
+# Default: (empty)
+# 
+# This is a colon-separated list of authentication methods NeoMutt may attempt to
+# use to log in to an SMTP server, in the order NeoMutt should try them.
+# Authentication methods are any SASL mechanism, e.g. "plain", "digest-md5",
+# "gssapi" or "cram-md5". This option is case-insensitive. If it is "unset" (the
+# default) NeoMutt will try all available methods, in order from most-secure to
+# least-secure. Support for the "plain" mechanism is bundled; other mechanisms
+# are provided by an external SASL library (look for '+sasl' in the output of
+# neomutt -v).
+# 
+# Example: 
+# 
+# set smtp_authenticators="digest-md5:cram-md5"
+# 
+
+
+# 3.394. smtp_oauth_refresh_command
+# 
+# Type: command
+# Default: (empty)
+# 
+# The command to run to generate an OAUTH refresh token for authorizing your
+# connection to your SMTP server. This command will be run on every connection
+# attempt that uses the OAUTHBEARER or XOAUTH2 authentication mechanisms. See "
+# oauth" for details.
+# 
+
+
+# 3.395. smtp_pass
+# 
+# Type: string
+# Default: (empty)
+# 
+# Specifies the password for your SMTP account. If unset, NeoMutt will prompt you
+# for your password when you first send mail via SMTP. See $smtp_url to configure
+# NeoMutt to send mail via SMTP.
+# 
+# Warning: you should only use this option when you are on a fairly secure
+# machine, because the superuser can read your neomuttrc even if you are the only
+# one who can read the file.
+# 
+
+
+# 3.396. smtp_url
+# 
+# Type: string
+# Default: (empty)
+# 
+# Defines the SMTP smarthost where sent messages should relayed for delivery.
+# This should take the form of an SMTP URL, e.g.:
+# 
+# smtp[s]://[user[:pass]@]host[:port] 
+# 
+# where "[...]" denotes an optional part. Setting this variable overrides the
+# value of the $sendmail variable.
+# 
+# Also see $write_bcc.
+# 
+
+
+# 3.397. smtp_user
+# 
+# Type: string
+# Default: (empty)
+# 
+# The username for the SMTP server.
+# 
+# This variable defaults to your user name on the local machine.
+# 
+
+
+# 3.398. sort
+# 
+# Type: sort order
+# Default: date
+# 
+# Specifies how to sort messages in the "index" menu. Valid values are:
+# 
+# • date
+# 
+# • date-received
+# 
+# • from
+# 
+# • score
+# 
+# • size
+# 
+# • spam
+# 
+# • subject
+# 
+# • threads
+# 
+# • to
+# 
+# • unsorted
+# 
+# You may optionally use the "reverse-" prefix to specify reverse sorting order,
+# or the "last-" prefix to sort threads based on the corresponding attribute of
+# the last descendant rather than the thread root. If both prefixes are in use,
+# "reverse-" must come before "last-". The "last-" prefix has no effect on a flat
+# view. 
+# 
+# Any ties in the primary sort are broken by $sort_aux. When $use_threads is
+# "threads" or "reverse", $sort controls the sorting between threads, and
+# $sort_aux controls the sorting within a thread.
+# 
+# The "date-sent" value is a synonym for "date". The "mailbox-order" value is a
+# synonym for "unsorted".
+# 
+# The values of "threads" and "reverse-threads" are legacy options, which cause
+# the value of $sort_aux to also contol sorting between threads, and they may not
+# be used with the "last-" prefix. The preferred way to enable a threaded view is
+# via $use_threads. This variable can also be set via the <sort-mailbox> and
+# <sort-reverse> functions.
+# 
+# Note: When $use_threads is "threads", the last thread sorts to the bottom; when
+# it is "reversed", the last thread sorts to the top. The use of "reverse-" in
+# $sort swaps which end the last thread will sort to.
+# 
+# See the "Use Threads Feature" section for further explanation and examples,
+# https://neomutt.org/feature/use-threads. 
+# 
+set sort=threads
+
+
+# 3.399. sort_alias
+# 
+# Type: sort order
+# Default: alias
+# 
+# Specifies how the entries in the "alias" menu are sorted. The following are
+# legal values:
+# 
+# • address (sort alphabetically by email address)
+# 
+# • alias (sort alphabetically by alias name)
+# 
+# • unsorted (leave in order specified in .neomuttrc)
+# 
+# Note: This also affects the entries of the address query menu, thus potentially
+# overruling the order of entries as generated by $query_command.
+# 
+
+
+# 3.400. sort_aux
+# 
+# Type: sort order
+# Default: date
+# 
+# This provides a secondary sort for messages in the "index" menu, used when the
+# $sort value is equal for two messages.
+# 
+# When sorting by threads, this variable controls how subthreads are sorted
+# within a single thread (for the order between threads, see $sort). This can be
+# set to any value that $sort can, including with the use of "reverse-" and
+# "last-" prefixes, except for variations using "threads" (in that case, NeoMutt
+# will just use "date"). For instance,
+# 
+# set sort_aux=last-date-received
+# 
+# would mean that if a new message is received in a thread, that subthread
+# becomes the last one displayed (or the first, if you have "set use_threads=
+# reverse".) When using $use_threads, it is more common to use "last-" with $sort
+# and not with $sort_aux.
+# 
+# See the "Use Threads Feature" section for further explanation and examples,
+# https://neomutt.org/feature/use-threads. 
+# 
+set sort_aux=last-date-received
+
+
+# 3.401. sort_browser
+# 
+# Type: sort order
+# Default: alpha
+# 
+# Specifies how to sort entries in the file browser. By default, the entries are
+# sorted alphabetically. Valid values:
+# 
+# • alpha (alphabetically)
+# 
+# • count (all message count)
+# 
+# • date
+# 
+# • desc (description)
+# 
+# • new (new message count)
+# 
+# • size
+# 
+# • unsorted
+# 
+# You may optionally use the "reverse-" prefix to specify reverse sorting order
+# (example: "set sort_browser=reverse-date").
+# 
+# The "unread" value is a synonym for "new".
+# 
+
+
+# 3.402. sort_re
+# 
+# Type: boolean
+# Default: yes
+# 
+# This variable is only useful when sorting by threads with $strict_threads unset
+# . In that case, it changes the heuristic mutt uses to thread messages by
+# subject. With $sort_re set, mutt will only attach a message as the child of
+# another message by subject if the subject of the child message starts with a
+# substring matching the setting of $reply_regex. With $sort_re unset, mutt will
+# attach the message whether or not this is the case, as long as the non-
+# $reply_regex parts of both messages are identical.
+# 
+
+
+# 3.403. spam_separator
+# 
+# Type: string
+# Default: “,”
+# 
+# This variable controls what happens when multiple spam headers are matched: if
+# unset, each successive header will overwrite any previous matches value for the
+# spam label. If set, each successive match will append to the previous, using
+# this variable's value as a separator.
+# 
+
+
+# 3.404. spool_file
+# 
+# Type: mailbox
+# Default: (empty)
+# 
+# If your spool mailbox is in a non-default place where NeoMutt can't find it,
+# you can specify its location with this variable. The description from
+# "named-mailboxes" or "virtual-mailboxes" may be used for the spool_file.
+# 
+# If not specified, then the environment variables $MAIL and $MAILDIR will be
+# checked. 
+# 
+set spool_file="=inbox"
+
+
+# 3.405. ssl_ca_certificates_file
+# 
+# Type: path
+# Default: (empty)
+# 
+# This variable specifies a file containing trusted CA certificates. Any server
+# certificate that is signed with one of these CA certificates is also
+# automatically accepted. (GnuTLS only)
+# 
+# Example: 
+# 
+# set ssl_ca_certificates_file=/etc/ssl/certs/ca-certificates.crt
+# 
+# Note: On Debian systems, this option is set by default to “threads” in /etc/
+# Muttrc. 
+# 
+set ssl_ca_certificates_file="/etc/ssl/certs/ca-certificates.crt"
+
+
+# 3.406. ssl_ciphers
+# 
+# Type: string
+# Default: (empty)
+# 
+# Contains a colon-separated list of ciphers to use when using SSL. For OpenSSL,
+# see ciphers(1) for the syntax of the string.
+# 
+# For GnuTLS, this option will be used in place of "NORMAL" at the start of the
+# priority string. See gnutls_priority_init(3) for the syntax and more details.
+# (Note: GnuTLS version 2.1.7 or higher is required.)
+# 
+
+
+# 3.407. ssl_client_cert
+# 
+# Type: path
+# Default: (empty)
+# 
+# The file containing a client certificate and its associated private key.
+# 
+
+
+# 3.408. ssl_force_tls
+# 
+# Type: boolean
+# Default: yes
+# 
+# If this variable is set, NeoMutt will require that all connections to remote
+# servers be encrypted. Furthermore it will attempt to negotiate TLS even if the
+# server does not advertise the capability, since it would otherwise have to
+# abort the connection anyway. This option supersedes $ssl_starttls.
+# 
+
+
+# 3.409. ssl_min_dh_prime_bits
+# 
+# Type: number
+# Default: 0
+# 
+# This variable specifies the minimum acceptable prime size (in bits) for use in
+# any Diffie-Hellman key exchange. A value of 0 will use the default from the
+# GNUTLS library. (GnuTLS only)
+# 
+
+
+# 3.410. ssl_starttls
+# 
+# Type: quadoption
+# Default: yes
+# 
+# If set (the default), NeoMutt will attempt to use STARTTLS on servers
+# advertising the capability. When unset, NeoMutt will not attempt to use
+# STARTTLS regardless of the server's capabilities.
+# 
+# Note that STARTTLS is subject to many kinds of attacks, including the ability
+# of a machine-in-the-middle to suppress the advertising of support. Setting
+# $ssl_force_tls is recommended if you rely on STARTTLS.
+# 
+
+
+# 3.411. ssl_use_sslv3
+# 
+# Type: boolean
+# Default: no
+# 
+# If set , NeoMutt will use SSLv3 when communicating with servers that request
+# it. N.B. As of 2015, SSLv3 is considered insecure, and using it is inadvisable.
+# See https://tools.ietf.org/html/rfc7525 .
+# 
+
+
+# 3.412. ssl_use_tlsv1
+# 
+# Type: boolean
+# Default: no
+# 
+# If set , NeoMutt will use TLSv1.0 when communicating with servers that request
+# it. N.B. As of 2015, TLSv1.0 is considered insecure, and using it is
+# inadvisable. See https://tools.ietf.org/html/rfc7525 .
+# 
+
+
+# 3.413. ssl_use_tlsv1_1
+# 
+# Type: boolean
+# Default: no
+# 
+# If set , NeoMutt will use TLSv1.1 when communicating with servers that request
+# it. N.B. As of 2015, TLSv1.1 is considered insecure, and using it is
+# inadvisable. See https://tools.ietf.org/html/rfc7525 .
+# 
+
+
+# 3.414. ssl_use_tlsv1_2
+# 
+# Type: boolean
+# Default: yes
+# 
+# If set , NeoMutt will use TLSv1.2 when communicating with servers that request
+# it. 
+# 
+
+
+# 3.415. ssl_use_tlsv1_3
+# 
+# Type: boolean
+# Default: yes
+# 
+# If set , NeoMutt will use TLSv1.3 when communicating with servers that request
+# it. 
+# 
+
+
+# 3.416. ssl_verify_dates
+# 
+# Type: boolean
+# Default: yes
+# 
+# If set (the default), NeoMutt will not automatically accept a server
+# certificate that is either not yet valid or already expired. You should only
+# unset this for particular known hosts, using the <account-hook> function.
+# 
+
+
+# 3.417. ssl_verify_host
+# 
+# Type: boolean
+# Default: yes
+# 
+# If set (the default), NeoMutt will not automatically accept a server
+# certificate whose host name does not match the host used in your folder URL.
+# You should only unset this for particular known hosts, using the <account-hook>
+# function. 
+# 
+
+
+# 3.418. status_chars
+# 
+# Type: character string
+# Default: “-*%A”
+# 
+# Controls the characters used by the "%r" indicator in $status_format.
+# 
+# ┌─────────┬───────┬───────────────────────────────────────────────────────────┐ 
+# │Character│Default│Description │
+# ├─────────┼───────┼───────────────────────────────────────────────────────────┤ 
+# │1 │-      │Mailbox is unchanged                                       │
+# ├─────────┼───────┼───────────────────────────────────────────────────────────┤ 
+# │2 │*      │Mailbox has been changed and needs to be resynchronized    │
+# ├─────────┼───────┼───────────────────────────────────────────────────────────┤ 
+# │ │       │Mailbox is read-only, or will not be written when exiting. │
+# │3 │%      │(You can toggle whether to write changes to a mailbox with │
+# │ │       │the <toggle-write> operation, bound by default to "%")     │
+# ├─────────┼───────┼───────────────────────────────────────────────────────────┤ 
+# │ │       │Folder opened in attach-message mode. (Certain operations  │
+# │4 │A      │like composing a new mail, replying, forwarding, etc. are  │
+# │ │       │not permitted in this mode)                                │
+# └─────────┴───────┴───────────────────────────────────────────────────────────┘ 
+# 
+
+
+# 3.419. status_format
+# 
+# Type: string
+# Default: “-%r-NeoMutt: %D [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?]---(%?T?%T/?%s/%S)
+# -%>-(%P)---” 
+# 
+# Controls the format of the status line displayed in the "index" menu. This
+# string is similar to $index_format, but has its own set of printf(3)-like
+# sequences: 
+# 
+# ┌───┬─┬───────────────────────────────────────────────────────────────────────┐ 
+# │%b │*│Number of mailboxes with new mail                                      │
+# ├───┼─┼───────────────────────────────────────────────────────────────────────┤ 
+# │%d │*│Number of deleted messages                                             │
+# ├───┼─┼───────────────────────────────────────────────────────────────────────┤ 
+# │%D │ │Description of the mailbox                                             │
+# ├───┼─┼───────────────────────────────────────────────────────────────────────┤ 
+# │%f │ │The full pathname of the current mailbox                               │
+# ├───┼─┼───────────────────────────────────────────────────────────────────────┤ 
+# │%F │*│Number of flagged messages                                             │
+# ├───┼─┼───────────────────────────────────────────────────────────────────────┤ 
+# │%h │ │Local hostname                                                         │
+# ├───┼─┼───────────────────────────────────────────────────────────────────────┤ 
+# │%l │*│Size (in bytes) of the current mailbox (see formatstrings-size)        │
+# ├───┼─┼───────────────────────────────────────────────────────────────────────┤ 
+# │%L │*│Size (in bytes) of the messages shown (i.e., which match the current   │
+# │ │ │limit) (see formatstrings-size)                                        │
+# ├───┼─┼───────────────────────────────────────────────────────────────────────┤ 
+# │%m │*│The number of messages in the mailbox                                  │
+# ├───┼─┼───────────────────────────────────────────────────────────────────────┤ 
+# │%M │*│The number of messages shown (i.e., which match the current limit)     │
+# ├───┼─┼───────────────────────────────────────────────────────────────────────┤ 
+# │%n │*│Number of new messages in the mailbox (unread, unseen)                 │
+# ├───┼─┼───────────────────────────────────────────────────────────────────────┤ 
+# │%o │*│Number of old messages in the mailbox (unread, seen)                   │
+# ├───┼─┼───────────────────────────────────────────────────────────────────────┤ 
+# │%p │*│Number of postponed messages                                           │
+# ├───┼─┼───────────────────────────────────────────────────────────────────────┤ 
+# │%P │ │Percentage of the way through the index                                │
+# ├───┼─┼───────────────────────────────────────────────────────────────────────┤ 
+# │%r │ │Modified/read-only/won't-write/attach-message indicator, According to  │
+# │ │ │$status_chars                                                          │
+# ├───┼─┼───────────────────────────────────────────────────────────────────────┤ 
+# │%R │*│Number of read messages in the mailbox (read, seen)                    │
+# ├───┼─┼───────────────────────────────────────────────────────────────────────┤ 
+# │%s │ │Current sorting mode ($sort)                                           │
+# ├───┼─┼───────────────────────────────────────────────────────────────────────┤ 
+# │%S │ │Current aux sorting method ($sort_aux)                                 │
+# ├───┼─┼───────────────────────────────────────────────────────────────────────┤ 
+# │%t │*│Number of tagged messages in the mailbox                               │
+# ├───┼─┼───────────────────────────────────────────────────────────────────────┤ 
+# │%T │*│Current threading mode ($use_threads)                                  │
+# ├───┼─┼───────────────────────────────────────────────────────────────────────┤ 
+# │%u │*│Number of unread messages in the mailbox (seen or unseen)              │
+# ├───┼─┼───────────────────────────────────────────────────────────────────────┤ 
+# │%v │ │NeoMutt version string                                                 │
+# ├───┼─┼───────────────────────────────────────────────────────────────────────┤ 
+# │%V │*│Currently active limit pattern, if any                                 │
+# ├───┼─┼───────────────────────────────────────────────────────────────────────┤ 
+# │%>X│ │Right justify the rest of the string and pad with "X"                  │
+# ├───┼─┼───────────────────────────────────────────────────────────────────────┤ 
+# │%|X│ │Pad to the end of the line with "X"                                    │
+# ├───┼─┼───────────────────────────────────────────────────────────────────────┤ 
+# │%*X│ │Soft-fill with character "X" as pad                                    │
+# └───┴─┴───────────────────────────────────────────────────────────────────────┘ 
+# 
+# For an explanation of "soft-fill", see the $index_format documentation.
+# 
+# * = can be optionally printed if nonzero
+# 
+# Some of the above sequences can be used to optionally print a string if their
+# value is nonzero. For example, you may only want to see the number of flagged
+# messages if such messages exist, since zero is not particularly meaningful. To
+# optionally print a string based upon one of the above sequences, the following
+# construct is used:
+# 
+# %?<sequence_char>?<optional_string>? 
+# 
+# where sequence_char is a character from the table above, and optional_string is
+# the string you would like printed if sequence_char is nonzero. optional_string
+# may contain other sequences as well as normal text, but you may not nest
+# optional strings.
+# 
+# Here is an example illustrating how to optionally print the number of new
+# messages in a mailbox:
+# 
+# %?n?%n new messages.?
+# 
+# You can also switch between two strings using the following construct:
+# 
+# %?<sequence_char>?<if_string>&<else_string>? 
+# 
+# If the value of sequence_char is non-zero, if_string will be expanded,
+# otherwise else_string will be expanded.
+# 
+# As another example, here is how to show either $sort and $sort_aux or
+# $use_threads and $sort, based on whether threads are enabled with $use_threads:
+# 
+# %?T?%s/%S&%T/%s? 
+# 
+# You can force the result of any printf(3)-like sequence to be lowercase by
+# prefixing the sequence character with an underscore ("_") sign. For example, if
+# you want to display the local hostname in lowercase, you would use: "%_h".
+# 
+# If you prefix the sequence character with a colon (":") character, NeoMutt will
+# replace any dots in the expansion by underscores. This might be helpful with
+# IMAP folders that don't like dots in folder names.
+# 
+set status_format=" %r %f [m:%?M?%M/?%m%?n? n:%n?%?o? o:%o?%?d? d:%d?%?F? f:%F?%?t? t:%t?%?p? p:%p?%?b? i:%b?%?l? %l?] %?V?%V ?(%s/%S) %> (%P) "
+
+
+# 3.420. status_on_top
+# 
+# Type: boolean
+# Default: no
+# 
+# Setting this variable causes the "status bar" to be displayed on the first line
+# of the screen rather than near the bottom. If $help is set too, it'll be placed
+# at the bottom.
+# 
+
+
+# 3.421. strict_threads
+# 
+# Type: boolean
+# Default: no
+# 
+# If set, threading will only make use of the "In-Reply-To" and "References:"
+# fields when you $sort by message threads. By default, messages with the same
+# subject are grouped together in "pseudo threads.". This may not always be
+# desirable, such as in a personal mailbox where you might have several unrelated
+# messages with the subjects like "hi" which will get grouped together. See also
+# $sort_re for a less drastic way of controlling this behavior.
+# 
+set strict_threads=yes
+
+
+# 3.422. suspend
+# 
+# Type: boolean
+# Default: yes
+# 
+# When unset, NeoMutt won't stop when the user presses the terminal's susp key,
+# usually "^Z". This is useful if you run NeoMutt inside an xterm using a command
+# like "xterm -e neomutt".
+# 
+
+
+# 3.423. text_flowed
+# 
+# Type: boolean
+# Default: no
+# 
+# When set, NeoMutt will generate "format=flowed" bodies with a content type of
+# "text/plain; format=flowed". This format is easier to handle for some mailing
+# software, and generally just looks like ordinary text. To actually make use of
+# this format's features, you'll need support in your editor.
+# 
+# The option only controls newly composed messages. Postponed messages, resent
+# messages, and draft messages (via -H on the command line) will use the
+# content-type of the source message.
+# 
+# Note that $indent_string is ignored when this option is set.
+# 
+set text_flowed=yes
+
+
+# 3.424. thorough_search
+# 
+# Type: boolean
+# Default: yes
+# 
+# Affects the ~b, ~B, and ~h search operations described in section "patterns".
+# If set, the headers and body/attachments of messages to be searched are decoded
+# before searching. If unset, messages are searched as they appear in the folder.
+# 
+# Users searching attachments or for non-ASCII characters should set this value
+# because decoding also includes MIME parsing/decoding and possible character set
+# conversions. Otherwise NeoMutt will attempt to match against the raw message
+# received (for example quoted-printable encoded or with encoded headers) which
+# may lead to incorrect search results.
+# 
+set thorough_search=yes
+
+
+# 3.425. thread_received
+# 
+# Type: boolean
+# Default: no
+# 
+# When set, NeoMutt uses the date received rather than the date sent to thread
+# messages by subject.
+# 
+set thread_received=yes
+
+
+# 3.426. tilde
+# 
+# Type: boolean
+# Default: no
+# 
+# When set, the internal-pager will pad blank lines to the bottom of the screen
+# with a tilde ("~").
+# 
+set tilde=yes
+
+
+# 3.427. time_inc
+# 
+# Type: number
+# Default: 0
+# 
+# Along with $read_inc, $write_inc, and $net_inc, this variable controls the
+# frequency with which progress updates are displayed. It suppresses updates less
+# than $time_inc milliseconds apart. This can improve throughput on systems with
+# slow terminals, or when running NeoMutt on a remote system.
+# 
+# Also see the "tuning" section of the manual for performance considerations.
+# 
+set time_inc=250
+
+
+# 3.428. timeout
+# 
+# Type: number
+# Default: 600
+# 
+# When NeoMutt is waiting for user input either idling in menus or in an
+# interactive prompt, NeoMutt would block until input is present. Depending on
+# the context, this would prevent certain operations from working, like checking
+# for new mail or keeping an IMAP connection alive.
+# 
+# This variable controls how many seconds NeoMutt will at most wait until it
+# aborts waiting for input, performs these operations and continues to wait for
+# input. 
+# 
+# A value of zero or less will cause NeoMutt to never time out.
+# 
+
+
+# 3.429. tmpdir
+# 
+# Type: path
+# Default: “/tmp”
+# 
+# This variable allows you to specify where NeoMutt will place its temporary
+# files needed for displaying and composing messages.
+# 
+# If this variable is not set, the environment variable $TMPDIR is used. Failing
+# that, then "/tmp" is used.
+# 
+set tmpdir=`mktemp -d`
+
+
+# 3.430. to_chars
+# 
+# Type: character string
+# Default: “ +TCFLR”
+# 
+# Controls the character used to indicate mail addressed to you.
+# 
+# ┌─────────┬───────┬───────────────────────────────────────────────────────────┐ 
+# │Character│Default│Description │
+# ├─────────┼───────┼───────────────────────────────────────────────────────────┤ 
+# │1 │<space>│The mail is not addressed to your address.                 │
+# ├─────────┼───────┼───────────────────────────────────────────────────────────┤ 
+# │2 │+      │You are the only recipient of the message.                 │
+# ├─────────┼───────┼───────────────────────────────────────────────────────────┤ 
+# │3 │T      │Your address appears in the "To:" header field, but you are│
+# │ │       │not the only recipient of the message.                     │
+# ├─────────┼───────┼───────────────────────────────────────────────────────────┤ 
+# │4 │C      │Your address is specified in the "Cc:" header field, but   │
+# │ │       │you are not the only recipient.                            │
+# ├─────────┼───────┼───────────────────────────────────────────────────────────┤ 
+# │5 │F      │Indicates the mail that was sent by you.                   │
+# ├─────────┼───────┼───────────────────────────────────────────────────────────┤ 
+# │6 │L      │Indicates the mail was sent to a mailing-list you subscribe│
+# │ │       │to.                                                        │
+# ├─────────┼───────┼───────────────────────────────────────────────────────────┤ 
+# │7 │R      │Your address appears in the "Reply-To:" header field but   │
+# │ │       │none of the above applies.                                 │
+# └─────────┴───────┴───────────────────────────────────────────────────────────┘ 
+# 
+
+
+# 3.431. toggle_quoted_show_levels
+# 
+# Type: number
+# Default: 0
+# 
+# Quoted text may be filtered out using the <toggle-quoted> command. If set to a
+# number greater than 0, then the <toggle-quoted> command will only filter out
+# quote levels above this number.
+# 
+
+
+# 3.432. trash
+# 
+# Type: mailbox
+# Default: (empty)
+# 
+# If set, this variable specifies the path of the trash folder where the mails
+# marked for deletion will be moved, instead of being irremediably purged.
+# 
+# NOTE: When you delete a message in the trash folder, it is really deleted, so
+# that you have a way to clean the trash.
+# 
+
+
+# 3.433. ts_enabled
+# 
+# Type: boolean
+# Default: no
+# 
+# Controls whether NeoMutt tries to set the terminal status line and icon name.
+# Most terminal emulators emulate the status line in the window title.
+# 
+set ts_enabled=yes
+
+
+# 3.434. ts_icon_format
+# 
+# Type: string
+# Default: “M%?n?AIL&ail?”
+# 
+# Controls the format of the icon title, as long as "$ts_enabled" is set. This
+# string is identical in formatting to the one used by "$status_format".
+# 
+
+
+# 3.435. ts_status_format
+# 
+# Type: string
+# Default: “NeoMutt with %?m?%m messages&no messages?%?n? [%n NEW]?”
+# 
+# Controls the format of the terminal status line (or window title), provided
+# that "$ts_enabled" has been set. This string is identical in formatting to the
+# one used by "$status_format".
+# 
+set ts_status_format="[`tty|sed -re 's,.+pts/,,'`]mutt@%h%r %f%?V?[%V]&?"
+
+
+# 3.436. tunnel
+# 
+# Type: command
+# Default: (empty)
+# 
+# Setting this variable will cause NeoMutt to open a pipe to a command instead of
+# a raw socket. You may be able to use this to set up preauthenticated
+# connections to your IMAP/POP3/SMTP server. Example:
+# 
+# set tunnel="ssh -q mailhost.net /usr/local/libexec/imapd"
+# 
+# Note: For this example to work you must be able to log in to the remote machine
+# without having to enter a password.
+# 
+# When set, NeoMutt uses the tunnel for all remote connections. Please see "
+# account-hook" in the manual for how to use different tunnel commands per
+# connection. 
+# 
+
+
+# 3.437. tunnel_is_secure
+# 
+# Type: boolean
+# Default: yes
+# 
+# When set, NeoMutt will assume the $tunnel connection does not need STARTTLS to
+# be enabled. It will also allow IMAP PREAUTH server responses inside a tunnel to
+# proceed. This is appropriate if $tunnel uses ssh or directly invokes the server
+# locally. 
+# 
+# When unset, NeoMutt will negotiate STARTTLS according to the ssl_starttls and
+# ssl_force_tls variables. If ssl_force_tls is set, NeoMutt will abort connecting
+# if an IMAP server responds with PREAUTH. This setting is appropriate if $tunnel
+# does not provide security and could be tampered with by attackers.
+# 
+
+
+# 3.438. uncollapse_jump
+# 
+# Type: boolean
+# Default: no
+# 
+# When set, NeoMutt will jump to the next unread message, if any, when the
+# current thread is uncollapsed.
+# 
+
+
+# 3.439. uncollapse_new
+# 
+# Type: boolean
+# Default: yes
+# 
+# When set, NeoMutt will automatically uncollapse any collapsed thread that
+# receives a new message. When unset, collapsed threads will remain collapsed.
+# the presence of the new message will still affect index sorting, though.
+# 
+
+
+# 3.440. use_8bit_mime
+# 
+# Type: boolean
+# Default: no
+# 
+# Warning: do not set this variable unless you are using a version of sendmail
+# which supports the -B8BITMIME flag (such as sendmail 8.8.x) or you may not be
+# able to send mail.
+# 
+# When set, NeoMutt will invoke $sendmail with the -B8BITMIME flag when sending
+# 8-bit messages to enable ESMTP negotiation.
+# 
+
+
+# 3.441. use_domain
+# 
+# Type: boolean
+# Default: yes
+# 
+# When set, NeoMutt will qualify all local addresses (ones without the "@host"
+# portion) with the value of $hostname. If unset, no addresses will be qualified.
+# 
+
+
+# 3.442. use_envelope_from
+# 
+# Type: boolean
+# Default: no
+# 
+# When set, NeoMutt will set the envelope sender of the message. If
+# $envelope_from_address is set, it will be used as the sender address. If unset,
+# NeoMutt will attempt to derive the sender from the "From:" header.
+# 
+# Note that this information is passed to sendmail command using the -f command
+# line switch. Therefore setting this option is not useful if the $sendmail
+# variable already contains -f or if the executable pointed to by $sendmail
+# doesn't support the -f switch.
+# 
+set use_envelope_from=yes
+
+
+# 3.443. use_from
+# 
+# Type: boolean
+# Default: yes
+# 
+# When set, NeoMutt will generate the "From:" header field when sending messages.
+# If unset, no "From:" header field will be generated unless the user explicitly
+# sets one using the "my_hdr" command.
+# 
+
+
+# 3.444. use_ipv6
+# 
+# Type: boolean
+# Default: yes
+# 
+# When set, NeoMutt will look for IPv6 addresses of hosts it tries to contact. If
+# this option is unset, NeoMutt will restrict itself to IPv4 addresses. Normally,
+# the default should work.
+# 
+
+
+# 3.445. use_threads
+# 
+# Type: enumeration
+# Default: unset
+# 
+# The style of threading used in the index. May be one of "flat" (no threading),
+# "threads" (threaded, with subthreads below root message) or "reverse"
+# (threaded, with subthreads above root message). For convenience, the value
+# "yes" is a synonym for "threads", and "no" is a synonym for "flat".
+# 
+# If this variable is never set, then $sort controls whether threading is used,
+# $sort_aux controls both the sorting of threads and subthreads, and using
+# <sort-mailbox> to select threads affects only $sort. Once this variable is set,
+# attempting to set $sort to a value using "threads" will warn, the value of
+# $sort controls the sorting between threads while $sort_aux controls sorting
+# within a thread, and <sort-mailbox> toggles $use_threads.
+# 
+# Example: 
+# 
+# set use_threads=yes
+# 
+# See the "Use Threads Feature" section for further explanation and examples.
+# 
+
+
+# 3.446. user_agent
+# 
+# Type: boolean
+# Default: no
+# 
+# When set, NeoMutt will add a "User-Agent:" header to outgoing messages,
+# indicating which version of NeoMutt was used for composing them.
+# 
+
+
+# 3.447. vfolder_format
+# 
+# Type: string
+# Default: “%2C %?n?%4n/&     ?%4m %f”
+# 
+# This variable allows you to customize the file browser display for virtual
+# folders to your personal taste. This string uses many of the same expandos as
+# $folder_format. 
+# 
+
+
+# 3.448. virtual_spool_file
+# 
+# Type: boolean
+# Default: no
+# 
+# When set, NeoMutt will use the first defined virtual mailbox (see
+# virtual-mailboxes) as a spool file.
+# 
+# This command is now unnecessary. $spool_file has been extended to support
+# mailbox descriptions as a value.
+# 
+
+
+# 3.449. wait_key
+# 
+# Type: boolean
+# Default: yes
+# 
+# Controls whether NeoMutt will ask you to press a key after an external command
+# has been invoked by these functions: <shell-escape>, <pipe-message>,
+# <pipe-entry>, <print-message>, and <print-entry> commands.
+# 
+# It is also used when viewing attachments with "auto_view", provided that the
+# corresponding mailcap entry has a needsterminal flag, and the external program
+# is interactive.
+# 
+# When set, NeoMutt will always ask for a key. When unset, NeoMutt will wait for
+# a key only if the external command returned a non-zero status.
+# 
+set wait_key=no
+
+
+# 3.450. weed
+# 
+# Type: boolean
+# Default: yes
+# 
+# When set, NeoMutt will weed headers when displaying, forwarding, or replying to
+# messages. 
+# 
+# Also see $copy_decode_weed, $pipe_decode_weed, $print_decode_weed.
+# 
+
+
+# 3.451. wrap
+# 
+# Type: number
+# Default: 0
+# 
+# When set to a positive value, NeoMutt will wrap text at $wrap characters. When
+# set to a negative value, NeoMutt will wrap text so that there are $wrap
+# characters of empty space on the right side of the terminal. Setting it to zero
+# makes NeoMutt wrap at the terminal width.
+# 
+# Also see $reflow_wrap.
+# 
+set wrap=$reflow_wrap
+
+
+# 3.452. wrap_headers
+# 
+# Type: number
+# Default: 78
+# 
+# This option specifies the number of characters to use for wrapping an outgoing
+# message's headers. Allowed values are between 78 and 998 inclusive.
+# 
+# Note: This option usually shouldn't be changed. RFC5233 recommends a line
+# length of 78 (the default), so please only change this setting when you know
+# what you're doing.
+# 
+
+
+# 3.453. wrap_search
+# 
+# Type: boolean
+# Default: yes
+# 
+# Controls whether searches wrap around the end.
+# 
+# When set, searches will wrap around the first (or last) item. When unset,
+# incremental searches will not wrap.
+# 
+
+
+# 3.454. write_bcc
+# 
+# Type: boolean
+# Default: no
+# 
+# Controls whether NeoMutt writes out the "Bcc:" header when preparing messages
+# to be sent. Some MTAs, such as Exim and Courier, do not strip the "Bcc:"
+# header; so it is advisable to leave this unset unless you have a particular
+# need for the header to be in the sent message.
+# 
+# If NeoMutt is set to deliver directly via SMTP(see $smtp_url), this option does
+# nothing: NeoMutt will never write out the "Bcc:" header in this case.
+# 
+# Note this option only affects the sending of messages. Fcc'ed copies of a
+# message will always contain the "Bcc:" header if one exists.
+# 
+# Note: On Debian systems, exim4 and postfix strip BCC headers by default. The
+# above warning applies to exim3 users, see /etc/Muttrc.
+# 
+
+
+# 3.455. write_inc
+# 
+# Type: number
+# Default: 10
+# 
+# When writing a mailbox, a message will be printed every $write_inc messages to
+# indicate progress. If set to 0, only a single message will be displayed before
+# writing a mailbox.
+# 
+# Also see the $read_inc, $net_inc and $time_inc variables and the "tuning"
+# section of the manual for performance considerations.
+# 
+
+
+# 3.456. x_comment_to
+# 
+# Type: boolean
+# Default: no
+# 
+# If set, NeoMutt will add "X-Comment-To:" field (that contains full name of
+# original article author) to article that followuped to newsgroup.
+# 
+
+# vim:sw=12:noet:sts=12:ts=12:ft=muttrc
diff --git a/.config/neomutt/container-extractor b/.config/neomutt/container-extractor
new file mode 100755 (executable)
index 0000000..5296b7d
--- /dev/null
@@ -0,0 +1,47 @@
+#!/bin/sh
+set -eu
+
+SELF="${0##*/}"
+
+if [ -z "${TMPDIR:-}" ]; then
+  TMPDIR=/tmp
+fi
+for i in $LOGNAME volatile; do
+  if [ -d "${TMPDIR}/$i" ]; then
+    TMPDIR="${TMPDIR}/$i"
+    break
+  fi
+done
+export TMPDIR
+TMPDIR=$(mktemp -dp "$TMPDIR" cont.XXXXXXXXXX)
+cleanup()
+{
+  cd / && rm -r "$TMPDIR"
+  [ ! -t 0 ] || stty echo
+  trap - 0 1 2 3 4 5 6 7 8 10 11 12 13 14 15
+}
+trap cleanup 0 1 2 3 4 5 6 7 8 10 11 12 13 14 15
+
+cd "$TMPDIR"
+
+case "$1" in
+  (application/ms-tnef)            tnef;;
+  (application/x-zip-compressed)   unzip /dev/stdin;;
+  (application/x-7z-compressed)    z7 e /dev/stdin;;
+  (application/zip)                unzip /dev/stdin;;
+esac
+
+nfiles=$(ls -1 | wc -l)
+if [ $nfiles -eq 1 ]; then
+
+  set -x
+  setsid run-mailcap * &
+  PID=$!
+  ZSH_PREFILL_CMD="mv '$(echo -n *)' " x-terminal-emulator
+  perl -e "kill '-TERM', $PID"
+
+else
+
+  ZSH_RUN_ON_LOAD="ls -l" x-terminal-emulator
+
+fi
diff --git a/.config/neomutt/edit-header b/.config/neomutt/edit-header
new file mode 100755 (executable)
index 0000000..ab7444b
--- /dev/null
@@ -0,0 +1,75 @@
+#!/bin/sh
+#
+# edit-header - helper script to append/replace/remove headers with mutt
+#
+# Based on an idea by David Champion <dgc at uchicago.edu>
+#
+# Copyright © 2008 martin f. krafft <madduck@madduck.net>
+# Released under the terms of the Artistic Licence 2.0
+#
+set -eu
+
+if [ ! -x "$(command -v formail)" ]; then
+  echo E: formail not installed. >&2
+  exit 1
+fi
+
+header="${1:-}"
+if [ -z "$header" ]; then
+  echo "E: no header specified" >&2
+  exit 1
+fi
+
+get_header_contents()
+{
+  local contents
+  printf "Enter ${1:-header} contents: " >/dev/tty
+  read contents </dev/tty
+  echo "$contents"
+}
+
+script="${0%/*}/${2:-}"
+if [ -f "$script" ] && [ -x "$script" ]; then
+  if [ -z "${__RLWRAPPED:-}" ] && [ -x $(command -v rlwrap) ]; then
+    __RLWRAPPED=true exec rlwrap "$0" "$@"
+  fi
+
+  contents_source="$script"
+  shift
+else
+  contents_source=get_header_contents
+fi
+
+editor=
+case "$0" in
+  *append-header|*supersede-header|*replace-header)
+    contents="${2:-}"
+    [ -n "$contents" ] || contents="$(eval $contents_source $header)"
+    case "$0" in
+      *append-header) flag=-A;;
+      *supersede-header) flag=-i;;
+      *replace-header) flag=-I;;
+    esac
+    editor="${0%/*}/filter-proxy formail $flag \'$header: $contents\'"
+    ;;
+
+  *remove-header)
+    editor="${0%/*}/filter-proxy formail -I \'$header:\'"
+    ;;
+
+  *)
+    echo "E: unknown invocation: ${0##*/}" >&2
+    exit 1
+    ;;
+
+esac
+
+echo "set my_editor=\"\$editor\""
+echo "set my_filter=\"$editor\""
+echo -n "push '"
+echo -n "<enter-command>set editor=\"\$my_filter\"<enter>"
+echo -n "<edit>"
+echo -n "<enter-command>set editor=\"\$my_editor\"<enter>"
+echo -n "<enter-command>unset my_filter<enter>"
+echo -n "<enter-command>unset my_editor<enter>"
+echo "'"
diff --git a/.config/neomutt/filter-proxy b/.config/neomutt/filter-proxy
new file mode 100755 (executable)
index 0000000..e0b1ad2
--- /dev/null
@@ -0,0 +1,31 @@
+#!/bin/sh
+#
+# filter-proxy - enable filters to work on real files (using tmpfiles)
+#
+# Copyright © 2008 martin f. krafft <madduck@madduck.net>
+# Released under the terms of the Artistic Licence 2.0
+#
+set -eu
+
+cmd=
+file=
+while [ -n "${1:-}" ]; do
+  if [ -z "${2:-}" ]; then
+    file="$1"
+  else
+    case "$1" in
+      *' '*) cmd="$cmd '$1'";;
+      *) cmd="$cmd $1";;
+    esac
+  fi
+  shift
+done
+
+TMPFILE="$(mktemp --tmpdir proxy.XXXXXXXXXX)"
+trap "rm -f $TMPFILE" 0 1 2 3 4 5 6 7 8 10 11 12 13 14 15
+
+eval $cmd <"$file" >$TMPFILE
+cat $TMPFILE >"$file"
+
+rm -f $TMPFILE
+trap - 0 1 2 3 4 5 6 7 8 10 11 12 13 14 15
diff --git a/.config/neomutt/get-timestamp b/.config/neomutt/get-timestamp
new file mode 100755 (executable)
index 0000000..f165be6
--- /dev/null
@@ -0,0 +1,34 @@
+#!/bin/sh
+#
+# get-timestamp - helper script to obtain a timestamp from the user
+#
+# Copyright © 2008 martin f. krafft <madduck@madduck.net>
+# Released under the terms of the Artistic Licence 2.0
+#
+set -eu
+
+if [ -z "${__RLWRAPPED:-}" ] && [ -x $(command -v rlwrap) ]; then
+  __RLWRAPPED=true exec rlwrap "$0" "$@"
+fi
+
+printf 'When should I tickle you about this message? ' >/dev/tty
+read timespec </dev/tty
+
+case "$timespec" in
+  '')
+    echo "E: empty timespec" >&2
+    exit 1
+    ;;
+  @[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9])
+    date="$timespec";;
+  [0-9][0-9][0-9][0-9][-.][0-9][0-9][-.][0-9][0-9])
+    date="$timespec";;
+  *[0-9]y) date="now + ${timespec%y} years 00:00";;
+  *[0-9]m) date="now + ${timespec%m} months 00:00";;
+  *[0-9]w) date="now + ${timespec%w} weeks 00:00";;
+  *[0-9]d|*[0-9]) date="now + ${timespec%d} days 00:00";;
+  *[0-9]h) date="now + ${timespec%h} hours";;
+  *) date="$timespec";;
+esac
+
+exec date +'%s (%c)' -d "$date"
diff --git a/.config/neomutt/headers b/.config/neomutt/headers
new file mode 100644 (file)
index 0000000..dec911f
--- /dev/null
@@ -0,0 +1,37 @@
+unhdr_order *
+hdr_order date
+hdr_order x-spam-relays-untrusted
+hdr_order from
+hdr_order organization organisation
+hdr_order x-eqto x-original-to
+hdr_order to cc
+hdr_order subject
+hdr_order message-id
+hdr_order disposition-notification-to return-receipt-to
+hdr_order x-debian-pr-package
+hdr_order x-spam:
+hdr_order x-trained-as x-crm114-autotrain
+hdr_order user-agent x-mailer x-newsreader
+hdr_order x-justme
+hdr_order x-autoreplied
+hdr_order x-tickle x-postponed x-was-postponed
+
+ignore *
+unignore date
+#unignore x-spam-relays-untrusted
+unignore from
+#unignore organization organisation
+unignore x-eqto
+unignore to cc
+unignore subject
+unignore message-id
+unignore disposition-notification-to return-receipt-to
+unignore x-debian-pr-package
+unignore x-spam:
+#unignore x-trained-as x-crm114-autotrain
+#unignore user-agent x-mailer x-newsreader
+unignore x-justme
+unignore x-autoreplied
+unignore x-tickle x-postponed x-was-postponed
+
+# vim:ft=muttrc
diff --git a/.config/neomutt/hooks b/.config/neomutt/hooks
new file mode 100644 (file)
index 0000000..29b0706
--- /dev/null
@@ -0,0 +1,51 @@
+fcc-save-hook . =store
+
+send2-hook '~C @packages\.qa\.debian\.org' 'my_hdr X-PTS-Approved: please'
+
+fcc-hook -request@ '=discard'
+send-hook '~s "Re: confirm" ~t -request@' 'push pc'
+
+# do not set M-F-T on mails to vger mailing list
+send2-hook . 'set followup_to'
+send2-hook '~C @vger\.kernel\.org' 'unset followup_to'
+
+send2-hook . 'set send_multipart_alternative"
+send2-hook '~C @vger\.kernel\.org' 'unset send_multipart_alternative"
+
+# do a <group-reply> for L when sending to the git mailing list
+# http://marc.info/?l=mutt-users&m=118734866910357&w=2
+#message-hook . 'bind pager L list-reply'
+#message-hook '~C git@vger\.kernel\.org' 'bind pager L group-reply'
+#macro index L '<enter>L'
+# NOTE: using M-F-T from procmail for now
+
+message-hook . 'set attribution="$my_attribution_en"'
+#message-hook '~b "\\<(Danke|Grü(ß|ss)e|Gru(ß|ss)|Lieber?|geehrter?|Herr|Frau|Moin|Servus|Lg|Deine?|Ihre?)\\>"' 'set attribution="$my_attribution_de"'
+
+# do not get spam status via imap, as it would download the entire message
+folder-hook . 'set index_format="%4C %Z %-10@date@ %-15.15F %4c%?M?/[%M]? %?H?[%H] ?%s"'
+folder-hook feeds 'set index_format="%3C %{%F} %-7.7F  %s"'
+folder-hook imaps?:// 'set index_format="%4C %Z %{%F} %-15.15F %4c%?M?/[%M] & ?%s"'
+
+folder-hook spam push '<tag-pattern>~O<enter><tag-prefix><set-flag>n<tag-prefix><clear-flag>*<limit>~N<enter><sort-mailbox>p<first-entry>'
+
+folder-hook . 'set pager_index_lines=5'
+folder-hook feeds|mass 'set pager_index_lines=10'
+
+#folder-hook . 'set mark_old'
+#folder-hook drafts|store|feeds|newsletters 'unset mark_old'
+
+folder-hook store push '<tag-pattern>~O|~N<enter><tag-prefix><clear-flag>n<tag-prefix><clear-flag>*<last-entry>'
+
+# since I have delete=yes, messages marked for trashing on mailbox entry must
+# be due to IMAP clients or the like not purging them. I found that some
+# clients automatically trash read mail from the INBOX, for *whatever* reason.
+# I have not found the authors of those clients yet. In the mean time, since
+# messages are not expected to be marked for deletion on mailbox entry, the
+# following ensures that I lose no more mail.
+folder-hook . push '<undelete-pattern>~D<enter>'
+
+index-format-hook  date  "~d<1d"    "%{%H:%M%Z}"
+index-format-hook  date  "~A"       "%d"
+
+# vim:ft=muttrc
diff --git a/.config/neomutt/htmldump b/.config/neomutt/htmldump
new file mode 100755 (executable)
index 0000000..396b799
--- /dev/null
@@ -0,0 +1,59 @@
+#!/bin/sh
+
+get_mutt_confvar() {
+  local ret;
+  ret=$(neomutt -Q "$1" | sed -rne "s,.+(=| is) *,,p")
+  case "$ret" in
+    (set) echo return 0;;
+    (unset) echo return 1;;
+    ('') echo "${2:-}"; return 1;;
+    (*) echo "$ret";;
+  esac
+}
+
+WRAP=$(get_mutt_confvar wrap 0)
+if [ $WRAP -lt 0 ]; then
+  WIDTH=$((${COLUMNS:-78} + $WRAP))
+
+elif [ $WRAP -gt 0 ]; then
+  WIDTH=$WRAP
+
+fi
+
+awesome-client <<-_eof
+       local naughty = require("naughty")
+       naughty.notify({ preset = naughty.config.presets.low,
+           title  = "htmldump called",
+           text   = [[$@]],
+           })
+       _eof
+
+if command -v html2markdown >/dev/null; then
+
+  exec html2markdown --asterisk-emphasis --body-width=$WIDTH --unicode-snob \
+    --no-skip-internal-links --links-after-para --no-wrap-links \
+    --decode-errors=replace --images-to-alt - "$2"| \
+    sed -re 's,^\\--[[:space:]]+$,-- ,'
+
+elif command -v pandoc >/dev/null; then
+
+  exec iconv -f "$2" -t utf-8 | pandoc -s -f html -t markdown_mmd \
+    --columns=$WIDTH
+
+elif command -v elinks >/dev/null; then
+
+  exec elinks -anonymous -localhost -eval "set document.codepage.assume = '$2'" \
+    -dump-width $WIDTH \
+    -eval "set document.browse.margin_width = 0" \
+    -force-html -dump -dump-charset utf-8 -dump-color-mode 0
+
+elif command -v w3m >/dev/null; then
+
+  exec w3m -I "$2" -O utf-8 -T text/html -dump -cols $WIDTH
+
+else
+
+  echo >&2 No HTML to text converter found.
+  exit 1
+
+fi
diff --git a/.config/neomutt/icalparser b/.config/neomutt/icalparser
new file mode 100755 (executable)
index 0000000..50ed472
--- /dev/null
@@ -0,0 +1,74 @@
+#!/usr/bin/python3
+
+import sys
+import os
+from icalendar import Calendar, Event
+from textwrap import fill, indent
+
+FIELDS = ('summary','location','organiser',
+          'flags','uid','rrule')
+COLSEP = ': '
+
+COLUMNS = int(os.getenv('COLUMNS', 80))-10
+WIDTH = max(len(i) for i in FIELDS)
+INDENT = WIDTH + len(COLSEP)
+
+def dtstrs(event):
+    start, end = event.get('dtstart').dt, event.get('dtend')
+    if not end:
+        duration = event.get('duration').dt
+        end = start + duration
+    else:
+        end = end.dt
+
+    def strftime(dt, strf):
+        return dt.astimezone().strftime(strf)
+
+    ret = []
+    if start.tzinfo == end.tzinfo:
+        ret.append(strftime(start, '%F %R'))
+
+    else:
+        ret.append(strftime(start, '%F %R %Z'))
+
+    if start.date() == end.date():
+        ret.append(strftime(end, '%T %Z'))
+
+    else:
+        ret.append(strftime(end, '%F %R %Z'))
+
+    return ret
+
+def parse_ics_file(fp):
+    cal = Calendar.from_ical(fp.read())
+
+    for event in cal.walk():
+        if event.name != "VEVENT": continue
+        print('{} → {}'.format(*dtstrs(event)))
+        flags = []
+        for k in ('status', 'class', 'transp', 'priority'):
+            t = event.get(k)
+            if t: flags.append((k, t))
+        event['flags'] = ' '.join('{}:{}'.format(*f) for f in flags)
+        for label in FIELDS:
+            if label in event:
+                text = fill(str(event[label]), width=COLUMNS-INDENT,
+                            initial_indent='', subsequent_indent=' '*INDENT)
+                print(f'{label.capitalize():>{WIDTH}s}{COLSEP}{text}')
+
+        if 'description' in event:
+            output = ['']
+            lines = event['description'].split('\n')
+            for line in lines:
+                output.append(fill(line, width=COLUMNS, initial_indent=' ',
+                                   subsequent_indent=' '))
+            print('\n'.join(output))
+
+if __name__ == '__main__':
+
+    if len(sys.argv) > 1 and sys.argv[1] != '-':
+        for f in sys.argv[1:]:
+            with open(f) as fp:
+                parse_ics_file(fp)
+    else:
+        parse_ics_file(sys.stdin)
diff --git a/.config/neomutt/keybindings b/.config/neomutt/keybindings
new file mode 100644 (file)
index 0000000..8283146
--- /dev/null
@@ -0,0 +1,97 @@
+macro generic,pager <F1> "<shell-escape> zcat /usr/share/doc/neomutt/manual.txt.gz | sensible-pager<enter>" "show Neomutt documentation"
+
+bind index,pager       |       pipe-message
+bind index,pager       !       flag-message
+bind index,pager       \eP     print-message
+bind index,pager       <up>    previous-entry
+bind index,pager       <down>  next-entry
+bind index,pager       \eU     undelete-subthread
+bind index,pager       \eD     delete-subthread
+
+bind index             0       first-entry
+bind index             G       last-entry
+bind pager             0       top
+bind pager             G       bottom
+
+bind pager,index       <backtab>       previous-unread
+
+macro index    p       "<enter-command><enter>" "do nothing"
+
+bind index             h       noop
+
+macro index            \es     "<tag-prefix><enter-command> set my_weed=\$weed<enter><enter-command> set my_resolve=\$resolve<enter><enter-command> set noweed noresolve<enter><decode-save>^<enter><next-entry><clear-flag>n<enter-command> set weed=\$my_weed<enter><enter-command> set resolve=\$my_resolve<enter>" "decode message to current folder"
+macro pager            \es     "<enter-command> set my_weed=\$weed<enter><enter-command> set my_resolve=\$resolve<enter><enter-command> set noweed noresolve<enter><decode-save>^<enter><next-entry><clear-flag>n<enter-command> set weed=\$my_weed<enter><enter-command> set resolve=\$my_resolve<enter>" "decode message to current folder"
+macro index            \eS     "<tag-prefix><save-message><<enter>" "save messages to store"
+macro pager            \eS     "<save-message><<enter>" "save message to store"
+macro index            S       "<tag-prefix><enter-command> set my_weed=\$weed<enter><enter-command> set my_resolve=\$resolve<enter><enter-command> set noweed noresolve<enter><decode-save><<enter><next-entry><enter-command> set weed=\$my_weed<enter><enter-command> set resolve=\$my_resolve<enter>" "decode message to $record folder"
+macro pager            S       "<enter-command> set my_weed=\$weed<enter><enter-command> set my_resolve=\$resolve<enter><enter-command> set noweed noresolve<enter><decode-save><<enter><next-entry><enter-command> set weed=\$my_weed<enter><enter-command> set resolve=\$my_resolve<enter><display-toggle-weed><display-toggle-weed>" "decode message to $record folder"
+
+macro index,pager      E       '<enter-command> source "$my_confdir/supersede-header X-Tickle get-timestamp|"<enter><next-undeleted><save-message>=resubmit<enter>' "schedule messages with tickler"
+macro index,pager      \ex     '<enter-command> source "$my_confdir/remove-header X-Postponed|"<enter>' "release postponed messages"
+
+macro index,pager      \e,     "<change-folder><<enter>" "go to $record folder"
+macro index,pager      \e.     "<change-folder>><enter>" "go to $spool folder"
+macro index,pager      \e1     "<change-folder>!<enter>" "go to inbox folder"
+
+bind index             \eT     tag-thread
+bind index,pager       \eK     mail-key
+
+macro index,pager      \eR     "<enter-command> source $my_confdir/neomuttrc<enter>" "reload muttrc"
+macro compose  \eR     "<enter-command> source $my_confdir/neomuttrc<enter>" "reload muttrc"
+
+macro index            X       "<tag-prefix><save-message>=retrain/spam<enter>" "retrain message as spam"
+macro pager            X       "<save-message>=retrain/spam<enter>" "retrain message as spam"
+macro index            Z       "<tag-prefix><save-message>=retrain/ham<enter>" "retrain message as ham"
+macro pager            Z       "<save-message>=retrain/ham<enter>" "retrain message as ham"
+
+macro index,pager,attach,compose       \Cb     "<enter-command> set my_pipe_decode=\$pipe_decode<enter><enter-command> set pipe_decode<enter><pipe-message>/usr/bin/urlscan<enter><enter-command> set pipe_decode=\$my_pipe_decode<enter>" "invoke urlscan"
+
+macro compose  Y       '<edit-fcc><kill-line><enter><send-message>' "send message without storing"
+macro compose  \Cy     '<pgp-menu>c<send-message>' "send message without signing"
+macro compose  \CY     '<pgp-menu>cY' "send message without storing signing"
+macro compose  N       '<enter-command> unset fcc_attach<enter>' "do not fcc-store attachment"
+
+macro index,pager      F       '<limit>~L ' "search for correspondents"
+macro index,pager      \ef     '<limit>~(~L )<left>' "search for correspondents (show complete threads)"
+
+bind index,pager       \en     search-opposite
+
+macro pager    p       '<pipe-message>less -c<enter>' "pipe message into pager"
+
+bind pager             [       half-up
+bind pager             ]       half-down
+
+#TODO this is a hack until switch-profile does not readd headers.
+macro compose  e       "<enter-command> set my_editor=\$editor<enter><enter-command> set editor=sensible-editor<enter><edit-headers><enter-command> set editor=\$my_editor<enter>" "invoke normal editor to edit message"
+macro index,pager      e       "<enter-command> set my_editor=\$editor<enter><enter-command> set editor=sensible-editor<enter><edit><enter-command> set editor=\$my_editor<enter>" "invoke normal editor to edit message"
+
+macro index            \ej     "<enter-command> set my_editor=\$editor<enter><enter-command> source $my_confdir/batch-subject-editor|<enter><tag-prefix><edit><enter-command> set editor=\$my_editor<enter>" "change message subject"
+
+macro index,pager      \er     "<enter-command> set my_editor=\$editor<enter><enter-command> set editor=\"$my_confdir/reuse-message \$my_editor\"<enter><reply><enter-command> set editor=\$my_editor<enter>" "invoke normal editor to edit message"
+macro index,pager      \eg     "<enter-command> set my_editor=\$editor<enter><enter-command> set editor=\"$my_confdir/reuse-message \$my_editor\"<enter><group-reply><enter-command> set editor=\$my_editor<enter>" "invoke normal editor to edit message"
+macro index,pager      \el     "<enter-command> set my_editor=\$editor<enter><enter-command> set editor=\"$my_confdir/reuse-message \$my_editor\"<enter><list-reply><enter-command> set editor=\$my_editor<enter>" "invoke normal editor to edit message"
+
+# override F6 from notmuch-mutt
+macro index            <F6>    "<enter-command><enter>" "do nothing"
+
+macro attach   e       "<enter-command> set my_mailcap_path=\$mailcap_path<enter><enter-command> set mailcap_path=$my_confdir/mailcap.editing<enter><view-mailcap><enter-command> set mailcap_path=\$my_mailcap_path<enter>" "Call view in the mailcap edit context"
+macro attach   E       "<enter-command> set my_mailcap_path=\$mailcap_path<enter><enter-command> set mailcap_path=$my_confdir/mailcap.editing<enter><print-entry><enter-command> set mailcap_path=\$my_mailcap_path<enter>" "Call print in the mailcap edit context""
+
+macro index,pager      M       "<enter-command> set my_weed=\$weed<enter><enter-command> set noweed<enter><pipe-message>formail -czx X-RSS-URL: | xargs sensible-browser<enter><enter-command> set weed=\$my_weed<enter>"
+
+macro index,pager      <F10>   "<enter-command> set my_pipe_decode=\$pipe_decode<enter><enter-command> unset pipe_decode<enter><pipe-message>$my_confdir/viewmailattachments<enter><enter-command> set pipe_decode=\$my_pipe_decode<enter>" "view attachments in browser"
+
+macro compose  \ez     "<enter-command> set my_editor=\$editor<enter><enter-command> set editor='mogrify -sample 1000x1000'<enter><edit-file><enter-command> set editor=\$my_editor<enter>" "Resize attached image to within 1000x1000"
+macro compose  \eZ     "<enter-command> set my_editor=\$editor<enter><enter-command> set editor='mogrify -sample 2500x2500'<enter><edit-file><enter-command> set editor=\$my_editor<enter>" "Resize attached image to within 1000x1000"
+
+bind index,pager       <left>          sidebar-prev
+bind index,pager       \e<up>          sidebar-prev
+bind index,pager       <right>         sidebar-next
+bind index,pager       \e<down>                sidebar-next
+bind index,pager       \e<return>              sidebar-open
+bind index,pager       \e<pageup>              sidebar-page-up
+bind index,pager       \e<pagedown>    sidebar-page-down
+
+bind index,pager       \\              sidebar-toggle-visible
+
+# vim:sw=12:noet:sts=12:ts=12:ft=muttrc
diff --git a/.config/neomutt/list-mailboxes b/.config/neomutt/list-mailboxes
new file mode 100755 (executable)
index 0000000..d0bb5d5
--- /dev/null
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+if [ -f $VARDIR/offlineimap/mailboxes ]; then
+  sed 1d $VARDIR/offlineimap/mailboxes
+fi
+
+find "$1/" -type d -name cur -printf '%h\n' | \
+  sed -e "s,^$1/,=,g" -e "s,^$1\$,$2," | \
+  egrep -v '^=(sp(ool|am)|discard|retrain(/(sp|h)am)?)$' | sort | \
+while read mailbox; do
+
+  ! grep -q "^mailboxes ${mailbox}\$" $VARDIR/offlineimap/mailboxes || continue
+  echo "mailboxes $mailbox"
+
+done
diff --git a/.config/neomutt/lists b/.config/neomutt/lists
new file mode 100644 (file)
index 0000000..c2fb824
--- /dev/null
@@ -0,0 +1,114 @@
+lists staff@sccs.swarthmore.edu
+subscribe slug@sccs.swarthmore.edu
+
+subscribe presse@uni-wh.de
+
+subscribe ailab-curiosa@lists.ifi.uzh.ch
+
+subscribe debian-books@lists.debian.org
+subscribe debian-curiosa@lists.debian.org
+subscribe debian-devel-announce@lists.debian.org
+subscribe debian-devel@lists.debian.org
+subscribe debian-events-eu@lists.debian.org
+subscribe debian-events@lists.debian.org
+subscribe debian-firewall@lists.debian.org
+subscribe debian-infrastructure-announce@lists.debian.org
+subscribe debian-ipv6@lists.debian.org
+subscribe debian-isp@lists.debian.org
+subscribe debian-lsb@lists.debian.org
+subscribe debian-mentors@lists.debian.org
+subscribe debian-private@lists.debian.org
+subscribe debian-project@lists.debian.org
+subscribe debian-release@lists.debian.org
+subscribe debian-research@lists.debian.org
+subscribe debian-security-announce@lists.debian.org
+subscribe debian-user@lists.debian.org
+subscribe debian-user-german@lists.debian.org
+subscribe debian-vote@lists.debian.org
+subscribe debian-women@lists.debian.org
+subscribe debian-roadmap@lists.alioth.debian.org
+
+subscribe debconf-announce@lists.debconf.org
+subscribe debconf-discuss@lists.debconf.org
+subscribe debconf-team@lists.debconf.org
+subscribe debconf-sponsors-team@lists.debconf.org
+subscribe debconf-thailand@lists.madduck.net
+subscribe debconf15-team@lists.debian.org
+subscribe debconf16-team@lists.debian.org
+subscribe debconf-kids@lists.debian.org
+
+subscribe lca-announce@lists.linux.org.au
+subscribe (lca20[0-9][0-9]-)?chat@lists.(lca20[0-9][0-9]\.)?linux.org.au
+subscribe yct@lists.lca20[1-9][0-9]\.linux\.org\.au
+
+subscribe area-muc@teams.debian.net
+subscribe community@lists.debian.ch
+
+subscribe cong@agouros.de
+
+subscribe pkg-salt-team@lists.alioth.debian.org
+
+#subscribe (community|discuss)@opensource.mit.edu
+subscribe os-renet@insel.cs.tu-berlin.de
+subscribe openchat@lists.nzoss.org.nz
+subscribe campers@groups.baacamp.org
+
+subscribe ansible-project@googlegroups.com
+subscribe asterisk-users@lists.digium.com
+subscribe backuppc-users@lists.sourceforge.net
+subscribe dovecot@dovecot.org
+subscribe libvirt-users@redhat.com
+subscribe mailtags@lists.madduck.net
+subscribe mutt-users@mutt.org
+subscribe netconf-devel@lists.alioth.debian.org
+subscribe offlineimap-project@lists.alioth.debian.org
+subscribe postfix-users@postfix.org
+subscribe rsyslog@lists.adiscon.com
+subscribe salt-users@googlegroups.com
+subscribe sane-devel@lists.alioth.debian.org
+subscribe users@spamassassin.apache.org
+subscribe vcs-pkg-discuss@lists.alioth.debian.org
+subscribe vim(@vim.org|_use@googlegroups\.com)
+subscribe zsh-(users|workers)@zsh.org
+subscribe vmm-users@lists.sourceforge.net
+subscribe osmand@googlegroups.com
+subscribe users@global.libreoffice.org
+subscribe linux-kernel@vger.kernel.org
+subscribe netfilter@vger.kernel.org
+subscribe django-(user|developer)s@googlegroups.com
+subscribe openssh-unix-dev@mindrot.org
+subscribe unison-users@yahoogroups.com
+subscribe unison-hackers@lists.seas.upenn.edu
+subscribe users@sogo.nu
+subscribe systemd-devel@lists.freedesktop.org
+subscribe community@mail.odoo.com
+subscribe munin-users@lists.sourceforge.net
+subscribe gnupg-users@gnupg.org
+subscribe awesome@naquadah.org
+subscribe germany@lists.fsfe.org
+subscribe talk@lists.muc.ccc.de
+subscribe cryptography@metzdowd.com
+subscribe davical-general@lists.sourceforge.net
+subscribe tigervnc-users@googlegroups.com
+
+subscribe openedu-parents@lists.openstem.com.au
+
+subscribe vcs-home@lists.madduck.net
+
+subscribe webis-android-beta@googlegroups.com
+
+subscribe django-users@googlegroups.com
+
+subscribe (alteherren|info)@sudetia\.de
+
+subscribe ip@(v2.)?listbox.com
+subscribe cypherpunks@cpunks.org
+
+subscribe thorndon-c@lists.madduck.net
+
+subscribe staffordstreet@lists.madduck.net
+
+subscribe .+@r2e\.madduck\.net
+subscribe blog@lists.madduck.net
+
+# vim:ft=muttrc
diff --git a/.config/neomutt/mailcap.backgrounding b/.config/neomutt/mailcap.backgrounding
new file mode 100644 (file)
index 0000000..f3d7136
--- /dev/null
@@ -0,0 +1,8 @@
+#
+# Neomutt mailcap for backgrounding
+
+text/html; ~/.config/neomutt/bgview-delay -t %t; description=Backgrounded run of run-mailcap with delayed cleanup
+application/*; ~/.config/neomutt/bgview -t %t; description=Backgrounded run of run-mailcap
+image/*; ~/.config/neomutt/bgview -t %t; description=Backgrounded run of run-mailcap
+audio/*; ~/.config/neomutt/bgview -t %t; description=Backgrounded run of run-mailcap
+#multipart/related; ~/.config/neomutt/viewmailattachments; description=Backgrounded loading of HTML message with related parts
diff --git a/.config/neomutt/mailcap.containers b/.config/neomutt/mailcap.containers
new file mode 100644 (file)
index 0000000..9ea3892
--- /dev/null
@@ -0,0 +1,8 @@
+#
+# Neomutt mailcap for handling containers
+#
+
+application/ms-tnef; ~/.config/neomutt/container-extractor '%t'; description=Microsoft NIH TNEF
+application/x-zip-compressed; ~/.config/neomutt/container-extractor '%t'; description=Compressed ZIP files
+application/x-7z-compressed; ~/.config/neomutt/container-extractor '%t'; description=Compressed ZIP files
+application/zip; ~/.config/neomutt/container-extractor '%t'; description=Compressed ZIP files
diff --git a/.config/neomutt/mailcap.editing b/.config/neomutt/mailcap.editing
new file mode 100644 (file)
index 0000000..e58143b
--- /dev/null
@@ -0,0 +1,3 @@
+application/pdf; pdftool --file -f %s; print=pdftool --proc -f %s
+application/*; ~/.config/neomutt/bgview -t %t
+image/*; ~/.config/neomutt/bgview -t %t
diff --git a/.config/neomutt/mailcap.htmldump b/.config/neomutt/mailcap.htmldump
new file mode 100644 (file)
index 0000000..624bb9f
--- /dev/null
@@ -0,0 +1,5 @@
+#
+# Neomutt mailcap for dumping HTML to text
+#
+
+text/html; ~/.config/neomutt/htmldump --from %{charset}; description=HTML Text; nametemplate=%s.html; copiousoutput
diff --git a/.config/neomutt/mailcap.icalendar b/.config/neomutt/mailcap.icalendar
new file mode 100644 (file)
index 0000000..c6816fc
--- /dev/null
@@ -0,0 +1,7 @@
+#
+# Neomutt mailcap for iCalendar previewing/khal import
+
+text/calendar; ~/.config/neomutt/icalparser; description=iCal details; copiousoutput; \
+  print=sh -c "sensible-editor '%s' && khal import '%s'";
+application/ics; ~/.config/neomutt/icalparser; description=iCal details; copiousoutput; \
+  print=sh -c "sensible-editor '%s' && khal import '%s'";
diff --git a/.config/neomutt/mkconf b/.config/neomutt/mkconf
new file mode 100755 (executable)
index 0000000..bab2a10
--- /dev/null
@@ -0,0 +1,78 @@
+#!/bin/sh
+#
+# BEWARE THIS IS UGLY
+#
+# I like this approach because it imports the full documentation for each
+# setting. However, `mutt -O -D` may be much better suited for your needs.
+#
+set -eu
+
+FILE="${1:-${0%/*}/confvars}"
+TARGET="${2:-}"
+
+if [ ! -f "$FILE" ]; then
+  echo >&2 "E: File $FILE does not exist"
+  exit 1
+fi
+
+if [ -z "$TARGET" ]; then
+  TARGET="$FILE"
+fi
+
+TMPFILE="$(mktemp -t vit.XXXXXXXX)"
+cleanup() { rm -f "$TMPFILE"; trap - 1 2 3 4 5 6 7 8 10 11 12 13 14 15; }
+trap cleanup 1 2 3 4 5 6 7 8 10 11 12 13 14 15
+
+process_stanza() {
+  echo "$2"
+  local opt setting trailer
+  opt="$(sed -ne "/^set ${1}=/,/# 3\./p" $FILE)"
+  if [ -n "$opt" ]; then
+    opt="${opt%
+*}"
+    setting="${opt%%
+*}"
+    echo >&2 "Importing setting: $setting …"
+    echo "$setting"
+    echo "$opt" | grep '^#' || :
+  fi
+  echo
+  echo
+}
+
+option=
+{ zcat /usr/share/doc/neomutt/manual.txt.gz | \
+  sed -e '1,/^3\. Configuration Variables$/d;1d;/^4\./,$d' -e 's, , ,g';
+  echo END; } | \
+
+while read first rest; do
+  line="$first ${rest%% }"
+  case "$first" in
+    (3.[0-9]*|END)
+      [ -z "$option" ] || \
+        process_stanza "$option" "${stanza}"
+      stanza="# $line"
+      option="$rest"
+      ;;
+    ('')
+      stanza="${stanza:+$stanza\n}#$line"
+      ;;
+    (*)
+      stanza="${stanza:+$stanza\n}# $line"
+      ;;
+  esac
+
+done > $TMPFILE
+
+cat <<_eof > "$TARGET"
+# Auto-generated using mkconf from manual.txt
+# on $(date +'%Y-%m-%d %H:%M:%S')
+#
+# Invoked as: $0${1:+ $@}
+#
+
+$(cat "$TMPFILE")
+
+# vim:sw=12:noet:sts=12:ts=12:ft=muttrc
+_eof
+cleanup
diff --git a/.config/neomutt/neomuttrc b/.config/neomutt/neomuttrc
new file mode 100644 (file)
index 0000000..3c02cde
--- /dev/null
@@ -0,0 +1,63 @@
+set my_confdir="$HOME/.config/neomutt"
+
+set my_attribution_de="Hinsichtlich folgendem, das \"%n\" am %{%Y-%m-%d} um %{%H:%M Uhr %Z} schrieb:"
+set my_attribution_en="Regarding the following, written by \"%n\" on %{%Y-%m-%d} at %{%H:%M Uhr %Z}:"
+
+source $my_confdir/confvars
+source $my_confdir/colours
+source $my_confdir/headers
+source $my_confdir/alternates
+source $my_confdir/keybindings
+source $my_confdir/lists
+source $my_confdir/spam
+#source $my_confdir/hooks
+
+auto_view text/html text/calendar
+#auto_view application/x-gunzip application/x-tar-gz application/x-tar application/x-gtar
+#auto_view application/postscript
+alternative_order multipart/mixed multipart/related text/html text/enriched text/*
+#alternative_order text/plain text/enriched text/html
+#alternative_order text/enriched text/plain text application/postscript image/*
+mime_lookup application/octet-stream
+
+mailto_allow cc in-reply-to references subject body
+
+source "test -f $alias_file && cat $alias_file 2>/dev/null || echo unset alias_file|"
+
+#virtual-mailboxes "all" "notmuch://?query=*"
+#virtual-mailboxes "unread" "notmuch://?query=tag:unread"
+#virtual-mailboxes "read" "notmuch://?query=not:tag:unread"
+#virtual-mailboxes "spam" "notmuch://?query=tag:spam"
+
+#bind index,pager X change-vfolder
+#bind index,pager + entire-thread
+## generate virtual folder from query
+#bind index,pager \eX vfolder-from-query
+## generate virtual folder from query with time window
+#bind index < vfolder-window-backward
+#bind index > vfolder-window-forward
+#
+#bind index,pager \` modify-labels
+#macro index,pager \Ct "<modify-labels>!todo<enter>" "Toggle the 'todo' tag"
+#
+#index-format-hook  date  "~d<1d"    "%{%H:%M%Z}"
+#index-format-hook  date  "~A"       "%d"
+#
+#tag-transforms "unread"  "N"   \
+#               "replied" "r "  \
+#               "archive" "➥ "  \
+#               "todo"    "T"   \
+#               "deleted" "␡" \
+#               "invites" "CAL"
+#
+#tag-formats "inbox"   "GI" \
+#            "unread"  "GU" \
+#            "replied" "GR" \
+#            "sent"    "GS" \
+#            "todo"    "Gt" \
+#            "deleted" "GD" \
+#            "invites" "Gi"
+#
+#set index_format="%4C %?GU?%GU& ?%?GR?%GR& ?%?GI?%GI& ? %-10@date@ %-15.15F %4c%?M?/[%M]? %?H?[%H] ?%s"
+#
+#set pager_format="<%a> %*  %J (%P)"
diff --git a/.config/neomutt/remove-header b/.config/neomutt/remove-header
new file mode 100755 (executable)
index 0000000..ab7444b
--- /dev/null
@@ -0,0 +1,75 @@
+#!/bin/sh
+#
+# edit-header - helper script to append/replace/remove headers with mutt
+#
+# Based on an idea by David Champion <dgc at uchicago.edu>
+#
+# Copyright © 2008 martin f. krafft <madduck@madduck.net>
+# Released under the terms of the Artistic Licence 2.0
+#
+set -eu
+
+if [ ! -x "$(command -v formail)" ]; then
+  echo E: formail not installed. >&2
+  exit 1
+fi
+
+header="${1:-}"
+if [ -z "$header" ]; then
+  echo "E: no header specified" >&2
+  exit 1
+fi
+
+get_header_contents()
+{
+  local contents
+  printf "Enter ${1:-header} contents: " >/dev/tty
+  read contents </dev/tty
+  echo "$contents"
+}
+
+script="${0%/*}/${2:-}"
+if [ -f "$script" ] && [ -x "$script" ]; then
+  if [ -z "${__RLWRAPPED:-}" ] && [ -x $(command -v rlwrap) ]; then
+    __RLWRAPPED=true exec rlwrap "$0" "$@"
+  fi
+
+  contents_source="$script"
+  shift
+else
+  contents_source=get_header_contents
+fi
+
+editor=
+case "$0" in
+  *append-header|*supersede-header|*replace-header)
+    contents="${2:-}"
+    [ -n "$contents" ] || contents="$(eval $contents_source $header)"
+    case "$0" in
+      *append-header) flag=-A;;
+      *supersede-header) flag=-i;;
+      *replace-header) flag=-I;;
+    esac
+    editor="${0%/*}/filter-proxy formail $flag \'$header: $contents\'"
+    ;;
+
+  *remove-header)
+    editor="${0%/*}/filter-proxy formail -I \'$header:\'"
+    ;;
+
+  *)
+    echo "E: unknown invocation: ${0##*/}" >&2
+    exit 1
+    ;;
+
+esac
+
+echo "set my_editor=\"\$editor\""
+echo "set my_filter=\"$editor\""
+echo -n "push '"
+echo -n "<enter-command>set editor=\"\$my_filter\"<enter>"
+echo -n "<edit>"
+echo -n "<enter-command>set editor=\"\$my_editor\"<enter>"
+echo -n "<enter-command>unset my_filter<enter>"
+echo -n "<enter-command>unset my_editor<enter>"
+echo "'"
diff --git a/.config/neomutt/replace-header b/.config/neomutt/replace-header
new file mode 100755 (executable)
index 0000000..ab7444b
--- /dev/null
@@ -0,0 +1,75 @@
+#!/bin/sh
+#
+# edit-header - helper script to append/replace/remove headers with mutt
+#
+# Based on an idea by David Champion <dgc at uchicago.edu>
+#
+# Copyright © 2008 martin f. krafft <madduck@madduck.net>
+# Released under the terms of the Artistic Licence 2.0
+#
+set -eu
+
+if [ ! -x "$(command -v formail)" ]; then
+  echo E: formail not installed. >&2
+  exit 1
+fi
+
+header="${1:-}"
+if [ -z "$header" ]; then
+  echo "E: no header specified" >&2
+  exit 1
+fi
+
+get_header_contents()
+{
+  local contents
+  printf "Enter ${1:-header} contents: " >/dev/tty
+  read contents </dev/tty
+  echo "$contents"
+}
+
+script="${0%/*}/${2:-}"
+if [ -f "$script" ] && [ -x "$script" ]; then
+  if [ -z "${__RLWRAPPED:-}" ] && [ -x $(command -v rlwrap) ]; then
+    __RLWRAPPED=true exec rlwrap "$0" "$@"
+  fi
+
+  contents_source="$script"
+  shift
+else
+  contents_source=get_header_contents
+fi
+
+editor=
+case "$0" in
+  *append-header|*supersede-header|*replace-header)
+    contents="${2:-}"
+    [ -n "$contents" ] || contents="$(eval $contents_source $header)"
+    case "$0" in
+      *append-header) flag=-A;;
+      *supersede-header) flag=-i;;
+      *replace-header) flag=-I;;
+    esac
+    editor="${0%/*}/filter-proxy formail $flag \'$header: $contents\'"
+    ;;
+
+  *remove-header)
+    editor="${0%/*}/filter-proxy formail -I \'$header:\'"
+    ;;
+
+  *)
+    echo "E: unknown invocation: ${0##*/}" >&2
+    exit 1
+    ;;
+
+esac
+
+echo "set my_editor=\"\$editor\""
+echo "set my_filter=\"$editor\""
+echo -n "push '"
+echo -n "<enter-command>set editor=\"\$my_filter\"<enter>"
+echo -n "<edit>"
+echo -n "<enter-command>set editor=\"\$my_editor\"<enter>"
+echo -n "<enter-command>unset my_filter<enter>"
+echo -n "<enter-command>unset my_editor<enter>"
+echo "'"
diff --git a/.config/neomutt/reuse-message b/.config/neomutt/reuse-message
new file mode 100755 (executable)
index 0000000..0d8ed23
--- /dev/null
@@ -0,0 +1,35 @@
+#!/bin/sh
+set -eu
+
+eval mailfile="\${$#}"
+editor=
+for i in "$@"; do
+  # strip last argument from editor, yuk
+  case "$i" in
+    ("$mailfile") break;;
+    (*) editor="${editor:+$editor }$i";;
+  esac
+done
+
+tmpfile=$(mktemp --tmpdir reuse.XXXXXXXXXX)
+cleanup() { rm -f "$tmpfile"; trap - 1 2 3 4 5 6 7 8 10 11 12 13 14 15; }
+trap cleanup 1 2 3 4 5 6 7 8 10 11 12 13 14 15
+
+formail -I Subject: < "$mailfile" | \
+  formail -I In-Reply-To: | \
+  sed -e '/^$/,/^-- /d' | \
+  sed -e '/^Bcc:/aSubject: ' > "$tmpfile"
+cat "$tmpfile" > "$mailfile"
+
+cleanup
+
+if [ -n "$editor" ]; then
+  eval exec "$editor" "$mailfile"
+
+# the last three replicate mutt's default (cf. manual)
+elif [ -n "$VISUAL" ]; then
+  eval exec "$VISUAL" "$mailfile"
+elif [ -n "$EDITOR" ]; then
+  eval exec "$EDITOR" "$mailfile"
+fi
+exec /usr/bin/editor "$mailfile"
diff --git a/.config/neomutt/sendmail b/.config/neomutt/sendmail
new file mode 100755 (executable)
index 0000000..cd0b8dd
--- /dev/null
@@ -0,0 +1,49 @@
+#!/bin/sh
+#
+# neomutt/sendmail – sendmail wrapper to enforce some checks on outgoing mails
+#
+# The script basically just creates a temporary file and then invokes any
+# executable scripts in ~/.config/neomutt/sendmail-checks.d in run-parts style.
+# They receive the filename of a temporary file holding the message to be sent
+# as $1, followed by all recipients as determined by mutt.
+#
+# Copyright © 2010 martin f. krafft <madduck@madduck.net> Released under the
+# terms of the Artistic Licence 2.0
+#
+set -eux
+
+CHECKSDIR="$HOME/.config/neomutt/sendmail-checks.d"
+SENDMAIL="/usr/sbin/sendmail -oem -oi"
+
+TMPFILE=$(mktemp --tmpdir mutt-sendmail.XXXXXXXXXX.msg)
+settrap () { trap "$@" 0 1 2 3 4 5 6 7 8 10 11 12 13 14 15; }
+cleanup () { rm -f "$TMPFILE"; settrap -; }
+settrap cleanup
+
+argtype=s
+recipients= sendmail_args=
+for i in "$@"; do
+  case "$argtype/$i" in
+    (s/--) argtype=r;;
+    (s/*) sendmail_args="${sendmail_args} $i";;
+    (r/*) recipients="${recipients} $i";;
+  esac
+done
+
+cat > $TMPFILE
+
+remove_headers=
+if ! formail -czx "Resent-" < "$TMPFILE" | grep -q .; then
+  # only do this for original mails, not bounces
+  recipients="$recipients $(formail -czx "X-Bcc" < "$TMPFILE" | tr -d ',')"
+  remove_headers="$remove_headers -IX-Bcc"
+fi
+args=$(for i in $recipients; do echo "--arg=$i"; done)
+run-parts --exit-on-error --umask=0077 --arg="$TMPFILE" $args -- "$CHECKSDIR"
+
+recipients=$(echo "$recipients" | xargs)
+
+formail $remove_headers < "$TMPFILE" \
+  | eval $SENDMAIL "$sendmail_args" -- "$recipients"
+
+cleanup
diff --git a/.config/neomutt/sendmail-checks.d/ack-recipients b/.config/neomutt/sendmail-checks.d/ack-recipients
new file mode 100755 (executable)
index 0000000..350ec44
--- /dev/null
@@ -0,0 +1,53 @@
+#!/bin/sh
+#
+# ack-recipients – require double-checking of some recipients
+#
+# refuse to send a mail as long as recipients listed in
+# ~/.config/mutt/ack-recipients are not individually "signed-off" by adding
+# their e-mail addresses to the X-Acked header. This header is removed from
+# the mail before it is sent.
+#
+# The file ~/.config/mutt/ack-recipients stores sha256sums of lower-cased
+# e-mail addresses (no newline) instead of the addresses themselves as a
+# measure to protect privacy. You can get new lines like this:
+#
+#   printf my.new@e-mail.addre.ss | tr '[[:upper:]]' '[[:lower:]]' \
+#     | sha256sum | sed -e 's, .*,,'
+#
+# E.g. my address (see below) will become
+#   84d5b33c9376f67274c2ec9ce0e03b6973fb8bc943ebd7abb470c903c47e00f4
+#
+# Copyright © 2010 martin f. krafft <madduck@madduck.net>
+# Released under the terms of the Artistic Licence 2.0
+#
+set -eu
+
+CHECKLIST="$HOME/.config/mutt/ack-recipients"
+HEADER=X-Acked
+ACKED_RCPTS=$(formail -czx ${HEADER}: < $1 | sed -re 's/,\s*/ /g' | tr '[[:upper:]]' '[[:lower:]]')
+MAILFILE="$1"; shift
+
+ret=0
+for r in $@; do
+  ack=0
+  # check if this recipient is in the list of acked recipients
+  rl=$(printf $r | tr '[[:upper:]]' '[[:lower:]]')
+  for a in $ACKED_RCPTS; do [ $a = $rl ] && ack=1 && break; done
+  rs=$(printf $rl | sha256sum)
+  # now check if this unacked recipient needs to be acked
+  if [ $ack -eq 0 ] && grep -q "^${rs%% *}$" "$CHECKLIST"; then
+    echo >&2 "E: will not send mail until $r has been added to the $HEADER header"
+    ret=1
+  fi
+done
+
+[ $ret -eq 0 ] || exit $ret
+
+# now remove the X-Acked header from the mail
+TMPFILE=$(mktemp --tmpdir mutt-sendmail.XXXXXXXXXX.msg)
+settrap () { trap "$@" 0 1 2 3 4 5 6 7 8 10 11 12 13 14 15; }
+cleanup () { rm -f "$TMPFILE"; settrap -; }
+settrap cleanup
+formail -I ${HEADER}: < "$MAILFILE" > "$TMPFILE"
+mv "$TMPFILE" "$MAILFILE"
+settrap -
diff --git a/.config/neomutt/sendmail-checks.d/check-attachments b/.config/neomutt/sendmail-checks.d/check-attachments
new file mode 100644 (file)
index 0000000..fe80dc0
--- /dev/null
@@ -0,0 +1,37 @@
+#!/bin/sh
+#
+# check-attachments — check that referenced attachments are actually attached
+#
+# This is based on the idea behind
+# http://www.vim.org/scripts/download_script.php?src_id=3165: if the mail body
+# matches a given regular expression, then check whether there are also
+# non-PGP MIME parts in the message, or else refuse to send the message.
+#
+# You can override the checking by adding the X-No-Attachments header to the
+# message.
+#
+# Copyright © 2010 martin f. krafft <madduck@madduck.net>
+# Released under the terms of the Artistic Licence 2.0
+#
+set -eu
+
+RE_ENGLISH='attach(ing|ed|ment)?|included\W+(with|in)\W+th(is|e\W+(curr|pres)ent)\W+mail'
+RE_GERMAN='an(geh(ä|=E4|=C3=A4)ngt|h(ä|=E4|=C3=A4)ngsel|bei)|bei(gef(ü|=FC|=C3=BC)gt|lage)|(im|siehe)\W+(anhang|beilage)'
+RE_FRENCH='attach(e|er|(é|=E9|=C3=A9)e?s?|ement|ant)'
+OVERRIDE_HEADER=X-No-Attach
+
+if ! grep -qi "^${OVERRIDE_HEADER}:" "$1" \
+    && egrep -v '^(> |Content-Disposition:)' "$1" | egrep -qzi "($RE_ENGLISH|$RE_GERMAN|$RE_FRENCH)"; then
+
+  nr_attach=$(sed -rne 's/^Content-Type:[[:space:]]+//pi' "$1" |
+              egrep -civ '^(multipart/|application/pgp-signature)')
+
+  if [ $nr_attach -lt 2 ]; then
+    echo >&2 "E: the mail message likely references an attachment,"
+    echo >&2 "E: but there seems to be no non-PGP MIME part."
+    echo >&2 "E: (add the $OVERRIDE_HEADER header to override the check)."
+    exit 1
+  fi
+fi
+
+sed -i -e "/^${OVERRIDE_HEADER}:/d" "$1"
diff --git a/.config/neomutt/sendmail-checks.d/no-local-recipients b/.config/neomutt/sendmail-checks.d/no-local-recipients
new file mode 100755 (executable)
index 0000000..fa8de41
--- /dev/null
@@ -0,0 +1,28 @@
+#!/bin/sh
+#
+# no-local-recipients – prevent messages to local recipients from being sent
+#
+# messages with recipients like foo@$HOSTNAME are an indication that mutt has
+# not expanded the aliases and thus appended $hostname (cf. $use_domain). In
+# my use-case, that's a reason not to send a message.
+#
+# Copyright © 2010 martin f. krafft <madduck@madduck.net>
+# Released under the terms of the Artistic Licence 2.0
+#
+set -eu
+
+shift # $1 is the tmpfile, we don't need that
+
+HOSTNAME=$(hostname --fqdn)
+
+ret=0
+for r in $@; do
+  case "$r" in
+    (*@${HOSTNAME}*)
+      echo >&2 "E: $r seems to be a local recipient, hence I won't send."
+      ret=1
+      ;;
+  esac
+done
+
+exit $ret
diff --git a/.config/neomutt/sendmail-checks.d/pgp-mime-sig-description b/.config/neomutt/sendmail-checks.d/pgp-mime-sig-description
new file mode 100755 (executable)
index 0000000..45aa0e7
--- /dev/null
@@ -0,0 +1,15 @@
+#!/bin/sh
+#
+# pgp-mime-sig-description
+#
+# Update the PGP MIME signature description meta data
+#
+# Copyright © 2016 martin f. krafft <madduck@madduck.net>
+# Released under the terms of the Artistic Licence 2.0
+#
+set -eu
+
+MIME_HEADER="Content-Type: application\/pgp-signature"
+DESCRIPTION="Digital GPG signature (see http://martin-krafft.net/gpg/sig-policy/999bbcc4/current)"
+sed -i -e "/^${MIME_HEADER}/s/signature.asc/digital_signature_gpg.asc/;
+           /^${MIME_HEADER}/aContent-Description: $DESCRIPTION" "$1"
diff --git a/.config/neomutt/sendmail-checks.d/prevent-draft b/.config/neomutt/sendmail-checks.d/prevent-draft
new file mode 100755 (executable)
index 0000000..314dfd3
--- /dev/null
@@ -0,0 +1,17 @@
+#!/bin/sh
+#
+# prevent-draft – prevent sending a message while an X-Draft header exists
+#
+# Copyright © 2010 martin f. krafft <madduck@madduck.net>
+# Released under the terms of the Artistic Licence 2.0
+#
+set -eu
+
+draft_headers=$(sed -ne '1,/^$/p' "$1" | egrep -i '^(X-Draft:|(To|Cc):.*[-_]DRAFT)' || :)
+
+if [ -n "$draft_headers" ]; then
+  echo "$draft_headers" | egrep -iq '^X-Draft: (ok|no)' && exit 0
+  echo >&2 "E: will not send this message while the X-Draft header or"
+  echo >&2 "E: a subject or receipient draft tag is present."
+  exit 1
+fi
diff --git a/.config/neomutt/sendmail-checks.d/strip-offlineimap-header b/.config/neomutt/sendmail-checks.d/strip-offlineimap-header
new file mode 100755 (executable)
index 0000000..8fc5764
--- /dev/null
@@ -0,0 +1,12 @@
+#!/bin/sh
+#
+# strip-offlineimap-header
+#
+# Ensure that sent messages do not include any X-OfflineIMAP-* headers.
+#
+# Copyright © 2010 martin f. krafft <madduck@madduck.net>
+# Released under the terms of the Artistic Licence 2.0
+#
+set -eu
+
+sed -i -e /^X-OfflineIMAP-/Id "$1"
diff --git a/.config/neomutt/sendmail-checks.d/strip-tickle-header b/.config/neomutt/sendmail-checks.d/strip-tickle-header
new file mode 100755 (executable)
index 0000000..35bd6fa
--- /dev/null
@@ -0,0 +1,12 @@
+#!/bin/sh
+#
+# strip-tickle-header
+#
+# Ensure that sent messages do not include any X-Tickle headers.
+#
+# Copyright © 2010 martin f. krafft <madduck@madduck.net>
+# Released under the terms of the Artistic Licence 2.0
+#
+set -eu
+
+sed -i -e /^X-Tickle:/Id "$1"
diff --git a/.config/neomutt/sendmail-checks.d/zzz_add-spool-bcc b/.config/neomutt/sendmail-checks.d/zzz_add-spool-bcc
new file mode 100755 (executable)
index 0000000..d085679
--- /dev/null
@@ -0,0 +1,23 @@
+#!/bin/sh
+#
+# zzz_add-spool-bcc — add a spool mailbox as bcc recipient (runs last)
+#
+# Write a copy of the temporary file to a spool Maildir.
+#
+# Copyright © 2010 martin f. krafft <madduck@madduck.net>
+# Released under the terms of the Artistic Licence 2.0
+#
+set -eu
+
+SPOOL_MAILDIR=$HOME/mail/spool
+INPUT="$1"; shift
+DEST="$SPOOL_MAILDIR/cur/${INPUT##*/}:2,S"
+
+if ! cp -n "$INPUT" "$DEST"; then
+  echo >&1 "W: failed to spool message file '$1'."
+  TMPFILE=$(mktemp --tmpdir mutt-sendmail.XXXXXXXXXX.msg)
+  echo >&1 "W: leaving a copy in '$TMPFILE'…"
+else
+  RECIPIENTS=$(for i in "$@"; do echo -n " $i,"; done)
+  sed -e "1iX-Sendmail-Recipients:${RECIPIENTS%,}" < "$INPUT" > "$DEST"
+fi
diff --git a/.config/neomutt/spam b/.config/neomutt/spam
new file mode 100644 (file)
index 0000000..215654d
--- /dev/null
@@ -0,0 +1,4 @@
+nospam *
+spam "^X-Spam: (yes|disagree|unsure) \\(crm114:((sp|h)am/)?([-.0-9]+) SA:((sp|h)am/)?([-.0-9]+)\\)$" "%7|%4"
+
+# vim:ft=muttrc
diff --git a/.config/neomutt/supersede-header b/.config/neomutt/supersede-header
new file mode 100755 (executable)
index 0000000..ab7444b
--- /dev/null
@@ -0,0 +1,75 @@
+#!/bin/sh
+#
+# edit-header - helper script to append/replace/remove headers with mutt
+#
+# Based on an idea by David Champion <dgc at uchicago.edu>
+#
+# Copyright © 2008 martin f. krafft <madduck@madduck.net>
+# Released under the terms of the Artistic Licence 2.0
+#
+set -eu
+
+if [ ! -x "$(command -v formail)" ]; then
+  echo E: formail not installed. >&2
+  exit 1
+fi
+
+header="${1:-}"
+if [ -z "$header" ]; then
+  echo "E: no header specified" >&2
+  exit 1
+fi
+
+get_header_contents()
+{
+  local contents
+  printf "Enter ${1:-header} contents: " >/dev/tty
+  read contents </dev/tty
+  echo "$contents"
+}
+
+script="${0%/*}/${2:-}"
+if [ -f "$script" ] && [ -x "$script" ]; then
+  if [ -z "${__RLWRAPPED:-}" ] && [ -x $(command -v rlwrap) ]; then
+    __RLWRAPPED=true exec rlwrap "$0" "$@"
+  fi
+
+  contents_source="$script"
+  shift
+else
+  contents_source=get_header_contents
+fi
+
+editor=
+case "$0" in
+  *append-header|*supersede-header|*replace-header)
+    contents="${2:-}"
+    [ -n "$contents" ] || contents="$(eval $contents_source $header)"
+    case "$0" in
+      *append-header) flag=-A;;
+      *supersede-header) flag=-i;;
+      *replace-header) flag=-I;;
+    esac
+    editor="${0%/*}/filter-proxy formail $flag \'$header: $contents\'"
+    ;;
+
+  *remove-header)
+    editor="${0%/*}/filter-proxy formail -I \'$header:\'"
+    ;;
+
+  *)
+    echo "E: unknown invocation: ${0##*/}" >&2
+    exit 1
+    ;;
+
+esac
+
+echo "set my_editor=\"\$editor\""
+echo "set my_filter=\"$editor\""
+echo -n "push '"
+echo -n "<enter-command>set editor=\"\$my_filter\"<enter>"
+echo -n "<edit>"
+echo -n "<enter-command>set editor=\"\$my_editor\"<enter>"
+echo -n "<enter-command>unset my_filter<enter>"
+echo -n "<enter-command>unset my_editor<enter>"
+echo "'"
diff --git a/.config/neomutt/viewmailattachments b/.config/neomutt/viewmailattachments
new file mode 100755 (executable)
index 0000000..1a119ca
--- /dev/null
@@ -0,0 +1,381 @@
+#! /usr/bin/python3
+
+# Source: https://raw.githubusercontent.com/akkana/scripts/master/viewmailattachments
+
+# Take an mbox HTML message (e.g. from mutt), split it
+# and rewrite it so all of its attachments can be viewed in a browser
+# (perhaps after being converted to HTML from DOC or whatever first).
+#
+# Can be run from within a mailer like mutt, or independently
+# on a single message file.
+#
+# Grew out of a simpler script called viewhtmlmail.
+#
+# Copyright 2015 by Akkana Peck. Share and enjoy under the GPL v2 or later.
+# Changes:
+#   Holger Klawitter 2014: create a secure temp file and avoid temp mbox
+
+# To use it from mutt, put the following lines in your .muttrc:
+# macro  index  <F10>  "<pipe-message>~/bin/viewmailattachments\n" "View attachments in browser"
+# macro  pager  <F10>  "<pipe-message>~/bin/viewmailattachments\n" "View attachments in browser"
+
+import os, sys
+import re
+import time
+import shutil
+import email, email.header, mimetypes
+import tempfile
+import subprocess
+from bs4 import BeautifulSoup
+
+################################################
+# Some prefs:
+USE_WVHTML_FOR_DOC = False
+BROWSER_ARGS = []
+TMPDIR=os.path.join(os.getenv('TMPDIR'), 'volatile')
+
+# How many seconds do we need to wait for unoconv?
+# It defaults to 6, but on a 64-bit machine that's not enough.
+UNOCONV_STARTUP_TIME = "10"
+
+# Does the browser need a one-time argument for bringing up an initial window,
+# like Firefox's -private-window -new-instance ?
+BROWSER_FIRST_ARG = []
+
+# What browser to use:
+USE_QUICKBROWSE = False
+
+if USE_QUICKBROWSE:
+    BROWSER = "quickbrowse"
+
+    # Browser argument to precede new tabs:
+    BROWSER_FIRST_ARGS = []
+    BROWSER_ARGS = [ "--new-tab" ]
+
+    # Will the browser block when first run until its window is closed?
+    # If so, we have to run it in the background.
+    BROWSER_BACKGROUND = False
+
+    # Should we convert PDF to HTML? Depends on BROWSER:
+    # Firefox has a built-in PDF viewer, but quickbrowse doesn't.
+    CONVERT_PDF_TO_HTML = False
+
+else:    # Firefox in private browsing mode
+    BROWSER = "firefox"
+
+    # Not clear what to do here: Firefox has a built-in PDF viewer,
+    # but for some mime types it can't figure out that it should use it.
+    BROWSER_FIRST_ARGS = [ "-private-window" ]
+    BROWSER_ARGS = [ "-new-tab", "-private-window" ]
+    # Firefox doesn't run in the background.
+    BROWSER_BACKGROUND = True
+
+    CONVERT_PDF_TO_HTML = False
+
+# End global prefs
+################################################
+
+# Temporary for debugging:
+class mysubprocess:
+    @staticmethod
+    def call(arr):
+        print("\n\n================\n=== Calling: %s" % str(arr))
+        subprocess.call(arr)
+
+    @staticmethod
+    def call_bg(arr):
+        print("\n\n================\n=== Calling in background: %s" % str(arr))
+        subprocess.Popen(arr, shell=False,
+                         stdin=None, stdout=None, stderr=None)
+
+def view_message_attachments(fp, tmpdir):
+    '''View message attachments coming from the file-like object fp.
+    '''
+
+    msg = email.message_from_string(fp.read())
+
+    html_part = None
+    counter = 1
+    subfiles = []
+    subparts = []
+    htmlfiles = []
+    htmlparts = []
+
+    def tmp_file_name(part):
+        partfile=part.get_filename()
+        if partfile:
+            n, enc = email.header.decode_header(partfile)[0]
+            if n:
+                partfile = n.decode(enc) if enc else n
+
+        # Applications should really sanitize the given filename so that an
+        # email message can't be used to overwrite important files.
+        # As a first step, warn about ../
+        if partfile and '../' in partfile:
+            print("Eek! Possible security problem in filename %s" % partfile)
+            return None
+
+        # Make a filename in the tmp dir:
+        if not partfile:
+            ext = mimetypes.guess_extension(part.get_content_type())
+            if not ext:
+                # Use a generic bag-of-bits extension
+                ext = '.bin'
+            return tempfile.mkstemp(dir=tmpdir, suffix=ext, prefix='part-')[1]
+        else:
+            return os.path.join(tmpdir, partfile)
+
+    def save_tmp_file(part):
+        '''Saves this part's payload to a tmp file, returning the new filename.
+        '''
+        partfile = tmp_file_name(part)
+
+        tmpfile = open(partfile, "wb")
+        tmpfile.write(part.get_payload(decode=True))
+        tmpfile.close()
+        return partfile
+
+    # Walk through the message a first, preliminary time
+    # to separate out any images that might be referred to by
+    # an HTML part.
+    for part in msg.walk():
+        # walk() includes the top-level message
+        if part == msg:
+            # print "  Skipping the top-level message"
+            continue
+
+        if part.get_content_type() != "multipart/related":
+            continue
+
+        # It's multipart. Walk the subtree looking for image children.
+        for child in part.walk():
+            # print " ", child.get_content_type()
+
+            # At least for now, only save images as parts of multipart.
+            if child.get_content_maintype() != "image":
+                continue
+
+            filename = save_tmp_file(child)
+            # print "    Saved to", filename
+
+            # Rewrite image and other inline URLs in terms of content-id.
+            # Mailers may use Content-Id or Content-ID (or, presumably,
+            # other capitalizations). So we can't just look it up simply.
+            content_id = None
+            for k in list(child.keys()):
+                if k.lower() == 'content-id':
+                    # Remove angle brackets, if present.
+                    # child['Content-Id'] is unmutable: attempts to change it
+                    # are just ignored. Copy it to a local mutable string.
+                    content_id = child[k]
+                    if content_id.startswith('<') and \
+                       content_id.endswith('>'):
+                        content_id = content_id[1:-1]
+
+                    subfiles.append({ 'filename': filename,
+                                      'Content-Id': content_id })
+                    subparts.append(child)
+                    counter += 1
+                    fp = open(filename, 'wb')
+                    fp.write(child.get_payload(decode=True))
+                    fp.close()
+                    break     # no need to look at other keys
+
+            # if not content_id:
+            #     print filename, "doesn't have a Content-Id, not saving"
+            #     # print "keys:", child.keys()
+
+    # print "Subfiles:"
+    # for sf in subfiles:
+    #     print sf
+
+    # Call up the browser window right away,
+    # so the user can see something is happening.
+    # Firefox, alas, has no way from the commandline of calling up
+    # a new private window with content, then replacing that content.
+    # So we'll create a file that refreshes, so that when content is ready,
+    # it can redirect to the first content page.
+    def write_to_index(outfile, msg, timeout_secs, redirect_url):
+        if not redirect_url:
+            redirect_url = "file://" + outfile
+        ofp = open(outfile, "w")
+        ofp.write('''<html><head>
+<meta content="utf-8" http-equiv="encoding">
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
+<meta http-equiv="refresh" content="%d;URL=%s">
+</head><body>
+<br><br><br><br><br><br><big><big>%s</big></big>
+</body></html>
+''' % (timeout_secs, redirect_url, msg))
+        ofp.close()
+
+    redirect_timeout = 3
+    pleasewait_file = tmpdir + "/index.html"
+    write_to_index(pleasewait_file, "Please wait ...", redirect_timeout, None)
+
+    cmd = [ BROWSER ]
+    if BROWSER_FIRST_ARGS:
+        cmd += BROWSER_FIRST_ARGS
+
+    cmd.append("file://" + pleasewait_file)
+    print("Calling: %s" % ' '.join(cmd))
+    if BROWSER_BACKGROUND:
+        mysubprocess.call_bg(cmd)
+    else:
+        mysubprocess.call(cmd)
+
+                       # "data:text/html,<br><br><br><br><br><h1>Translating documents, please wait ..."
+                       # Use JS if we can figure out how to close or replace
+                       # the "please wait" tab once we have content to show.
+                       # But for now, setTimeout() doesn't work at all
+                       # in newly popped up private windows.
+                       # "javascript:document.writeln('<br><br><br><br><br><h1>Translating documents, please wait ...');setTimeout(function(){alert('hi');}, 500);"
+                     # ])
+
+    # Now walk through looking for the real parts:
+    # HTML, doc and docx.
+    for part in msg.walk():
+
+        # part has, for example:
+        # items: [('Content-Type', 'image/jpeg'),
+        #         ('Content-Transfer-Encoding', 'base64'),
+        #         ('Content-ID', '<14.3631871432@web82503.mail.mud.yahoo.com>'),
+        #         ('Content-Disposition',
+        #          'attachment; filename="ATT0001414.jpg"')]
+        # keys: ['Content-Type', 'Content-Transfer-Encoding',
+        #        'Content-ID', 'Content-Disposition']
+        # values: ['image/jpeg', 'base64',
+        #          '<14.3631871432@web82503.mail.mud.yahoo.com>',
+        # 'attachment; filename="ATT0001414.jpg"']
+
+        # multipart/* are just containers
+        #if part.get_content_maintype() == 'multipart':
+        if part.is_multipart() or part.get_content_type == 'message/rfc822':
+            continue
+
+        if part.get_content_maintype() == "application":
+            partfile = save_tmp_file(part)
+            fileparts = os.path.splitext(partfile)
+            htmlfilename = fileparts[0] + ".html"
+
+            if part.get_content_subtype() == "msword" and USE_WVHTML_FOR_DOC:
+                mysubprocess.call(["wvHtml", partfile, htmlfilename])
+                htmlfiles.append(htmlfilename)
+
+            elif part.get_content_subtype() == \
+                 "vnd.openxmlformats-officedocument.wordprocessingml.document" \
+                 or part.get_content_subtype() == "msword":
+                mysubprocess.call(["unoconv", "-f", "html",
+                                   "-T", UNOCONV_STARTUP_TIME,
+                                   "-o", htmlfilename, partfile])
+
+                htmlfilename = os.path.join(fileparts[0] + ".html")
+                htmlfiles.append(htmlfilename)
+
+            # unoconv conversions from powerpoint to HTML drop all images.
+            # Try converting to PDF instead:
+            elif part.get_content_subtype() == "vnd.ms-powerpoint" \
+                 or part.get_content_subtype() == \
+                    "vnd.openxmlformats-officedocument.presentationml.presentation" :
+                pdffile = fileparts[0] + ".pdf"
+                mysubprocess.call(["unoconv", "-f", "pdf",
+                                   "-o", pdffile, partfile])
+                htmlfiles.append(pdffile)
+
+            elif part.get_content_subtype() == "pdf":
+                if CONVERT_PDF_TO_HTML:
+                    mysubprocess.call(["pdftohtml", "-s", partfile])
+
+                    # But pdftohtml is idiotic about output filename
+                    # and won't let you override it:
+                    htmlfiles.append(fileparts[0] + "-html.html")
+                else:
+                    htmlfiles.append(partfile)
+
+        elif part.get_content_maintype() == "text" and \
+             part.get_content_subtype() == 'html':
+
+            htmlfile = tmp_file_name(part)
+
+            fp = open(htmlfile, 'wb')
+            htmlsrc = part.get_payload(decode=True)
+
+            soup = BeautifulSoup(htmlsrc, "lxml")
+
+            # Substitute filenames for CIDs:
+            for tag in soup.body.find_all("img", src=True):
+                if tag['src'].lower().startswith("cid:"):
+                    for sf in subfiles:
+                        if tag['src'][4:] == sf['Content-Id']:
+                            tag['src'] = "file://" + sf['filename']
+            # for sf in subfiles:
+            #     htmlsrc = re.sub('cid: ?' + sf['Content-Id'],
+            #                      'file://' + sf['filename'],
+            #                      htmlsrc, flags=re.IGNORECASE)
+
+            # If it's HTML, we may need to add a meta charset tag. Sigh.
+            # If it's text/plain, there's nothing we can do to fix charset.
+            charset = part.get_charset()
+            if not charset:
+                charset = "UTF-8"
+            head = soup.find("head")
+            if not head:
+                head = soup.new_tag("head")
+                html = soup.find("html")
+                if html:
+                    html.insert(0, head)
+                else:
+                    soup.insert(0, head)
+
+            if not head.findAll("meta", attrs={"http-equiv": "encoding"}) and \
+               not head.findAll("meta", attrs={"http-equiv": "content-type"}):
+                meta = soup.new_tag("meta")
+                meta["content"] = charset
+                meta["http-equiv"] = "encoding"
+                head.insert(0, meta)
+                meta = soup.new_tag("meta")
+                meta["http-equiv"] = "content-type"
+                meta["content"] = "text/html; charset=%s" % charset
+                head.insert(0, meta)
+
+            fp.write(soup.prettify().encode("utf-8", "xmlcharrefreplace"))
+            fp.close()
+
+            htmlfiles.append(htmlfile)
+        elif part.get_content_maintype() == "image" and part not in subparts:
+            partfile = save_tmp_file(part)
+            htmlfiles.append(partfile)
+
+    # Done processing attachments. Call the browser for everything.
+    if htmlfiles:
+        # For the first URL, just put a redirect in
+        write_to_index(pleasewait_file,
+                       "Redirecting to file://" + htmlfiles[0],
+                       0, "file://" + htmlfiles[0])
+
+        for f in htmlfiles[1:]:
+            # If we don't wait for the new window to pop up before
+            # calling new-tab, bad things will happen: the document
+            # may load in a new tab in the old window and THEN pop up
+            # an unwanted third window. Go firefox.
+            # Not clear whether this is true for all browsers.
+            time.sleep(1)
+            if BROWSER_ARGS:
+                mysubprocess.call([BROWSER] + BROWSER_ARGS + ["file://" + f])
+            else:
+                mysubprocess.call([BROWSER, "file://" + f])
+
+    # Wait a while to make sure the browser has loads the imgaes, then clean up.
+    time.sleep(6)
+    shutil.rmtree(tmpdir)
+
+if __name__ == '__main__':
+    tmpdir = tempfile.mkdtemp(dir=TMPDIR)
+
+    if len(sys.argv) > 1:
+        for f in sys.argv[1:]:
+            fp = open(f)
+            view_message_attachments(fp, tmpdir)
+            fp.close()
+    else:
+        view_message_attachments(sys.stdin, tmpdir)