diff --git a/lua/pending/buffer.lua b/lua/pending/buffer.lua index d11254b..8f9fb59 100644 --- a/lua/pending/buffer.lua +++ b/lua/pending/buffer.lua @@ -7,8 +7,6 @@ local M = {} ---@type integer? local task_bufnr = nil ----@type integer? -local task_winid = nil local task_ns = vim.api.nvim_create_namespace('pending') ---@type 'category'|'priority'|nil local current_view = nil @@ -27,27 +25,11 @@ function M.bufnr() return task_bufnr end ----@return integer? -function M.winid() - return task_winid -end - ---@return string? function M.current_view_name() return current_view end -function M.clear_winid() - task_winid = nil -end - -function M.close() - if task_winid and vim.api.nvim_win_is_valid(task_winid) then - vim.api.nvim_win_close(task_winid, false) - end - task_winid = nil -end - ---@param bufnr integer local function set_buf_options(bufnr) vim.bo[bufnr].buftype = 'acwrite' @@ -68,7 +50,6 @@ local function set_win_options(winid) vim.wo[winid].foldcolumn = '0' vim.wo[winid].spell = false vim.wo[winid].cursorline = true - vim.wo[winid].winfixheight = true end ---@param bufnr integer @@ -270,25 +251,24 @@ function M.open() setup_highlights() store.load() - if task_winid and vim.api.nvim_win_is_valid(task_winid) then - vim.api.nvim_set_current_win(task_winid) + if task_bufnr and vim.api.nvim_buf_is_valid(task_bufnr) then + local wins = vim.fn.win_findbuf(task_bufnr) + if #wins > 0 then + vim.api.nvim_set_current_win(wins[1]) + M.render(task_bufnr) + return task_bufnr + end + vim.api.nvim_set_current_buf(task_bufnr) + set_win_options(vim.api.nvim_get_current_win()) M.render(task_bufnr) - return task_bufnr --[[@as integer]] + return task_bufnr end - if not (task_bufnr and vim.api.nvim_buf_is_valid(task_bufnr)) then - task_bufnr = vim.api.nvim_create_buf(true, false) - set_buf_options(task_bufnr) - end + task_bufnr = vim.api.nvim_create_buf(true, false) - vim.cmd('botright new') - task_winid = vim.api.nvim_get_current_win() - vim.api.nvim_win_set_buf(task_winid, task_bufnr) - local h = config.get().drawer_height - if h and h > 0 then - vim.api.nvim_win_set_height(task_winid, h) - end - set_win_options(task_winid) + set_buf_options(task_bufnr) + vim.api.nvim_set_current_buf(task_bufnr) + set_win_options(vim.api.nvim_get_current_win()) M.render(task_bufnr) diff --git a/lua/pending/config.lua b/lua/pending/config.lua index b61f44a..2e647e4 100644 --- a/lua/pending/config.lua +++ b/lua/pending/config.lua @@ -9,7 +9,6 @@ ---@field date_format string ---@field date_syntax string ---@field category_order? string[] ----@field drawer_height? integer ---@field gcal? pending.GcalConfig ---@class pending.config diff --git a/lua/pending/init.lua b/lua/pending/init.lua index 14b9c24..ec69d89 100644 --- a/lua/pending/init.lua +++ b/lua/pending/init.lua @@ -38,25 +38,11 @@ function M._setup_autocmds(bufnr) end end, }) - vim.api.nvim_create_autocmd('WinClosed', { - group = group, - callback = function(ev) - if tonumber(ev.match) == buffer.winid() then - buffer.clear_winid() - end - end, - }) end ---@param bufnr integer function M._setup_buf_mappings(bufnr) local opts = { buffer = bufnr, silent = true } - vim.keymap.set('n', 'q', function() - buffer.close() - end, opts) - vim.keymap.set('n', '', function() - buffer.close() - end, opts) vim.keymap.set('n', '', function() M.toggle_complete() end, opts)