Commit Graph

1027 Commits

Author SHA1 Message Date
Reto Brunner f1a0fd20d6 improve date parsing for notmuch/maildir
If a message date would fail to parse, the worker would never receive
the MessageInfo it asked for, and so it wouldn't display the message.

The problem is the spec for date formats is too lax, so trying to ensure
we can parse every weird date format out there is not a strategy we want
to pursue. On the other hand, preventing the user from reading and
working with a message due to the error format is also not a solution.

The maildir and notmuch workers will now fallback to the internal date, which
is based on the received header if we can't parse the format of the Date header.

The UI will also fallback to the received header whenever the date header can't
be parsed.

This patch is based on the work done by Lyudmil Angelov <lyudmilangelov@gmail.com>
But tries to handle a parsing error a bit more gracefully instead of just returning
the zero date.
2020-08-10 08:00:52 +02:00
Reto Brunner 2d7a870725 show error if account view creation fails
This can happen for example if aerc is compiled without notmuch support but the
notmuch worker is requested.
Pushing a status message isn't good enough, as this gets overridden pretty
quickly if one has multiple accounts configured.
So we show a fullscreen error instead.
2020-08-10 08:00:34 +02:00
Reto Brunner c3c982c3ec notmuch: docs 2020-08-08 12:34:34 +02:00
Thorben Günther 9f89fe1108 aerc-stylesets: properly indent examples 2020-08-07 18:10:48 +02:00
Thorben Günther bf5f02a9e7 stylesets: only accept comment char after whitespace
Without the option SpaceBeforeInlineComment set, go-ini will parse just
a single "
This lead to people being unable to specify hex color codes
2020-08-07 18:05:39 +02:00
Reto Brunner 7a9fe3824f notmuch: manually close notmuch objects
There seems to be some race with the automatic closing that should happen
in theory... close it manually where we can to avoid the issue
2020-08-07 09:49:57 +02:00
Kalyan Sriram 1023dd9588 Rename selecter to selector 2020-08-06 21:42:06 +02:00
Kalyan Sriram 905cb9dfd3 Implement style configuration.
Introduce the ability to configure stylesets, allowing customization of
aerc's look (color scheme, font weight, etc). Default styleset is
installed to /path/to/aerc/stylesets/default.
2020-08-06 21:42:06 +02:00
Nicolai Dagestad 548a5fff68 Set environment variables for the exec command 2020-08-03 06:30:28 +02:00
Reto Brunner 3d784c5d8c Revert "Implement style configuration."
This reverts commit 1ff687ca2b.
2020-07-30 23:22:32 +02:00
Reto Brunner 6ee7b1c3fd Revert "Rename selecter to selector"
This reverts commit 2c244222d5.
2020-07-30 23:22:16 +02:00
Kalyan Sriram 2c244222d5 Rename selecter to selector 2020-07-30 19:35:59 +02:00
Kalyan Sriram 1ff687ca2b Implement style configuration.
Introduce the ability to configure stylesets, allowing customization of
aerc's look (color scheme, font weight, etc). Default styleset is
installed to /path/to/aerc/stylesets/default.
2020-07-30 19:35:59 +02:00
Reto Brunner 1bab1754f0 msgviewer: set max line length to 1 GB
some people send around huge html without any newline in between.
This did overflow the default 64KB buffer of bufio.Scanner.
If something can't fit in a GB there's no hope left

Also, ignoring errors is bad mkey
2020-07-30 19:35:59 +02:00
Reto Brunner 01885e2448 msgviewer: simplify attemptCopy
No functional changes, simply extract more complex stuff into
sub functions to help readability.
2020-07-30 19:35:59 +02:00
Drew DeVault bc9d6fc187 Update .build.yml 2020-07-29 15:27:51 -04:00
Tero Koskinen f81cc2803c maildir: Provide nicer error message on invalid url
If accounts.conf contains an invalid maildir url, return a nice
error instead of panicking.

Log a couple of different error cases to provide extra
information about the error to the user.
2020-07-27 18:26:57 +02:00
Reto Brunner c574a838fa Remove hard coded bodystruct path everywhere
Aerc usually used the path []int{1} if it didn't know what the proper path is.
However this only works for multipart messages and breaks if it isn't one.

This patch removes all the hard coding and extracts the necessary helpers to lib.
2020-07-27 09:19:27 +02:00
Tobias Wölfel 494bd674a9 Add flag based search options
Provide search and filter with the option to specify more flag based
conditions.
Use '-x <flag>' to search for messages with a flag (seen, answered,
flagged) and '-X <flag>' to search for messages without a flag.
2020-07-25 08:08:08 +02:00
Andrew Jeffery 126c9437e8 Only send directory info once from maildir
The directory info only needs to be sent once for all the messages, this
reduces unnecessary messages being sent which could lock up the ui.
2020-07-19 11:16:05 +02:00
Tobias Wölfel 825996572f Document mailto argument usage 2020-07-19 11:15:56 +02:00
Reto Brunner 8446d48664 run go fmt 2020-07-17 17:50:24 +02:00
Lyudmil Angelov cc44027545 Make it easier to debug date parsing errors
When message dates failed to parse, the error displayed would try to
include the time object it failed to obtain, which would display as
something like 0001-01-01 00:00:00 UTC, which isn't of much help.

Instead, display the text we were trying to parse into a date, which
makes the problem easier to debug.
2020-07-11 13:51:32 +02:00
Andrew Jeffery 6401b105cb Remove deleted messages from search/filter results
This ensures that when moving/deleting messages with a filter active the
view gets updated properly.
2020-07-10 09:15:11 +02:00
Heiko Carrasco 749dbb93a4 Use PushStatus instead of SetStatus where it makes sense 2020-07-09 08:37:01 +02:00
Reto Brunner 32df768d03 Update go-message, fixes various bugs
Changelog:
d262af7 (tag: v0.12.0) textproto: check header characters
5b97b1b Remove hz-gb-2312 encoding as it can crash
0e60ea0 writer: add Mime-Version header when missing
c512562 textproto: add Header.Raw and HeaderFields.Raw
4af4c77 textproto: Add HeaderFields.Len
f828d02 Add test converting an Entity to quoted-printable
8c6ac6b Add CreateInlineWriter to get a writer that allows alternatives, but no attachments.
fee642d (tag: v0.11.2) Fix incorrect line folding of RFC2047-encoded strings
9c4415e textproto: add limits for header field length and total amount of fields
46fe03d mail: add Message-Id test with IPv6 address
6c32091 textproto: add MultipartReader tests
9ce1b6f textproto: remove unused skipSpace function
a41879c mail: add tests for Header.{MessageID,MsgIDList}
82eb31c mail: add Header.MessageID and Header.MsgIDList
7e482a2 mail: add headerParser
40e7be6 textproto: minor doc improvements
f119d5f readme: remove stability badge
e48b6c5 mail: minor comments and docs improvements
8ade7dd textproto: add error on invalid header key
2020-07-09 08:28:58 +02:00
ARaspiK 0535f6333f Add additional flagging functionality
More mail flags can now be set, unset, and toggled, not just the
read/seen flag.

This functionality is implemented with a new `:flag` and `:unflag`
command, which are extensions to the matching `:read` and `:unread`
commands, adding support for different flags.  In fact, the
`read`/`unread` commands are now recognized aliases to `flag`/`unflag`.
The new commands are also well documented in aerc(1).

The change mostly extends the previous read/unread setting functionality
by adding a selection for the flag to change.
2020-07-08 09:13:03 +02:00
Andrew Jeffery fda3f43e7c Allow open to be asynchronous
This stops the ui being blocked while the resource is opened. The wait
ensures that resources are reclaimed when the process finishes while
aerc is still running.
2020-07-08 09:07:43 +02:00
Reto Brunner 3e6189f243 notmuch: fix docstring 2020-07-08 01:02:46 +02:00
Reto Brunner 5f9c005872 notmuch: handle the answered flag 2020-07-05 15:40:12 +02:00
Ben Fiedler eea128f10b Fix usage of DESTDIR
It should only be used when installing/uninstalling according to
the GNU spec.

Closes: https://todo.sr.ht/~sircmpwn/aerc2/418
2020-07-05 14:40:58 +02:00
Reto Brunner 60c36ca1f1 pipe: don't crash if part is nil 2020-07-05 14:27:21 +02:00
Gabriel Augendre 1790b1e7f0 Format config path in README 2020-07-05 12:24:39 +02:00
Reto Brunner 6abe1c708f status: invalidate when needed
In order for the message to actually show up we need to invalidate after setting
the status stack.
2020-07-05 12:22:45 +02:00
Reto Brunner fc2c6fff0d delete: push unsupported error up to the user 2020-07-05 12:22:45 +02:00
Andrew Jeffery 0acd6d0770 Fix a nil Envelope when getting the format
When getting the format for a message the envelope can be nil and this
shouldn't crash the program.
2020-07-03 18:26:16 +02:00
ARaspiK e1c2b596dc Add a 'folders-exclude' option
Added a 'folders-exclude' option that allows removing selected folders
from the directory list sidebar. My motivating example was that removing
a single folder from the list using Golang regexes seemed pretty hard,
so this is a better way to do it. The excluded folders list is included
in the man page.
2020-07-02 09:13:14 +02:00
Andrew Jeffery bf16ccde48 Fix nil pointer deref on Envelope
The Envelope was nil but being deref'ed for the Subject. This was
experienced when switching tabs on IMAP.
2020-07-02 09:12:37 +02:00
Reto Brunner 8f1c6c46ff Fix dates in reply/forward commands.
The data was passed around as a string for some reason, which led to time
precision loss and wrong dates being displayed.
Simply pass the time as is to fix that.
2020-06-26 09:25:53 +02:00
Alexander Harkness 91db250272 Fix missing escape in aerc-config manpage
Underscores were being elided by scdoc when they should have been
rendered verbatim in the output.
2020-06-13 10:15:59 +02:00
Jeffas 24c9509619 Sort command completions
Previously the completions weren't sorted which led to a difficult to
navigate list, especially for the command names as it would randomly
jump through the alphabet.
2020-06-13 10:12:53 +02:00
Jeffas d841c8c251 Add scrollbar
This transplants the logic for drawing the scrollbar from dirlist and
the completion popover and adds it to the msglist.
2020-06-09 21:52:16 +02:00
Jeffas 15b72df1da Rework msglist scrolling
This changes the scrolling to be done on the draw, when the height is
updated, ensuring that the selected item is kept on screen during
resizing.

Also, this ensures that messages will fill the screen when resizing the
window, for instance, shrinking and then growing drags down more
messages if possible.

This is a transplant of the dirlist scrolling logic.
2020-06-09 21:52:10 +02:00
Jeffas c6f4d7badd Add dirlist scrollbar
This mimics the scrollbar implementation from the completion popover.
Only showing it when necessary and adapting the dirlist strings
appropriately.
2020-06-09 20:50:28 +02:00
Jeffas 543510f5c1 Make grid sizes dynamic
The grid used static sizes which meant that changing settings didn't
have an effect on elements of the ui, notably the sidebar width. This
patch makes the `Size` parameter of a cell a function which returns the
`int`, allowing for dynamic sizes.

A `Const` function is also included for ease of use for static sizes.
2020-06-09 08:48:47 +02:00
Jeffas 3877b1aa71 Add dirlist scrolling
Should fix #402
2020-06-09 08:43:01 +02:00
Jeffas a69399a138 Fix search documentation
The documentation for searching in IMAP and Maildir was out of date.
This updates it to be more representative of what the options now do.
2020-06-09 08:42:54 +02:00
Drew DeVault caad1b2c06 Revert "Add Style configuration"
This reverts commit 0f78f06610.
2020-05-28 10:32:42 -04:00
Drew DeVault 76a91813d8 Revert "Remove duration from the status methods"
This reverts commit f06d683688.
2020-05-28 10:32:32 -04:00
Drew DeVault b9af9b5fb1 Revert "Make color scheme match previous design more closely"
This reverts commit 7832eb6fd7.
2020-05-28 10:32:17 -04:00