~poldi1405/aerc

a5c046efe3af8f1b3c94c9d83c214c77fa9f6697 — Robin Jarry 4 months ago cdec233
dirlist: use shorter delay before listing directory contents

1 second is a bit excessive. Use 200ms which should cover most quick
folder changes.

Add an option to make that delay configurable by the users.

References: https://todo.sr.ht/~rjarry/aerc/16
Fixes: cb3090956cfd ("dirlist: skip unnecessary change-folder action")
Suggested-by: Koni Marti <koni.marti@gmail.com>
Signed-off-by: Robin Jarry <robin@jarry.cc>
4 files changed, 18 insertions(+), 1 deletions(-)

M config/aerc.conf.in
M config/config.go
M doc/aerc-config.5.scd
M widgets/dirlist.go
M config/aerc.conf.in => config/aerc.conf.in +7 -0
@@ 74,6 74,13 @@ pinned-tab-marker='`'
# Default: %n %>r
dirlist-format=%n %>r

# Delay after which the messages are actually listed when entering a directory.
# This avoids loading messages when skipping over folders and makes the UI more
# responsive. If you do not want that, set it to 0s.
#
# Default: 200ms
dirlist-delay=200ms

# List of space-separated criteria to sort the messages by, see *sort*
# command in *aerc*(1) for reference. Prefixing a criterion with "-r "
# reverses that criterion.

M config/config.go => config/config.go +2 -0
@@ 47,6 47,7 @@ type UIConfig struct {
	Spinner             string        `ini:"spinner"`
	SpinnerDelimiter    string        `ini:"spinner-delimiter"`
	DirListFormat       string        `ini:"dirlist-format"`
	DirListDelay        time.Duration `ini:"dirlist-delay"`
	Sort                []string      `delim:" "`
	NextMessageOnDelete bool          `ini:"next-message-on-delete"`
	CompletionDelay     time.Duration `ini:"completion-delay"`


@@ 564,6 565,7 @@ func LoadConfigFromFile(root *string, sharedir string, logger *log.Logger) (*Aer
			Spinner:             "[..]    , [..]   ,  [..]  ,   [..] ,    [..],   [..] ,  [..]  , [..]   ",
			SpinnerDelimiter:    ",",
			DirListFormat:       "%n %>r",
			DirListDelay:        200 * time.Millisecond,
			NextMessageOnDelete: true,
			CompletionDelay:     250 * time.Millisecond,
			CompletionPopovers:  true,

M doc/aerc-config.5.scd => doc/aerc-config.5.scd +8 -0
@@ 177,6 177,14 @@ These options are configured in the *[ui]* section of aerc.conf.
|  %>X
:  make format specifier 'X' be right justified

*dirlist-delay*
	Delay after which the messages are actually listed when entering
	a directory. This avoids loading messages when skipping over folders
	and makes the UI more responsive. If you do not want that, set it to
	0s.

	Default: 200ms

*next-message-on-delete*
	Moves to next message when the current message is deleted


M widgets/dirlist.go => widgets/dirlist.go +1 -1
@@ 96,7 96,7 @@ func (dirlist *DirectoryList) Select(name string) {

	go func() {
		select {
		case <-time.After(1 * time.Second):
		case <-time.After(dirlist.aercConf.Ui.DirListDelay):
			dirlist.worker.PostAction(&types.OpenDirectory{Directory: name},
				func(msg types.WorkerMessage) {
					switch msg.(type) {