Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 27 additions & 3 deletions lua/orgmode/objects/calendar.lua
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@ function Calendar.open()
vim.keymap.set('n', '<', '<cmd>lua require("orgmode.objects.calendar").backward()<CR>', map_opts)
vim.keymap.set('n', '<CR>', '<cmd>lua require("orgmode.objects.calendar").select()<CR>', map_opts)
vim.keymap.set('n', '.', '<cmd>lua require("orgmode.objects.calendar").reset()<CR>', map_opts)
vim.keymap.set('n', 'i', '<cmd>lua require("orgmode.objects.calendar").read_date()<CR>', map_opts)
vim.keymap.set('n', 'q', ':call nvim_win_close(win_getid(), v:true)<CR>', map_opts)
vim.keymap.set('n', '<Esc>', ':call nvim_win_close(win_getid(), v:true)<CR>', map_opts)
if Calendar.clearable then
Expand Down Expand Up @@ -145,7 +146,9 @@ function Calendar.render()
table.insert(content, ' [<] - prev month [>] - next month')
table.insert(content, ' [.] - today [Enter] - select day')
if Calendar.clearable then
table.insert(content, ' [r] Clear date')
table.insert(content, ' [i] - enter date [r] - clear date')
else
table.insert(content, ' [i] - enter date')
end

vim.api.nvim_buf_set_lines(Calendar.buf, 0, -1, true, content)
Expand Down Expand Up @@ -264,7 +267,7 @@ function Calendar.reset()
vim.fn.search(today:format('%d'), 'W')
end

function Calendar.select()
function Calendar.get_selected_date()
local col = vim.fn.col('.')
local char = vim.fn.getline('.'):sub(col, col)
local day = vim.trim(vim.fn.expand('<cword>'))
Expand All @@ -274,7 +277,11 @@ function Calendar.select()
return utils.echo_warning('Please select valid day number.', nil, false)
end
day = tonumber(day)
local selected_date = Calendar.month:set({ day = day })
return Calendar.month:set({ day = day })
end

function Calendar.select()
local selected_date = Calendar.get_selected_date()
local cb = Calendar.callback
Calendar.callback = nil
vim.cmd([[echon]])
Expand All @@ -300,4 +307,21 @@ function Calendar.clear_date()
cb(nil, true)
end

function Calendar.read_date()
vim.ui.input({ prompt = 'Enter date: ' }, function(result)
if result then
local date = Date.from_string(result)
if not date then
date = Calendar.get_selected_date():adjust(result)
end

Calendar.date = date
Calendar.month = date:set({ day = 1 })
Calendar.render()
vim.fn.cursor(2, 0)
vim.fn.search(date:format('%d'), 'W')
end
end)
end

return Calendar