~sircmpwn/aerc

ref: 0.3.0 aerc/commands/account/view.go -rw-r--r-- 810 bytes
commands/account: Disable :view for deleted msgs

Allowing the user to view deleted messages creates all sorts of race
conditions. The most devious race condition is pv.source can be set to a
nil while another PartViewer is still running a goroutine in
attemptCopy.

Here is a trace when this happens.

goroutine 76 [running]: io.copyBuffer(0x7f8ad02641d0, 0xc00040f590, 0x0,
0x0, 0xc0007cc000, 0x8000, 0x8000, 0x0, 0x0, 0x8b3d60)
/usr/lib/go/src/io/io.go:402 +0x101 io.Copy(...)
/usr/lib/go/src/io/io.go:364
git.sr.ht/~sircmpwn/aerc/widgets.(*PartViewer).attemptCopy.func4(0xc00017efd0,
0xc0004da7c0) /home/keur/repos/aerc/widgets/msgviewer.go:576 +0x611
created by git.sr.ht/~sircmpwn/aerc/widgets.(*PartViewer).attemptCopy
/home/keur/repos/aerc/widgets/msgviewer.go:544 +0x144

We could add a guard in store.FetchBodyPart to only call the callback
when msg.Part.Reader != nil, but we still get a hanging pager. Therefore
it seems more reasonable to disable this completely.

Signed-off-by: Kevin Kuehler <keur@xcf.berkeley.edu>
all: purge redundant underscores

Signed-off-by: Wagner Riffel <wgrriffel@gmail.com>
2a096170 — Gregory Mullen 1 year, 8 months ago
Implement basic tab completion support

Tab completion currently only works on commands. Contextual completion
will be added in the future.
753adb90 — Kevin Kuehler 1 year, 9 months ago
widget: Add ProvidesMessage interface

Consists of 3 functions
* Store: Access to MessageStore type
* SelectedAccount: Access to Account widget that the target widget
belongs to
* SelectedMessage: Current message (selected in msglist or the one we
are viewing)

Signed-off-by: Kevin Kuehler <keur@ocf.berkeley.edu>
Rename :delete-message et al to :delete et al
Fix scdoc & gofmt issues
Update tab name as subject changes

Also moves truncation to the tab widget
Fix segfault on :view-message for unloaded message

This also fixes segfault on :view-message on empty directory

Signed-off-by: Tom Lebreux <tomlebreux@cock.li>
Add basic filter implementation
Make the message viewer real, part one
Next