A minimal email TUI where you read with Markdown and write in Neovim. neomd.ssp.sh/docs
email markdown neovim tui
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

adding new work folder for people who have work and personal in same mailbox

sspaeti 957349c2 598712a6

+16
+2
internal/config/config.go
··· 71 71 Scheduled string `toml:"scheduled"` 72 72 Someday string `toml:"someday"` 73 73 Spam string `toml:"spam"` 74 + Work string `toml:"work"` 74 75 // TabOrder lists folder keys (e.g. "inbox", "to_screen") in the desired 75 76 // tab display order. Spam is always excluded from tabs regardless of order. 76 77 // If empty, the built-in default order is used. ··· 95 96 "waiting": "Waiting", 96 97 "scheduled": "Scheduled", 97 98 "someday": "Someday", 99 + "work": "Work", 98 100 } 99 101 100 102 // TabLabels returns the UI label names in tab display order.
+8
internal/ui/model.go
··· 293 293 {"PaperTrail", f.PaperTrail}, {"ScreenedOut", f.ScreenedOut}, 294 294 {"Archive", f.Archive}, {"Waiting", f.Waiting}, 295 295 {"Scheduled", f.Scheduled}, {"Someday", f.Someday}, {"Spam", f.Spam}, 296 + {"Work", f.Work}, 296 297 } 297 298 for _, kv := range folders { 298 299 val := kv[1] ··· 626 627 return m.cfg.Folders.ScreenedOut 627 628 case "Spam": 628 629 return m.cfg.Folders.Spam 630 + case "Work": 631 + return m.cfg.Folders.Work 629 632 default: 630 633 return m.cfg.Folders.Inbox 631 634 } ··· 998 1001 f.Inbox, f.Sent, f.Trash, f.Drafts, 999 1002 f.ToScreen, f.Feed, f.PaperTrail, f.ScreenedOut, 1000 1003 f.Archive, f.Waiting, f.Scheduled, f.Someday, f.Spam, 1004 + } 1005 + if f.Work != "" { 1006 + folders = append(folders, f.Work) 1001 1007 } 1002 1008 return func() tea.Msg { 1003 1009 created, err := m.imapCli().EnsureFolders(nil, folders) ··· 2153 2159 "k": "ToScreen", 2154 2160 "a": "Archive", 2155 2161 "w": "Waiting", 2162 + "b": "Work", 2156 2163 "m": "Someday", 2157 2164 "o": "ScreenedOut", 2158 2165 } ··· 2184 2191 "t": m.cfg.Folders.Trash, 2185 2192 "o": m.cfg.Folders.ScreenedOut, 2186 2193 "w": m.cfg.Folders.Waiting, 2194 + "b": m.cfg.Folders.Work, 2187 2195 "m": m.cfg.Folders.Someday, 2188 2196 "k": m.cfg.Folders.ToScreen, 2189 2197 }
+6
internal/ui/search.go
··· 38 38 f.ToScreen, f.Feed, f.PaperTrail, f.ScreenedOut, 39 39 f.Archive, f.Waiting, f.Scheduled, f.Someday, f.Spam, 40 40 } 41 + if f.Work != "" { 42 + folders = append(folders, f.Work) 43 + } 41 44 return func() tea.Msg { 42 45 emails, err := cli.SearchAllFolders(nil, folders, query) 43 46 return imapSearchResultMsg{emails: emails, query: query, err: err} ··· 125 128 f.Inbox, f.Sent, f.Trash, f.Drafts, 126 129 f.ToScreen, f.Feed, f.PaperTrail, f.ScreenedOut, 127 130 f.Archive, f.Waiting, f.Scheduled, f.Someday, f.Spam, 131 + } 132 + if f.Work != "" { 133 + folders = append(folders, f.Work) 128 134 } 129 135 return func() tea.Msg { 130 136 emails, err := cli.FetchLatestAllFolders(nil, folders, 50)