aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Add Templates with ParsingSrivathsan Murali2019-11-1014-143/+510
| | | | | | | | | | | | | | | + Changes NewComposer to return error. + Add lib to handle templates using "text/template". + Add -T option to following commands - compose. - reply - forward + Quoted replies using templates. + Forwards as body using templates + Default templates are installed similar to filters. + Templates Config in aerc.conf. - Required templates are parsed while loading config. + Add aerc-templates.7 manual for using template data.
* widgets/msgviewer: Don't crash if pager is nilKevin Kuehler2019-11-101-1/+1
| | | | Signed-off-by: Kevin Kuehler <keur@xcf.berkeley.edu>
* Add support for AUTH LOGIN submissionLuke Drummond2019-11-014-1/+10
| | | | | | | | | | | `go-sasl` upstream added support [1] for the obsolete [2] AUTH LOGIN method which enables aerc to send email via servers which remain common in the wild. Fixes ~sircmpwn/aerc2#263 [1] https://github.com/emersion/go-sasl/commit/61afe53d [2] https://datatracker.ietf.org/doc/draft-murchison-sasl-login/
* Notmuch: be resilient to config errorsReto Brunner2019-11-011-3/+22
| | | | | | | | Right now notmuch panics if something goes wrong in the configure event. This patch checks for that and returns an error instead, so that we can at least get the UI up and running (and all the other accounts) The experience will be completely degraded until another configure event occurs.
* notmuch: ignore comments and blank lines when processing query-map fileMatt Snider2019-11-011-0/+4
| | | | | A segmentation fault occurs when using the notmuch backend and a `query-map` file that contains blank lines or comments.
* widgets/msgview: Reap the filter commandKevin Kuehler2019-10-161-0/+1
| | | | | | | | The filter command shells out and returns almost immediately. Call Wait() so the filter process gets reaped. Prior to this patch, aerc creates a zombie process for every email that is viewed. Signed-off-by: Kevin Kuehler <keur@xcf.berkeley.edu>
* Cleanup pager processes after closing a msgviewerKevin Kuehler2019-10-162-0/+18
| | | | | | | | | A pager is spawned every time an email is viewed but not killed off when quitting the msgviewer, thus leading to process leakage. This patch fixes this by adding a Close method to the msgview widget, which is called in the close command. Signed-off-by: Kevin Kuehler <keur@xcf.berkeley.edu>
* Fix: oauthbearer runtime errorFrode Aannevik2019-10-161-6/+7
| | | | | | | | | | | | Configure an oauthbearer source without a token_endpoint parameter would panic due to nil pointer dereference Example source=imaps+oauthbearer://frode.aa%40gmail.com@imap.gmail.com:993 source-cred-cmd=pass oatuh2 frode.aa@gmail.com token_endpoint is not required as it will use the provided password as access_token when it is not set
* lib/msgstore: fix invalid callback invocationReto Brunner2019-10-141-1/+1
| | | | | creating a directory must not invoke the callback, as this is meant for the completion of the move
* Fix tab refocus on removeJeffas2019-10-141-8/+14
| | | | | | | | Previously removing a tab would always pop from the history of tabs. This checks to see if the closing tab is the one selected, if it is then we use the history, otherwise we only need to change the selected tab if it was after (to the right of) the closing tab, in which case we just decrement the selected index.
* Fix pushing invalid tabs to historyJeffas2019-10-141-1/+4
| | | | A tab can now only be pushed onto the history if it is a selectable tab.
* Revert "Show spinner when fetching contents"Drew DeVault2019-10-092-9/+3
| | | | This reverts commit 1339faf7881f33762c6e0a4915404e362fc51de1.
* Preserve sorting order in search resultsJeffas2019-10-092-0/+18
| | | | | This ensures that the search results follow the order of the current sort so that cycling throught the results proceeds in displayed order.
* Show spinner when fetching contentsJeffas2019-10-092-3/+9
| | | | | The spinner should be shown when fetching the contents as we don't know at that point whether there are some messages or not.
* Fix selected account to return for messageviewerJeffas2019-10-021-4/+6
| | | | | | This ensures that the selectedaccount is returned if currently selected tab is a messageviewer. This also makes it more extensible for adding other ways of getting the selected account.
* Open mailto links in a new aerc instance if needed.Reto Brunner2019-09-291-2/+17
| | | | | | | | | | | | | Aerc tries to open mailto:// links via the socket of the already running aerc instance. If no socket exists this silently errored out. This commit starts up a new aerc instance if it can't connect to the socket (which I think is the most common error) and if not sets up a new aerc instance and retries to open the compositor. This fixes https://todo.sr.ht/~sircmpwn/aerc2/295 by implementing the desired behaviour.
* Print success to socket if no error was thrownHeiko Carrasco2019-09-291-1/+5
| | | | | | | When Reto Brunners patch is applied (which works really well for me), the user gets to see the message returned by AercServer. Since this is nil if no errors were thrown it prints "result: <nil>" to the cmd. This patch fixes that by just returning success instead of the error message when err != nil.
* Config for deleting message from message viewerSrivathsan Murali2019-09-204-25/+37
| | | | | As suggested in #268, this adds a behaviour setting for deleting message from message viewer.
* Sort path completionsJeffas2019-09-201-0/+3
|
* Change search flagsJeffas2019-09-203-6/+22
| | | | | | | | This changes the search flags for maildir and imap backends. They now no longer use -t for searching all text. This seems to make more sense as being the targeted recipient. I have similarly added Cc for -c. The text search now resides under -a for all text.
* Make commands join args with spacesJeffas2019-09-209-66/+60
| | | | | | | | | | | | | | | This patch ensures the following commands join their arguments with spaces to make it easier to interact with: - cf - mkdir - cd - attach - detach - ct - copy - move - save
* notmuch: add sort functionalityReto Brunner2019-09-201-6/+41
|
* Add documentation for sortJeffas2019-09-203-0/+43
| | | | This adds documentation for the config option and the command.
* Add sorting functionalityJeffas2019-09-209-8/+491
| | | | | | | | There is a command and config option. The criteria are a list of the sort criterion and each can be individually reversed. This only includes support for sorting in the maildir backend currently. The other backends are not supported in this patch.
* Add directory info messagesJeffas2019-09-181-16/+55
| | | | | | | This populates the directory info model properly when requested, allowing the fields to be relied upon elsewhere. This also sends the dirinfo when new messages come in.
* Focus new tab after removeJeffas2019-09-181-0/+4
| | | | | After removing a tab we should focus the newly selected tab if it is Interactive. This ensures things like the terminal get drawn properly.
* Revert "Fix out-of-order messages by sorting as we display"Drew DeVault2019-09-182-32/+1
| | | | This reverts commit ac99d9ed62644cf0259bdd79481b28c3fbcef650.
* Add search documentation for maildir backendJeffas2019-09-161-0/+16
|
* Add basic searching to the maildir backendJeffas2019-09-162-1/+260
| | | | | | | | | | | | | | Basic searching is supported with the following: - read messages - unread messages - from addresses - text in body - text in subject - text in all The implementation loops through all messages in the selected directory. It tries to be smart by detecting which parts of each message the search query needs to use and only loads these from the filesystem.
* notmuch: implement ModifyLabelsReto Brunner2019-09-161-26/+61
|
* notmuch: sync maildir flagsReto Brunner2019-09-163-2/+7
| | | | Syncs back special notmuch tag like unread to the underlying maildir store
* notmuch: extract all notmuch db operations.Reto Brunner2019-09-163-175/+250
| | | | | | For some reason the current code frequently segfaults due to an invalid C memory address. This commit mediates that by never keeping an object alive longer than absolutely necessary.
* Add completion for copyJeffas2019-09-121-1/+2
|
* widgets: remove duplicate importWagner Riffel2019-09-121-18/+17
| | | | Signed-off-by: Wagner Riffel <wgrriffel@gmail.com>
* Add signaturesJeffas2019-09-128-9/+84
| | | | | | | | | | | | | This adds the ability for per-account signatures in the accounts.conf config file. The signature is added to emails in the editor at the bottom of the email. This includes when forwarding, replying to, and composing emails. There are two config options: signature-file and signature-cmd. The former allows a signature to be read from a file and the latter allows an arbitrary command to be executed to return the signature. The config options have been documented in aerc-config
* Add modify-labels commandReto Brunner2019-09-125-3/+96
| | | | | This adds the event type as well as the command implementation, but no backend supports it yet.
* Add display of unread messages in dirlistJeffas2019-09-115-4/+131
| | | | | | | Add an onUpdateDirs handler. This is used to invalidate the dirlist and redraw with the correct number of recent/unread/total messages is shown. A config option and formatting options are provided.
* Fix segfault on deleteDevon Johnson2019-09-111-1/+5
|
* Add new search behaviour for imapJeffas2019-09-112-6/+27
| | | | | | This patch adds search behaviour to allow searching in the body of the messages, the entire text (body + header), and searching just the from header.
* Check the subject line for lowercase reJeffas2019-09-111-1/+1
| | | | | This ensures that a message with e.g. "RE: " at the start won't get another "Re: ".
* Ensure mimetype parts are converted to lower caseJeffas2019-09-111-2/+3
| | | | | This ensures that the check for a text message to use in the reply is performed (more) correctly and so uses the plaintext more often.
* Add MouseableJeffas2019-09-1114-47/+376
| | | | | | | | | | | | | | | | | | | | | | This adds the Mouseable interface. When this is implemented for a component that item can accept and process mouseevents. At the top level when a mouse event is received it is passed to the grid's handler and then it trickles down until it reaches a component that can actually handle it, such as the tablist, dirlist or msglist. A mouse event is passed so that components can handle other things such as scrolling with the mousewheel. The components themselves then perform the necessary actions. Clicking emails in the messagelist opens them in a new tab. Textinputs can be clicked to position the cursor inside them. Mouseevents are not forwarded to the terminal at the moment. Elements which do not handle mouse events are not required to implement the Mouseable interface.
* Add initial command to end of completionsJeffas2019-09-111-0/+1
| | | | | This means that if the user cycles through all completions then they will see the initial string they entered.
* widgets: gofmtWagner Riffel2019-09-041-2/+2
| | | | Signed-off-by: Wagner Riffel <wgrriffel@gmail.com>
* widgets: rewrite references to os.SET_SEEK to io.SeekStartWagner Riffel2019-09-041-4/+4
| | | | | | | Os.SET_SEEK is deprecated, it's recommended to use contants from io package Signed-off-by: Wagner Riffel <wgrriffel@gmail.com>
* widgets: remove redundant key check, delete is no-op if key is emptyWagner Riffel2019-09-041-6/+2
| | | | Signed-off-by: Wagner Riffel <wgrriffel@gmail.com>
* commands: move ParseNextPrevMessage error value to its last return valueWagner Riffel2019-09-042-6/+6
| | | | Signed-off-by: Wagner Riffel <wgrriffel@gmail.com>
* all: rewrite references to strings.Index to strings.ContainsWagner Riffel2019-09-042-2/+2
| | | | Signed-off-by: Wagner Riffel <wgrriffel@gmail.com>
* all: use fmt.Errorf for fomartting errorsWagner Riffel2019-09-0410-15/+10
| | | | Signed-off-by: Wagner Riffel <wgrriffel@gmail.com>
* all: purge redundant underscoresWagner Riffel2019-09-0445-132/+132
| | | | Signed-off-by: Wagner Riffel <wgrriffel@gmail.com>