From a5c046efe3af8f1b3c94c9d83c214c77fa9f6697 Mon Sep 17 00:00:00 2001 From: Robin Jarry Date: Fri, 28 Jan 2022 10:17:13 +0100 Subject: 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 Signed-off-by: Robin Jarry --- config/aerc.conf.in | 7 +++++++ config/config.go | 2 ++ doc/aerc-config.5.scd | 8 ++++++++ widgets/dirlist.go | 2 +- 4 files changed, 18 insertions(+), 1 deletion(-) diff --git a/config/aerc.conf.in b/config/aerc.conf.in index 3919b39..9f45883 100644 --- a/config/aerc.conf.in +++ b/config/aerc.conf.in @@ -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. diff --git a/config/config.go b/config/config.go index 374fd5c..e2acbaf 100644 --- a/config/config.go +++ b/config/config.go @@ -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, diff --git a/doc/aerc-config.5.scd b/doc/aerc-config.5.scd index 89485b2..f40c9cb 100644 --- a/doc/aerc-config.5.scd +++ b/doc/aerc-config.5.scd @@ -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 diff --git a/widgets/dirlist.go b/widgets/dirlist.go index 53afc1d..6f8869d 100644 --- a/widgets/dirlist.go +++ b/widgets/dirlist.go @@ -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) { -- cgit v1.2.3