| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
| |
This transplants the logic for drawing the scrollbar from dirlist and
the completion popover and adds it to the msglist.
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
| |
This mimics the scrollbar implementation from the completion popover.
Only showing it when necessary and adapting the dirlist strings
appropriately.
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
Should fix #402
|
|
|
|
| |
This reverts commit 0f78f06610c0e8887aba2ae50e99b86477a384b3.
|
|
|
|
| |
This reverts commit f06d683688e3d2139b14f67b7e349089e7200bf4.
|
|
|
|
| |
We always set 10 seconds anyhow, might as well do that without repeating ourselfs.
|
|
|
|
|
|
|
|
|
|
| |
The following functionalities are added to configure aerc ui styles.
- Read stylesets from file with very basic fnmatch wildcard matching
- Add default styleset
- Support different stylesets as part of UiConfig allowing contextual
styles.
- Move widgets/ui elements to use the stylesets.
- Add configuration manual for the styleset
|
| |
|
|
|
|
|
|
| |
Previously there's a hack for showing and hiding the dialog.
Change it to use channels to emulate async/await
|
|
|
|
|
| |
The error wasn't shown, making errors like wrong password being ignored
and the password is prompted again.
|
|
|
|
| |
Previously there was no way to cancel the password prompt.
|
|
|
|
|
| |
Aerc panics when there's an error on email decryption.
Instead, an error message should be shown.
|
| |
|
|
|
|
|
|
|
|
|
| |
Especially if one tries to interact with all marked messages there could be
the case that not all headers are fetched yet, hence the messageInfo is still nil.
This segfaults a lot of commands which in principle only need the uid to complete.
If we switch to uids, this issue can be alleviated for those commands.
|
|
|
|
|
|
|
| |
Soves an issue with go1.15 not letting ctty be a parent. See
https://github.com/creack/pty/pull/97 for more details.
Signed-off-by: Guillaume J. Charmes <git+guillaume@charmes.net>
|
|
|
|
| |
This reverts commit d07cf6c667a0d497c67196fca9967db71c1e02f6.
|
|
|
|
| |
Signed-off-by: Guillaume J. Charmes <git+guillaume@charmes.net>
|
| |
|
|
|
|
|
|
| |
This command allows recalling the selected postponed email to edit in
the composer. The command only allows recalling from the postpone
directory.
|
|
|
|
|
|
|
| |
This command uses the Postpone folder from the account config to save
messages to. Messages are saved as though they were sent so have a valid
'to' recipient address and should be able to be read back in for later
editing.
|
|
|
|
|
|
|
| |
Usage:
*choose* -o <key> <text> <command> [-o <key> <text> <command>]...
Prompts the user to choose from various options.
|
|
|
|
|
|
|
|
|
|
| |
Due to headers being essentially free text, we constantly run into issues
with parts of the body being interpreted as headers.
Remove the ability to overwrite headers to avoid that, while keeping the ability
to specify headers in the template files.
Fixes #383
|
|
|
|
| |
Forgot an unused import, to save you the hassle here is v2.
|
|
|
|
|
|
|
| |
Closes https://todo.sr.ht/~sircmpwn/aerc2/379
The old `MessageView` was not closed when replacing the tab content, which
causes a memory leak.
|
|
|
|
| |
off-by-one error
|
| |
|
|
|
|
|
|
| |
This adds the commands pin-tab and unpin-tab. Once pinned a tab lives on
the left of the tabstrip and has a configurable marker, defaulting to `
before its name.
|
| |
|
| |
|
|
|
|
| |
I think this will be the one.
|
| |
|
|
|
|
| |
Until the PGP changes, this was merged into the header widget.
|
| |
|
| |
|
|
|
|
|
| |
This fixes the problem where we already have messages and then have to
sort again.
|
|
|
|
|
|
| |
This changes the ui to show the spinner while we are sorting. It only
shows one line of the spinner since there are an unknown number of
messages at this time.
|
| |
|
|
|
|
|
|
| |
Updates to a store can be asynchronous so we shouldn't select it just
because it had an update. Selection of the stores should be driven by
explicit user commands.
|
|
|
|
|
|
|
|
|
| |
This fixes an issue with the updated count logic, where only fetched messages
where counted to the exists string of the rue count.
Note that the count is still broken (we only count read / unread messages we
fetched, but that is the same behaviour as prior to the commit
66b68f35b3f3f3b97ec9951397fd75afeb0d0995)
|
| |
|
|
|
|
|
| |
Using mouse scroll before messages load will trigger a panic as
`ml.store` has not been assigned yet and is `nil`.
|
| |
|
|
|
|
|
|
|
| |
This reverts commit bd4df530095ee343778a59120a9e641c01010b0f.
I did not properly untangle the opening / dirlist update of each other.
This interferes with the imap worker, hence the revert
|
|
|
|
|
|
|
|
|
|
|
|
| |
Currently the dirlist ignores the counts provided by the dirInfo.
However some of the workers can actually provide accurate counts much quicker
than if we count the flags.
Eventually we will also want to enable displaying counts for background folders,
where the brute force counting won't work as none of the headers are fetched yet.
This commit models it in an opt-in manner, if the flag isn't set then we still
count the messages manually.
|
|
|
|
|
|
| |
Previously, sending a DirectoryInfo assumed that a directory change
happened. However we don't want that if we only want to update the
unread message count.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When the list of directories is empty trying to navigate in the
directory list did previously lead to a crash. With this change we
instead return early before trying to change the directory.
Example backtrace:
> panic: runtime error: index out of range [-1]
>
> goroutine 1 [running]:
> git.sr.ht/~sircmpwn/aerc/widgets.(*DirectoryList).NextPrev(0xc000160680, 0xffffffffffffffff)
> source/aerc/widgets/dirlist.go:285 +0xd4
> git.sr.ht/~sircmpwn/aerc/commands/account.NextPrevFolder.Execute(0xc000191040, 0xc00025c210, 0x1, 0x1, 0x0, 0xc00016f420)
> source/aerc/commands/account/next-folder.go:44 +0xe0
> git.sr.ht/~sircmpwn/aerc/commands.(*Commands).ExecuteCommand(0xc0000101a8, 0xc000191040, 0xc00025c210, 0x1, 0x1, 0xc000020070, 0xb46d01)
> source/aerc/commands/commands.go:66 +0xa7
> main.execCommand(0xc000191040, 0xc0001ca190, 0xc00025c210, 0x1, 0x1, 0xc00025c210, 0xc0003fb080)
> source/aerc/aerc.go:60 +0xc7
> main.main.func3(0xc00025c210, 0x1, 0x1, 0x1, 0x1)
> source/aerc/aerc.go:162 +0x57
> git.sr.ht/~sircmpwn/aerc/widgets.(*Aerc).BeginExCommand.func1(0xc000201db0, 0xb)
> source/aerc/widgets/aerc.go:382 +0x83
> git.sr.ht/~sircmpwn/aerc/widgets.(*ExLine).Event(0xc0003be100, 0xb475a0, 0xc00023cba0, 0xc00023cba0)
> source/aerc/widgets/exline.go:79 +0x131
> git.sr.ht/~sircmpwn/aerc/widgets.(*Aerc).Event(0xc000191040, 0xb475a0, 0xc00023cba0, 0x99ee01)
> source/aerc/widgets/aerc.go:202 +0x4c1
> git.sr.ht/~sircmpwn/aerc/widgets.(*Aerc).simulate(0xc000191040, 0xc000036f00, 0xd, 0x10)
> source/aerc/widgets/aerc.go:195 +0x8d
> git.sr.ht/~sircmpwn/aerc/widgets.(*Aerc).Event(0xc000191040, 0xb475a0, 0xc00023c9c0, 0x9c5a60)
> source/aerc/widgets/aerc.go:218 +0x3e8
> git.sr.ht/~sircmpwn/aerc/lib/ui.(*UI).Tick(0xc0001ca190, 0xa99d00)
> source/aerc/lib/ui/ui.go:92 +0x190
> main.main()
> source/aerc/aerc.go:192 +0x5f2
|
| |
|
|
|
|
|
|
|
|
|
|
| |
The docs of strings.Compare state:
> Compare is included only for symmetry with package bytes. It is usually
> clearer and always faster to use the built-in string comparison operators
> ==, <, >, and so on.
So let's do that.
|