summaryrefslogtreecommitdiffstats
path: root/lua/inbox/renderers/headers.lua
diff options
context:
space:
mode:
authorToby Vincent <tobyv@tobyvin.dev>2024-05-23 12:20:51 -0500
committerToby Vincent <tobyv@tobyvin.dev>2024-05-23 12:20:51 -0500
commitc3980bbd432ce50aaf351d5af3ab9e63bfda99a9 (patch)
treee11ef82e8697898d63bda790060b7ca4a0ea8716 /lua/inbox/renderers/headers.lua
parentc62051bd88601b66546b69f1f161638eab3e13d3 (diff)
Diffstat (limited to 'lua/inbox/renderers/headers.lua')
-rw-r--r--lua/inbox/renderers/headers.lua39
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