Skip to content

Commit 2aa966f

Browse files
fix(calendar): fix custom date input
1 parent de15ddf commit 2aa966f

File tree

2 files changed

+20
-2
lines changed

2 files changed

+20
-2
lines changed

Diff for: lua/orgmode/objects/calendar.lua

+7-2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ local config = require('orgmode.config')
55
local namespace = vim.api.nvim_create_namespace('org_calendar')
66
local colors = require('orgmode.colors')
77
local Range = require('orgmode.files.elements.range')
8+
local Input = require('orgmode.ui.input')
89

910
---@alias OrgCalendarOnRenderDayOpts { line: number, from: number, to: number, buf: number, namespace: number }
1011
---@alias OrgCalendarOnRenderDay fun(day: OrgDate, opts: OrgCalendarOnRenderDayOpts)
@@ -71,6 +72,7 @@ function Calendar:open()
7172
title_pos = 'center',
7273
}
7374
end
75+
self.prev_win = vim.api.nvim_get_current_win()
7476

7577
self.buf = vim.api.nvim_create_buf(false, true)
7678
vim.api.nvim_buf_set_name(self.buf, 'orgcalendar')
@@ -592,6 +594,7 @@ function Calendar:select()
592594

593595
vim.cmd([[echon]])
594596
vim.api.nvim_win_close(0, true)
597+
vim.api.nvim_set_current_win(self.prev_win)
595598
return cb(selected_date)
596599
end
597600

@@ -600,6 +603,7 @@ function Calendar:dispose()
600603
self.buf = nil
601604
if self.callback then
602605
self.callback(nil)
606+
vim.api.nvim_set_current_win(self.prev_win)
603607
self.callback = nil
604608
end
605609
end
@@ -609,15 +613,16 @@ function Calendar:clear_date()
609613
self.callback = nil
610614
vim.cmd([[echon]])
611615
vim.api.nvim_win_close(0, true)
616+
vim.api.nvim_set_current_win(self.prev_win)
612617
cb(nil, true)
613618
end
614619

615620
function Calendar:read_date()
616621
self:_ensure_day()
617622
local current_date = self:get_selected_date() or Date.today()
618-
vim.ui.input({ prompt = 'Enter date: ', default = current_date:to_string() }, function(result)
623+
Input.open('Enter date: ', current_date:to_string()):next(function(result)
619624
if result then
620-
local date = Date.from_string(result)
625+
local date = current_date:set_from_string(result)
621626
if not date then
622627
date = current_date:adjust(result)
623628
end

Diff for: lua/orgmode/objects/date.lua

+13
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,19 @@ function OrgDate:set(opts)
198198
return OrgDate:new(data)
199199
end
200200

201+
---@param value string date in string format, example: 2025-03-07 Fri
202+
---@return OrgDate | nil
203+
function OrgDate:set_from_string(value)
204+
return OrgDate.from_string(value, {
205+
type = self.type,
206+
range = self.range,
207+
active = self.active,
208+
is_date_range_start = self.is_date_range_start,
209+
is_date_range_end = self.is_date_range_end,
210+
related_date = self.related_date,
211+
})
212+
end
213+
201214
---@param opts? OrgDateOpts
202215
function OrgDate:clone(opts)
203216
return self:set(opts or {})

0 commit comments

Comments
 (0)