diff options
author | Toby Vincent <tobyv@tobyvin.dev> | 2023-10-15 17:42:17 -0500 |
---|---|---|
committer | Toby Vincent <tobyv@tobyvin.dev> | 2023-10-16 15:58:28 -0500 |
commit | 0de045c6a942f90c0e5c966c24855172d683ddfa (patch) | |
tree | 0236f8a2430c23bb255030da28975d3077f8d924 /lua/inbox/init.lua | |
parent | ccbee6b98ef59b5aea509965552be9dbe432ac9b (diff) |
feat: render buffer of messages
Diffstat (limited to 'lua/inbox/init.lua')
-rw-r--r-- | lua/inbox/init.lua | 50 |
1 files changed, 9 insertions, 41 deletions
diff --git a/lua/inbox/init.lua b/lua/inbox/init.lua index 0c3dc27..5841481 100644 --- a/lua/inbox/init.lua +++ b/lua/inbox/init.lua @@ -1,55 +1,23 @@ ----@class inbox.Indexer ----@field setup? fun(opts: table) ----@field available? fun(): boolean ----@field index? fun(account?:string, maildir?:string): inbox.Summary[] - local M = {} ----@param email inbox.Summary ----@return string summary -function M.summerize(email) - local tags = "" - for _, tag in pairs(email.tags) do - tags = tags .. string.sub(tag, 1, 1) - end - - local from = email.authors - if type(email.authors) == "table" then - from = email.authors[1] --[[@cast from string]] - end - - local subject = email.subject - if type(email.subject) == "table" then - subject = email.subject[1] --[[@cast subject string]] - end - subject = subject:gsub("\r?\n", " ") - - local summary = { - email.date_relative, - from, - tags, - subject, - } - - return table.concat(summary, "\t") -end - -function M.list_mail(...) - local config = require("inbox.config") - local results = config.indexer.index(...) - local lines = {} +function M.open(maildir) + local view = require("inbox.view") - for _, item in pairs(results) do - table.insert(lines, M.summerize(item)) + if M.bufnr == nil then + M.bufnr = vim.api.nvim_create_buf(true, false) + view.initialize(M.bufnr, maildir) end - return lines + vim.api.nvim_set_current_buf(M.bufnr) end ---@param opts inbox.Config function M.setup(opts) local config = require("inbox.config") + local indexers = require("inbox.indexers") + config.setup(opts) + indexers.setup(config.indexer_config) end return M |