diff options
Diffstat (limited to 'lua/inbox/init.lua')
-rw-r--r-- | lua/inbox/init.lua | 55 |
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 |