diff --git a/lua/pending/init.lua b/lua/pending/init.lua index 1593bc5..ec69d89 100644 --- a/lua/pending/init.lua +++ b/lua/pending/init.lua @@ -52,17 +52,8 @@ function M._setup_buf_mappings(bufnr) vim.keymap.set('n', 'g?', function() M.show_help() end, opts) - vim.keymap.set('n', '', function() - M.change_priority(1) - end, opts) - vim.keymap.set('n', '', function() - M.change_priority(-1) - end, opts) - vim.keymap.set('v', 'g', function() - M.change_priority_visual(1) - end, opts) - vim.keymap.set('v', 'g', function() - M.change_priority_visual(-1) + vim.keymap.set('n', '!', function() + M.toggle_priority() end, opts) vim.keymap.set('n', 'D', function() M.prompt_date() @@ -126,10 +117,15 @@ function M.toggle_complete() end store.save() buffer.render(bufnr) + for lnum, m in ipairs(buffer.meta()) do + if m.id == id then + vim.api.nvim_win_set_cursor(0, { lnum, 0 }) + break + end + end end ----@param delta integer -function M.change_priority(delta) +function M.toggle_priority() local bufnr = buffer.bufnr() if not bufnr then return @@ -147,7 +143,7 @@ function M.change_priority(delta) if not task then return end - local new_priority = math.max(0, task.priority + delta) + local new_priority = task.priority > 0 and 0 or 1 store.update(id, { priority = new_priority }) store.save() buffer.render(bufnr) @@ -159,33 +155,6 @@ function M.change_priority(delta) end end ----@param delta integer -function M.change_priority_visual(delta) - local bufnr = buffer.bufnr() - if not bufnr then - return - end - local start_row = vim.fn.line("'<") - local end_row = vim.fn.line("'>") - local meta = buffer.meta() - local changed = false - for row = start_row, end_row do - local m = meta[row] - if m and m.type == 'task' and m.id then - local task = store.get(m.id) - if task then - local new_priority = math.max(0, task.priority + delta) - store.update(m.id, { priority = new_priority }) - changed = true - end - end - end - if changed then - store.save() - buffer.render(bufnr) - end -end - function M.prompt_date() local bufnr = buffer.bufnr() if not bufnr then @@ -342,10 +311,7 @@ function M.show_help() '', ' Toggle complete/uncomplete', ' Switch category/priority view', - ' Raise priority level', - ' Lower priority level', - 'g Raise priority for visual selection', - 'g Lower priority for visual selection', + '! Toggle urgent', 'D Set due date', 'U Undo last write', 'o / O Add new task line', @@ -371,7 +337,7 @@ function M.show_help() '', 'Highlights:', ' PendingOverdue overdue tasks (red)', - ' PendingPriority [N] priority prefix', + ' PendingPriority [!] urgent tasks', '', 'Press q or to close', } diff --git a/plugin/pending.lua b/plugin/pending.lua index 56dedc3..465ee65 100644 --- a/plugin/pending.lua +++ b/plugin/pending.lua @@ -8,7 +8,7 @@ vim.api.nvim_create_user_command('Pending', function(opts) end, { nargs = '*', complete = function(arg_lead, cmd_line) - local subcmds = { 'add', 'sync', 'archive' } + local subcmds = { 'add', 'sync', 'archive', 'due', 'undo' } if not cmd_line:match('^Pending%s+%S') then return vim.tbl_filter(function(s) return s:find(arg_lead, 1, true) == 1 @@ -30,12 +30,8 @@ vim.keymap.set('n', '(pending-view)', function() require('pending.buffer').toggle_view() end) -vim.keymap.set('n', '(pending-priority-up)', function() - require('pending').change_priority(1) -end) - -vim.keymap.set('n', '(pending-priority-down)', function() - require('pending').change_priority(-1) +vim.keymap.set('n', '(pending-priority)', function() + require('pending').toggle_priority() end) vim.keymap.set('n', '(pending-date)', function()