Commit graph

1294 commits

Author SHA1 Message Date
Ben Burwell
598e39f523 Strip trailing newline from address book entries without names
When the list of completions from the external command doesn't have
associated contact names, the email address we attempt to parse was
being terminated with a newline. Now, we strip the trailing newline if
present.
2020-01-09 14:32:22 -05:00
Timmy Douglas
eca3863242 compose: don't call ti.tabcomplete when it is nil 2020-01-09 14:32:12 -05:00
Leszek Cimała
a40959c129 template: man cosmetic changes 2020-01-09 14:31:19 -05:00
Leszek Cimała
bf0f72a533 template: add exec and wrap 2020-01-09 14:31:19 -05:00
Leszek Cimała
fe9ec67eca template: remove last \n to fix additional new lines after quote 2020-01-09 14:31:19 -05:00
Leszek Cimała
d238272bdb add .OriginalMIMEType variable to reply template 2020-01-09 14:31:19 -05:00
Leszek Cimała
5255585b3b remove Original* check 2020-01-09 14:31:19 -05:00
Leszek Cimała
bf28e23933 create OriginalMail struct 2020-01-09 14:31:19 -05:00
Reto Brunner
da6fb1a155 maildir/notmuch: don't re-encode readers 2020-01-05 16:02:46 -05:00
Reto Brunner
3d85f75d9c imap: decode reader prior to returning them 2020-01-05 16:02:45 -05:00
Reto Brunner
9096049f75 FetchBodyParts: decode source in the workers
Previously the workers returned a mixture of decoded / encoded parts.
This lead to a whole bunch of issues.
This commit changes the msgviewer and the commands to assume parts to already
be decoded
2020-01-05 16:02:45 -05:00
Reto Brunner
19dfc49481 models: add BodyStructure.PartAtIndex 2020-01-05 16:02:44 -05:00
Reto Brunner
126119c0b1 msgviewer: decode headers prior to displaying them 2020-01-05 16:02:42 -05:00
Reto Brunner
cb168682b3 msgviewer: bypass filter for headers 2020-01-05 16:02:41 -05:00
Reto Brunner
7a1770f129 msgviewer: do not anchor ansi escape to start of line 2020-01-05 16:02:39 -05:00
Drew DeVault
14d58c2f7b Reword aerc-tutorial with revised constraints
This document used to specify some constraints on the receipient
address, but this has since been corrected in aerc.
2020-01-05 16:01:58 -05:00
Ben Burwell
07a9b9204e Don't select completions until tab has been pressed
Before, pressing <Enter> when completions were visible would execute the
selected completion. As soon as completions were provided, the first
item would be selected. This could cause issues e.g. when changing
folders:

  :cf <Enter>

Previously, this would have selected the first folder in the list. Now,
since <Tab>, <C-n>, etc have not been pressed to select the first
completion, the command above simply executes `:cf `.

To accomplish this, a "no-op completion" has been added at index -1.
2020-01-05 16:01:50 -05:00
Srivathsan Murali
b2dc624dbf Fix double >\n when quoting empty line 2020-01-04 12:23:02 -05:00
Ben Burwell
0c9f59bad4 Handle MIME encoded addresses in address book
When addresses contain special characters, net/mail MIME-encodes them
to a valid RFC 5322 address for use in headers. However, these are not
pleasant for human consumption, so we decode them for use in the
completion list. Aerc properly encodes addresses when the message is
sent.

This patch also removes surrounding white space from contact names, if
present.
2019-12-30 15:31:16 -05:00
Reto Brunner
b360cca977 msgviewer: Add Labels as a virtual header
In order to accommodate for that, the headerlayout needed to be rewritten
to pass the filter criteria back to the msgviewer, instead of just using
the normal headers.
2019-12-27 10:20:30 -07:00
Reto Brunner
63391b7dca Add labels to index format (%g)
Exposes the notmuch tags accordingly, stubs it for the maildir worker.
2019-12-27 10:20:29 -07:00
Ariel Popper
6794ce0d9c Add missing man pages to uninstall target in Makefile 2019-12-24 23:55:00 +01:00
Reto Brunner
2708628857 fix invalid format string 2019-12-22 16:21:39 -05:00
Reto Brunner
ce42429cbf read: adapt to ProvidesMessages 2019-12-22 16:21:38 -05:00
Reto Brunner
00263bf866 modify-labels: add completion 2019-12-21 11:20:12 -05:00
Reto Brunner
40ceee969b notmuch: emit LabelList event 2019-12-21 11:20:11 -05:00
Reto Brunner
2705d8460d add LabelList event 2019-12-21 11:20:11 -05:00
Reto Brunner
709d4e1e59 docs: mark command 2019-12-21 09:27:54 -05:00
Reto Brunner
1ba9f0da19 binds.conf: mark bindings 2019-12-21 09:27:54 -05:00
Reto Brunner
b9d2938f9f msglist: highlight marked messages
Note that, until we get color configuration, this means that the user *must*
have the %Z verb in the index format else it'll be horribly confusing
as no visual indication is provided
2019-12-21 09:27:53 -05:00
Reto Brunner
a744df724f modify-labels: adapt to ProvidesMessages 2019-12-21 09:27:53 -05:00
Reto Brunner
113de35961 move: adapt to ProvidesMessages 2019-12-21 09:27:52 -05:00
Reto Brunner
7b359be0cd delete: adapt to ProvidesMessages 2019-12-21 09:27:52 -05:00
Reto Brunner
c2b31ed7c9 copy: adapt to ProvidesMessages 2019-12-21 09:27:51 -05:00
Reto Brunner
884784ac32 archive: adapt to ProvidesMessages 2019-12-21 09:27:51 -05:00
Reto Brunner
5da58c669c add mark command 2019-12-21 09:27:50 -05:00
Reto Brunner
881a9081a8 add command helpers 2019-12-21 09:27:50 -05:00
Reto Brunner
cf43066d5b msgstore: add marking functionality 2019-12-21 09:27:49 -05:00
Reto Brunner
3e535f49b3 msgviewer: implement ProvidesMessages interface 2019-12-21 09:27:49 -05:00
Reto Brunner
98418764b6 AccountView: implement ProvidesMessages 2019-12-21 09:27:48 -05:00
Reto Brunner
684978e77d widgets: add msgInfoFromUids helper 2019-12-21 09:27:47 -05:00
Reto Brunner
b57a47a74f add ProvidesMessages interface 2019-12-21 09:27:47 -05:00
Ben Burwell
fad375c673 Add address book completion in composer
Complete email address fields in the message composer with an external
address book command, compatible with mutt's query_cmd.
2019-12-21 09:23:22 -05:00
Ben Burwell
4d00a2b4d6 Don't use current input as a possible completion
Now that completions are being shown in the popover, it doesn't make
sense to show the unfinished command as a potential completion.
2019-12-21 09:23:22 -05:00
Ben Burwell
7160f98a90 Show textinput completions in popovers
Rather than showing completions inline in the text input, show them in a
popover which can be scrolled by repeatedly pressing the tab key. The
selected completion can be executed by pressing enter.
2019-12-21 09:23:21 -05:00
Ben Burwell
bcd03c4c4a Add popovers
A popover is a special UI element which can be layered over the rest of
the UI (i.e. it is painted last) and can fall anywhere on the screen,
not just with the bounds of its parent's viewport/context. With these
special abilities comes the restriction that only one popover may be
visible on screen at once.

Popovers are requested from the UI context passed to Draw calls and
specify the anchor point and the desired dimensions. The popover is then
fit to the available space and placed relative to the anchor point.
2019-12-21 09:23:20 -05:00
Ben Burwell
ef4c2f61d8 Use timestamp-format in msgviewer
This allows the time to be displayed in a user-configurable way. Also
localize the time in the message viewer as it is in the message list.
2019-12-19 08:45:26 +01:00
Ben Burwell
4ab82bf306 Update go-maildir to latest
This fixes an upstream issue where improperly named maildir files could
cause a panic. Now, we simply show an error and don't display the
message if the backing file is not named according to the maildir spec.
2019-12-19 08:41:11 +01:00
Kiril Vladimiroff
d9a0522780 Break early when delete happens in outdated state
A panic could happen when multiple delete messages are sent one after
another without waiting until there are no messages left to be deleted:

	panic: runtime error: makeslice: len out of range

	goroutine 1 [running]:
	git.sr.ht/~sircmpwn/aerc/lib.(*MessageStore).Update(0xc000592e00, 0xa8fe60, 0xc0003340f0)
		/go/src/git.sr.ht/~sircmpwn/aerc/lib/msgstore.go:222 +0x5b8
	git.sr.ht/~sircmpwn/aerc/widgets.(*AccountView).onMessage(0xc0000a0460, 0xa8fe60, 0xc0003340f0)
		/go/src/git.sr.ht/~sircmpwn/aerc/widgets/account.go:251 +0x307
	git.sr.ht/~sircmpwn/aerc/widgets.(*AccountView).Tick(0xc0000a0460, 0xc0001496b0)
		/go/src/git.sr.ht/~sircmpwn/aerc/widgets/account.go:90 +0xa1
	git.sr.ht/~sircmpwn/aerc/widgets.(*Aerc).Tick(0xc0000a9f40, 0xc000020501)
		/go/src/git.sr.ht/~sircmpwn/aerc/widgets/aerc.go:123 +0x91
	main.main()
		/go/src/git.sr.ht/~sircmpwn/aerc/aerc.go:182 +0x5bf

The make that blows up is:

	uids := make([]uint32, len(store.uids)-len(msg.Uids))

This change simply checks whether the make is going to be valid before
starting to work on the actual delete. If there are more messages queued
to be deleted than what's left in the store, then we're obviously in an
inconsistent state, ask for an update and break.
2019-12-12 12:29:39 -05:00
Drew DeVault
0ef4b6f9e2 Composer: fix EOF errors
PrepareHeaders generated a fresh message ID and Date header every time.
This instead generates those headers in advance.
2019-12-12 10:22:28 -05:00