diff --git a/lua/orgmode/objects/calendar.lua b/lua/orgmode/objects/calendar.lua index 8a440ae84..7c3f4d907 100644 --- a/lua/orgmode/objects/calendar.lua +++ b/lua/orgmode/objects/calendar.lua @@ -130,6 +130,12 @@ function Calendar:open() vim.keymap.set('n', '', function() return self:cursor_left() end, map_opts) + vim.keymap.set('n', '0', function() + return self:beginning() + end, map_opts) + vim.keymap.set('n', '$', function() + return self:ending() + end, map_opts) vim.keymap.set('n', '', function() return self:cursor_right() end, map_opts) @@ -436,6 +442,27 @@ function Calendar:cursor_left() self:render() end +function Calendar:beginning() + if self.select_state ~= SelState.DAY then + return + end + local line = vim.fn.line('.') + vim.fn.cursor(line, vim.fn.getline('.'):match('^%s*'):len() + 1) + self.date = self:get_selected_date() + self:render() +end + +function Calendar:ending() + if self.select_state ~= SelState.DAY then + return + end + local line = vim.fn.line('.') + local line_no_trailing_space = vim.fn.getline('.'):gsub('%s*$', '') + vim.fn.cursor(line, line_no_trailing_space:len()) + self.date = self:get_selected_date() + self:render() +end + ---@param direction string ---@param step_size number ---@param current number