diff options
author | Sijmen <me@sijman.nl> | 2022-08-13 01:44:44 +0200 |
---|---|---|
committer | Robin Jarry <robin@jarry.cc> | 2022-08-22 09:45:02 +0200 |
commit | db39ca181adf61ebb5a89fe5eb7a1e0d6836be56 (patch) | |
tree | 5c966b33de809d6e4e836e80695ee34d34828944 | |
parent | 7377b8b05a6276dd2913ca8836f9c7b96f3b09ca (diff) | |
download | aerc-db39ca181adf61ebb5a89fe5eb7a1e0d6836be56.tar.gz |
dirtree: add dirtree-collapse config setting
Adds a setting to the configuration to choose at which level the
folders in the dirtree are collapsed by default.
In my case, this is useful because my organisation has some rather deep
nesting in the folder structure, and a _lot_ of folders, and this way I
can keep my dirtree uncluttered while still having all folders there if
I need them.
Signed-off-by: Sijmen <me@sijman.nl>
Acked-by: Koni Marti <koni.marti@gmail.com>
-rw-r--r-- | CHANGELOG.md | 1 | ||||
-rw-r--r-- | config/aerc.conf | 6 | ||||
-rw-r--r-- | config/config.go | 1 | ||||
-rw-r--r-- | doc/aerc-config.5.scd | 6 | ||||
-rw-r--r-- | widgets/dirtree.go | 9 |
5 files changed, 20 insertions, 3 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 3328c0f3..6dedbef1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Run `check-mail-cmd` with `:check-mail`. - Display active key binds with `:help keys` (bound to `?` by default). - Multiple visual selections with `:mark -V`. +- Set default collapse depth of directory tree with `dirlist-collapse`. ### Changed diff --git a/config/aerc.conf b/config/aerc.conf index fc6479af..c60f4b03 100644 --- a/config/aerc.conf +++ b/config/aerc.conf @@ -103,6 +103,12 @@ dirlist-delay=200ms # Default: false dirlist-tree=false +# If dirlist-tree is enabled, set level at which folders are collapsed by +# default. Set to 0 to disable. +# +# Default: 0 +dirlist-collapse=0 + # 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 c6fe70ee..f0a74744 100644 --- a/config/config.go +++ b/config/config.go @@ -61,6 +61,7 @@ type UIConfig struct { DirListFormat string `ini:"dirlist-format"` DirListDelay time.Duration `ini:"dirlist-delay"` DirListTree bool `ini:"dirlist-tree"` + DirListCollapse int `ini:"dirlist-collapse"` Sort []string `delim:" "` NextMessageOnDelete bool `ini:"next-message-on-delete"` CompletionDelay time.Duration `ini:"completion-delay"` diff --git a/doc/aerc-config.5.scd b/doc/aerc-config.5.scd index aaf15b8a..f9a87580 100644 --- a/doc/aerc-config.5.scd +++ b/doc/aerc-config.5.scd @@ -207,6 +207,12 @@ These options are configured in the *[ui]* section of aerc.conf. Default: false +*dirlist-collapse* + If dirlist-tree is enabled, set level at which folders are collapsed + by default. Set to 0 to disable. + + Default: 0 + *next-message-on-delete* Moves to next message when the current message is deleted diff --git a/widgets/dirtree.go b/widgets/dirtree.go index 65fb3116..eb0af6ed 100644 --- a/widgets/dirtree.go +++ b/widgets/dirtree.go @@ -327,7 +327,7 @@ func (dt *DirectoryTree) buildTree() { copy(dt.treeDirs, dt.dirs) root := &types.Thread{Uid: 0} - buildTree(root, sTree, 0xFFFFFF) + dt.buildTreeNode(root, sTree, 0xFFFFFF, 1) threads := make([]*types.Thread, 0) @@ -373,7 +373,7 @@ func (dt *DirectoryTree) buildTree() { } } -func buildTree(node *types.Thread, stree [][]string, defaultUid uint32) { +func (dt *DirectoryTree) buildTreeNode(node *types.Thread, stree [][]string, defaultUid uint32, depth int) { m := make(map[string][][]string) for _, branch := range stree { if len(branch) > 1 { @@ -398,7 +398,10 @@ func buildTree(node *types.Thread, stree [][]string, defaultUid uint32) { } nextNode := &types.Thread{Uid: uid} node.AddChild(nextNode) - buildTree(nextNode, next, defaultUid) + if dt.UiConfig().DirListCollapse != 0 { + node.Hidden = depth > dt.UiConfig().DirListCollapse + } + dt.buildTreeNode(nextNode, next, defaultUid, depth+1) } } |