Fork of the aerc email client (https://sr.ht/~rjarry/aerc)
Find a file
Jonathan Bartlett 175d0efeb2 binds: add account specific bindings
When using aerc for multiple accounts often bindings might differ
slightly between accounts. For example:

* Account A archives to one directory (:archive)
* Account B archives to monthly directories (:archive month)

Add account specific bindings to allow the user to add a "context" to a
binding group using a context specifier and a regular expression.

Currently the only context specifier is 'account'.

The regular expression is validated against the accounts loaded from
accounts.conf and the configuration fails to load if there are no
matches.

Contextual bindings are merged with global bindings, with contextual
bindings taking precedence, when that context is active.

Bindings are be configured using a generic pattern of
'view:context=regexp'. E.g.:

    # Globally Applicable Archiving
    [messages]
    A = :read<Enter>:archive<Enter>

    # Monthly Archiving for 'Mailbox' Account
    [messages:account=Mailbox$]
    A = :read<Enter>:archive month<Enter>

In the above example all accounts matching the regular expression will
archive in the monthly format - all others will use the global binding.

Signed-off-by: Jonathan Bartlett <jonathan@jonnobrow.co.uk>
2021-12-11 21:45:41 +01:00
commands imap: add manual {dis,}connect support 2021-11-05 10:45:31 +01:00
completer Strip trailing newline from address book entries without names 2020-01-09 14:32:22 -05:00
config binds: add account specific bindings 2021-12-11 21:45:41 +01:00
contrib Add contrib/_incr_version 2020-05-19 12:12:18 -04:00
doc binds: add account specific bindings 2021-12-11 21:45:41 +01:00
filters Strip carriage returns (^M) when filtering emails 2019-08-20 16:05:20 +09:00
lib style: customize vertical and horizontal border characters 2021-11-30 15:05:33 +01:00
models models: add RFC822 headers to OriginalMail 2020-11-14 15:40:13 +01:00
templates fix typo in quoted reply template 2021-03-07 23:25:04 +01:00
widgets binds: add account specific bindings 2021-12-11 21:45:41 +01:00
worker imap: add tcp connection options 2021-12-07 21:28:13 +01:00
.build.yml go.mod: change base git url 2021-11-05 10:21:45 +01:00
.gitignore Subsitute prefix in aerc.conf for install 2019-05-26 10:27:22 -04:00
aerc.go go.mod: change base git url 2021-11-05 10:21:45 +01:00
go.mod go.mod: cleanup 2021-11-05 10:29:07 +01:00
go.sum go.mod: cleanup 2021-11-05 10:29:07 +01:00
LICENSE readme: update with fork info 2021-10-30 22:07:32 +02:00
Makefile Release version 0.6.0 2021-11-09 21:10:17 +01:00
README.md readme: add contribution guide 2021-12-11 21:45:38 +01:00

aerc

builds.sr.ht status

aerc is an email client for your terminal.

This is a fork of the original aerc by Drew DeVault.

A short demonstration can be found on https://aerc-mail.org/

Join the IRC channel: #aerc on irc.libera.chat for end-user support, and #aerc-dev for development.

Usage

On its first run, aerc will copy the default config files to ~/.config/aerc on Linux or ~/Library/Preferences/aerc on MacOS (or $XDG_CONFIG_HOME/aerc if set) and show the account configuration wizard.

If you redirect stdout to a file, logging output will be written to that file:

$ aerc > log

For instructions and documentation: see man aerc and further specific man pages on there.

Note that the example HTML filter (off by default), additionally needs w3m and dante to be installed.

Installation

Binary Packages

Recent versions of aerc are available on:

And likely other platforms.

From Source

Install the dependencies:

Then compile aerc:

$ make

aerc optionally supports notmuch. To enable it, you need to have a recent version of notmuch, including the header files (notmuch.h). Then compile aerc with the necessary build tags:

$ GOFLAGS=-tags=notmuch make

To install aerc locally:

# make install

Contribution Quick Start

Anyone can contribute to aerc. First you need to clone the repository and build the project:

$ git clone https://git.sr.ht/~rjarry/aerc
$ cd aerc
$ make

Patch the code. Make some tests. Ensure that your code is properly formatted with gofmt. Ensure that everything builds and works as expected. Ensure that you did not break anything.

  • If applicable, update unit tests.
  • If adding a new feature, please consider adding new tests.
  • Do not forget to update the docs.

Once you are happy with your work, you can create a commit (or several commits). Follow these general rules:

  • Limit the first line (title) of the commit message to 60 characters.
  • Use a short prefix for the commit title for readability with git log --oneline.
  • Use the body of the commit message to actually explain what your patch does and why it is useful.
  • Address only one issue/topic per commit.
  • If you are fixing a ticket, use appropriate commit trailers.
  • If you are fixing a regression introduced by another commit, add a Fixes: trailer with the commit id and its title.

There is a great reference for commit messages in the Linux kernel documentation.

Before sending the patch, you should configure your local clone with sane defaults:

$ git config format.subjectPrefix "PATCH aerc"
$ git config sendemail.to "~rjarry/aerc-devel@lists.sr.ht"

And send the patch to the mailing list:

$ git sendemail --annotate -1

Wait for feedback. Address comments and amend changes to your original commit. Then you should send a v2:

$ git sendemail --in-reply-to=$first_message_id --annotate -v2 -1

Once the maintainer is happy with your patch, they will apply it and push it.

Resources

Send patches and questions to ~rjarry/aerc-devel@lists.sr.ht.

Instructions for preparing a patch are available at git-send-email.io

Subscribe to release announcements on ~rjarry/aerc-announce@lists.sr.ht

Submit bug reports and feature requests on https://todo.sr.ht/~rjarry/aerc.