diff options
author | Daniel Xu <dxu@dxuuu.xyz> | 2019-08-16 00:11:37 -0700 |
---|---|---|
committer | Drew DeVault <sir@cmpwn.com> | 2019-08-19 15:22:59 +0900 |
commit | 9fd6054ca1a99205d2abb6408ece747d2eddaae7 (patch) | |
tree | 00e9e394ddd7d486797aefef065b450692b7cbec /widgets | |
parent | b47143ccc7fdb54e62d8536414a5cf38852eae40 (diff) | |
download | aerc-9fd6054ca1a99205d2abb6408ece747d2eddaae7.tar.gz |
Support regex filters for folders
It's nice to be able to filter the folders displayed in the side bar. Basic string matching can get verbose with enough folders whitelisted. Signed-off-by: Daniel Xu <dxu@dxuuu.xyz>
Diffstat (limited to 'widgets')
-rw-r--r-- | widgets/dirlist.go | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/widgets/dirlist.go b/widgets/dirlist.go index b0807ae..c84f839 100644 --- a/widgets/dirlist.go +++ b/widgets/dirlist.go @@ -2,6 +2,7 @@ package widgets import ( "log" + "regexp" "sort" "github.com/gdamore/tcell" @@ -159,6 +160,15 @@ func (dirlist *DirectoryList) Prev() { dirlist.NextPrev(-1) } +func folderMatches(folder string, pattern string) bool { + r, err := regexp.Compile(pattern) + if err != nil { + return false + } + + return r.Match([]byte(folder)) +} + // filterDirsByFoldersConfig sets dirlist.dirs to the filtered subset of the // dirstore, based on the AccountConfig.Folders option func (dirlist *DirectoryList) filterDirsByFoldersConfig() { @@ -170,7 +180,7 @@ func (dirlist *DirectoryList) filterDirsByFoldersConfig() { var filtered []string for _, folder := range dirlist.dirs { for _, cfgfolder := range dirlist.acctConf.Folders { - if folder == cfgfolder { + if folderMatches(folder, cfgfolder) { filtered = append(filtered, folder) break } |