+
+ if not new_date or new_date == '' then
+ new_date = vim.fn.input('Reschedule for which date (YYYY-mm-dd): ')
+ end
+
+ if not Util.is_valid_date(new_date) and new_date ~= 'someday' then
+ api.nvim_err_writeln(new_date .. ' is not a valid date in the format YYYY-mm-dd')
+ return
+ end
+
+ local line_number = api.nvim_win_get_cursor(0)[1]
+ local buffer = api.nvim_get_current_buf()
+ local line = api.nvim_get_current_line()
+ local filename = vim.fn.expand('%:t:r')
+
+ if line:match(unchecked_pattern) or line:match(unchecked_important_pattern) then
+ if Util.is_before_today(filename) and line:match(unchecked_pattern) then
+ local rescheduled_line = line:gsub(unchecked_pattern, '%1- [>' .. new_date .. ']', 1)
+ api.nvim_buf_set_lines(0, line_number - 1, line_number, false, {rescheduled_line})
+ elseif Util.is_before_today(filename) and line:match(unchecked_important_pattern) then
+ local rescheduled_line = line:gsub(unchecked_important_pattern, '%1* [>' .. new_date .. ']', 1)
+ api.nvim_buf_set_lines(0, line_number - 1, line_number, false, {rescheduled_line})
+ else
+ api.nvim_buf_set_lines(buffer, line_number - 1, line_number, false, {})
+ end
+
+ vim.cmd('write')
+
+ if new_date == 'someday' then
+ open_someday()
+ else
+ Notes.open_daily(new_date)
+ end
+
+ local line_count = api.nvim_buf_line_count(0)
+ api.nvim_buf_set_lines(0, line_count, line_count, false, {line})
+ api.nvim_win_set_cursor(0, {line_count, 0})
+ else
+ api.nvim_err_writeln('Reschedule only works on open tasks')
+ end