diff options
author | Toby Vincent <tobyv@tobyvin.dev> | 2024-05-23 12:20:51 -0500 |
---|---|---|
committer | Toby Vincent <tobyv@tobyvin.dev> | 2024-05-23 12:20:51 -0500 |
commit | c3980bbd432ce50aaf351d5af3ab9e63bfda99a9 (patch) | |
tree | e11ef82e8697898d63bda790060b7ca4a0ea8716 /lua/inbox/renderers/headers.lua | |
parent | c62051bd88601b66546b69f1f161638eab3e13d3 (diff) |
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 |