summaryrefslogtreecommitdiffstats
path: root/lua/inbox/init.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua/inbox/init.lua')
-rw-r--r--lua/inbox/init.lua55
1 files changed, 52 insertions, 3 deletions
diff --git a/lua/inbox/init.lua b/lua/inbox/init.lua
index b00ed84..92d7405 100644
--- a/lua/inbox/init.lua
+++ b/lua/inbox/init.lua
@@ -1,16 +1,63 @@
local M = {}
+function M.select()
+ local mode = vim.api.nvim_get_mode().mode
+ local is_visual = mode:match("^[vV]")
+
+ local entries = {}
+ if is_visual then
+ -- This is the best way to get the visual selection at the moment
+ -- https://github.com/neovim/neovim/pull/13896
+ local _, start_lnum, _, _ = unpack(vim.fn.getpos("v"))
+ local _, end_lnum, _, _, _ = unpack(vim.fn.getcurpos())
+ if start_lnum > end_lnum then
+ start_lnum, end_lnum = end_lnum, start_lnum
+ end
+ for i = start_lnum, end_lnum do
+ local entry = M.get_entry_on_line(0, i)
+ if entry then
+ table.insert(entries, entry)
+ end
+ end
+ else
+ local entry = M.get_cursor_entry()
+ if entry then
+ table.insert(entries, entry)
+ end
+ end
+end
+
function M.open(maildir)
local view = require("inbox.view")
-
if M.bufnr == nil then
- M.bufnr = vim.api.nvim_create_buf(true, false)
- view.initialize(M.bufnr, maildir)
+ local bufname = string.format("maildir://%s", maildir)
+ M.bufnr = view.initialize(bufname)
+ end
+
+ if not vim.api.nvim_buf_is_valid(M.bufnr) then
+ --- TODO: Handle error
+ return
end
vim.api.nvim_set_current_buf(M.bufnr)
end
+---@param content_type inbox.ContentType
+function M.open_entry(content_type)
+ if content_type == nil then
+ content_type = "text/plain"
+ end
+
+ local lnum = vim.api.nvim_win_get_cursor(0)[1]
+
+ local indexers = require("inbox.indexers")
+ local indexer = indexers.get_indexer()
+
+ local part = indexer.get_part(0, lnum, content_type)
+
+ vim.print(part)
+end
+
---@param opts inbox.Config
function M.setup(opts)
local config = require("inbox.config")
@@ -22,8 +69,10 @@ function M.setup(opts)
for sign, value in pairs(config.signs) do
local name = utils.sign_name(sign)
+ vim.print(sign, value)
vim.fn.sign_define(name, value)
end
+ utils.sign_priority = vim.tbl_add_reverse_lookup(vim.tbl_keys(config.signs))
end
return M