diff --git a/lua/pending/buffer.lua b/lua/pending/buffer.lua index bf598fc..93c0fd3 100644 --- a/lua/pending/buffer.lua +++ b/lua/pending/buffer.lua @@ -63,22 +63,19 @@ local function setup_syntax(bufnr) end) end ----@param bufnr integer -local function setup_indentexpr(bufnr) - vim.bo[bufnr].indentexpr = 'v:lua.require("pending.buffer").get_indent()' -end ----@return integer -function M.get_indent() - local lnum = vim.v.lnum - if lnum <= 1 then - return 0 +---@param above boolean +function M.open_line(above) + local bufnr = task_bufnr + if not bufnr or not vim.api.nvim_buf_is_valid(bufnr) then + return end - local prev = vim.fn.getline(lnum - 1) - if prev == '' or prev:match('^%S') then - return 0 - end - return 2 + local row = vim.api.nvim_win_get_cursor(0)[1] + local insert_row = above and (row - 1) or row + vim.bo[bufnr].modifiable = true + vim.api.nvim_buf_set_lines(bufnr, insert_row, insert_row, false, { ' ' }) + vim.api.nvim_win_set_cursor(0, { insert_row + 1, 2 }) + vim.cmd('startinsert!') end ---@return string @@ -222,7 +219,6 @@ function M.open() vim.api.nvim_buf_set_name(task_bufnr, 'pending://') set_buf_options(task_bufnr) - setup_indentexpr(task_bufnr) vim.api.nvim_set_current_buf(task_bufnr) set_win_options(vim.api.nvim_get_current_win()) diff --git a/lua/pending/init.lua b/lua/pending/init.lua index d03e454..86c1971 100644 --- a/lua/pending/init.lua +++ b/lua/pending/init.lua @@ -61,6 +61,12 @@ function M._setup_buf_mappings(bufnr) vim.keymap.set('n', 'U', function() M.undo_write() end, opts) + vim.keymap.set('n', 'o', function() + buffer.open_line(false) + end, opts) + vim.keymap.set('n', 'O', function() + buffer.open_line(true) + end, opts) end ---@param bufnr integer