about summary refs log tree commit diff stats
path: root/config
diff options
context:
space:
mode:
authorRobert Günzler <r@gnzler.io>2019-06-08 19:41:56 +0200
committerDrew DeVault <sir@cmpwn.com>2019-06-09 11:33:50 -0400
commitacfe7d7625192bc856d5d696f741e35ce38cab25 (patch)
tree64f76ab6927cbb25be95c0ff2e65e063791593a6 /config
parent35f57321f8d53dba2c1a2480aaa5860333e1c269 (diff)
downloadaerc-acfe7d7625192bc856d5d696f741e35ce38cab25.tar.gz
Add archive command
Adds an archive command that moves the current message into the folder
specified in the account config entry.

Supports three layouts at this point:

- flat: puts all messages next to each other
- year: creates a folder per year
- month: same as above, plus folders per month

This also adds a "-p" argument to "cp" and "mv" that works like
"--parents" on mkdir(1). We use this to auto-create the directories
for the archive layout.
Diffstat (limited to 'config')
-rw-r--r--config/binds.conf2
-rw-r--r--config/config.go4
2 files changed, 6 insertions, 0 deletions
diff --git a/config/binds.conf b/config/binds.conf
index 2c0476a..3800b7b 100644
--- a/config/binds.conf
+++ b/config/binds.conf
@@ -28,6 +28,7 @@ K = :prev-folder<Enter>
 <Enter> = :view<Enter>
 d = :confirm 'Really delete this message?' ':delete-message<Enter>'<Enter>
 D = :delete<Enter>
+A = :archive flat<Enter>
 
 C = :compose<Enter>
 
@@ -54,6 +55,7 @@ Rq = :reply -aq<Enter>
 <C-k> = :prev-part<Enter>
 <C-j> = :next-part<Enter>
 S = :save<space>
+A = :archive flat<Enter>
 
 [compose]
 # Keybindings used when the embedded terminal is not selected in the compose
diff --git a/config/config.go b/config/config.go
index 3ef587b..8e669f7 100644
--- a/config/config.go
+++ b/config/config.go
@@ -34,6 +34,7 @@ const (
 )
 
 type AccountConfig struct {
+	Archive         string
 	CopyTo          string
 	Default         string
 	From            string
@@ -115,6 +116,7 @@ func loadAccountConfig(path string) ([]AccountConfig, error) {
 		}
 		sec := file.Section(_sec)
 		account := AccountConfig{
+			Archive: "Archive",
 			Default: "INBOX",
 			Name:    _sec,
 			Params:  make(map[string]string),
@@ -137,6 +139,8 @@ func loadAccountConfig(path string) ([]AccountConfig, error) {
 				account.From = val
 			} else if key == "copy-to" {
 				account.CopyTo = val
+			} else if key == "archive" {
+				account.Archive = val
 			} else if key != "name" {
 				account.Params[key] = val
 			}