diff options
Diffstat (limited to 'lua/inbox/renderers/headers.lua')
-rw-r--r-- | lua/inbox/renderers/headers.lua | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/lua/inbox/renderers/headers.lua b/lua/inbox/renderers/headers.lua new file mode 100644 index 0000000..991dd9f --- /dev/null +++ b/lua/inbox/renderers/headers.lua @@ -0,0 +1,39 @@ +local M = {} + +function M.render(bufnr) + local entry = vim.b[bufnr].inbox.entry + + local lines = {} + + local headers = {} + if vim.b[bufnr].show_all_headers then + headers = entry.headers + else + for _, name in pairs(vim.b[bufnr].inbox.headers) do + if entry.headers[name] ~= nil then + headers[name] = entry.headers[name] + end + end + end + + for name, value in pairs(headers) do + local i, line = next(value) + table.insert(lines, ("%s: %s"):format(name, line)) + i, line = next(value, i) + while i ~= nil do + table.insert(lines, line) + i, line = next(value, i) + end + end + + table.insert(lines, "") + + vim.bo[bufnr].filetype = "mail" + vim.bo[bufnr].syntax = "mail" + vim.bo[bufnr].modifiable = true + vim.api.nvim_buf_set_lines(bufnr, 0, -1, true, lines) + vim.bo[bufnr].modifiable = false + vim.bo[bufnr].modified = false +end + +return M |