NeoMutt  2018-07-16 +952-a2da0a
Teaching an old dog new tricks
Code Docs


Each library helps to untangle the code by grouping similar functions and reducing dependencies.

The goal is that each library is:

  • Self-contained (it may rely on other libraries)
  • Independently testable (i.e. without using NeoMutt)
  • Fully documented
  • Robust
CONFIG: Flexible handling of config items
CONN: Network connections and their encryption
EMAIL: Structs that make up an email
HCACHE: Header cache API
IMAP: Network Mailbox
MAILDIR: Local mailbox type
MBOX: Local mailbox type
MUTT: Shared code for handling strings, files, dates, etc
NCRYPT: Encrypt/decrypt/sign/verify emails
NNTP: Usenet network mailbox type; talk to an NNTP server
NOTMUCH: Virtual mailbox type
POP: Network mailbox

Config Variables

NeoMutt has a lot of configuration options. Neomutt's Configuration variables

Miscellaneous files

These file form the main body of NeoMutt.

File Description
account.c Representation of an account
addrbook.c Address book handling aliases
alias.c Representation of a single alias to an email address
bcache.c Body Caching - local copies of email bodies
browser.c GUI component for displaying/selecting items from a list
color.c Color and attribute parsing
commands.c Manage where the email is piped to external commands
complete.c String auto-completion routines
compose.c GUI editor for an email's headers
compress.c Compressed mbox local mailbox type
copy.c Duplicate the structure of an entire email
curs_lib.c GUI miscellaneous curses (window drawing) routines
edit.c GUI basic built-in text editor
editmsg.c Prepare an email to be edited
enriched.c Rich text handler
enter.c GUI ask the user to enter a string
filter.c Pass files through external commands (filters)
flags.c Manipulate the flags in an email header
group.c Handling for email address groups
handler.c Decide how to display email content
hdrline.c String processing routines to generate the mail index
help.c Generate the help-line and help-page and GUI display them
hook.c Parse and execute user-defined hooks
index.c GUI manage the main index (list of emails)
init.c Config/command parsing
keymap.c Manage keymappings
mailbox.c Representation of a mailbox
main.c Command line processing
menu.c GUI present the user with a selectable list
monitor.c Monitor files for changes
muttlib.c Some miscellaneous functions
mutt_account.c ConnAccount object used by POP and IMAP
mutt_attach.c Handling of email attachments
mutt_body.c Representation of the body of an email
mutt_header.c Manipulate an email's header
mutt_history.c Read/write command history from/to a file
mutt_logging.c Mutt Logging
mutt_lua.c Integrated Lua scripting
mutt_parse.c Miscellaneous email parsing routines
mutt_signal.c Signal handling
mutt_socket.c NeoMutt connections
mutt_thread.c Create/manipulate threading in emails
mutt_url.c Parse and identify different URL schemes
mutt_window.c Window management
mx.c Mailbox multiplexor
myvar.c Handling of personal config ('my' variables)
pager.c GUI display a file/email/help in a viewport with paging
pattern.c Match patterns to emails
postpone.c Save/restore and GUI list postponed emails
progress.c Progress bar
query.c Routines for querying and external address book
recvattach.c Routines for managing attachments
recvcmd.c Send/reply with an attachment
remailer.c Support of Mixmaster anonymous remailer
resize.c GUI handle the resizing of the screen
rfc1524.c RFC1524 Mailcap routines
rfc3676.c RFC3676 Format Flowed routines
safe_asprintf.c Wrapper for vasprintf()
score.c Routines for adding user scores to emails
send.c Prepare and send an email
sendlib.c Miscellaneous functions for sending an email
sidebar.c GUI display the mailboxes in a side panel
smtp.c Send email to an SMTP server
sort.c Assorted sorting methods
state.c Keep track when processing files
status.c GUI display a user-configurable status line
system.c Execute external programs
terminal.c Set the terminal title/icon
version.c Display version and copyright about NeoMutt
wcscasecmp.c For systems lacking wcscasecmp()

Building these Docs

The config for building the docs is in the main source repo.

Everything possible is turned on in the config file, so you'll need to install a few dependencies like dot from the graphviz package.

Simply run: doxygen doxygen/doxygen.conf in the main directory.

Installing the Docs

These docs aren't in the main website repo – they weigh in at 100Mb. Instead, they're stored in the code repo