Skip to content

Commit 28f58b1

Browse files
committed
fix: allow to switch back to day selection
1 parent 09a9555 commit 28f58b1

File tree

1 file changed

+35
-18
lines changed

1 file changed

+35
-18
lines changed

lua/orgmode/objects/calendar.lua

+35-18
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,11 @@ function Calendar:render()
204204

205205
-- FIXME this line is currently not shown because of a bug.
206206
if self:has_time() then
207-
table.insert(content, ' [t] - enter time [T] - clear time')
207+
if self.select_state == SelState.DAY then
208+
table.insert(content, ' [t] - enter time [T] - clear time')
209+
else
210+
table.insert(content, ' [d] - enter time [T] - clear time')
211+
end
208212
else
209213
table.insert(content, ' [t] - enter time')
210214
end
@@ -281,6 +285,32 @@ function Calendar:render_time()
281285
return l_pad .. hour_str .. ':' .. min_str .. r_pad
282286
end
283287

288+
function Calendar:rerender_time()
289+
vim.api.nvim_set_option_value('modifiable', true, { buf = self.buf })
290+
vim.api.nvim_buf_set_lines(self.buf, 8, 9, true, { self:render_time() })
291+
if self:has_time() then
292+
local map_opts = { buffer = self.buf, silent = true, nowait = true }
293+
vim.keymap.set('n', 'T', function()
294+
self:clear_time()
295+
end, map_opts)
296+
vim.keymap.set('n', 'd', function()
297+
self:set_day()
298+
end, map_opts)
299+
if self.select_state == SelState.DAY then
300+
vim.api.nvim_buf_set_lines(self.buf, 13, 14, true, { ' [t] - select day [T] - clear time' })
301+
else
302+
vim.api.nvim_buf_set_lines(self.buf, 13, 14, true, { ' [d] - select day [T] - clear time' })
303+
end
304+
vim.api.nvim_buf_add_highlight(self.buf, namespace, 'Normal', 8, 0, -1)
305+
vim.api.nvim_buf_add_highlight(self.buf, namespace, 'Comment', 13, 0, -1)
306+
else
307+
vim.api.nvim_buf_set_lines(self.buf, 13, 14, true, { ' [t] - enter time' })
308+
vim.api.nvim_buf_add_highlight(self.buf, namespace, 'Comment', 8, 0, -1)
309+
vim.api.nvim_buf_add_highlight(self.buf, namespace, 'Comment', 13, 0, -1)
310+
end
311+
vim.api.nvim_set_option_value('modifiable', false, { buf = self.buf })
312+
end
313+
284314
function Calendar:has_time()
285315
return not self.date.date_only
286316
end
@@ -552,28 +582,15 @@ function Calendar:set_time()
552582
self:set_sel_hour()
553583
end
554584

555-
function Calendar:rerender_time()
556-
vim.api.nvim_set_option_value('modifiable', true, { buf = self.buf })
557-
vim.api.nvim_buf_set_lines(self.buf, 8, 9, true, { self:render_time() })
558-
if self:has_time() then
559-
vim.keymap.set('n', 'T', function()
560-
self:clear_time()
561-
end, { buffer = self.buf, silent = true, nowait = true })
562-
vim.api.nvim_buf_set_lines(self.buf, 13, 14, true, { ' [t] - enter time [T] - clear time' })
563-
vim.api.nvim_buf_add_highlight(self.buf, namespace, 'Normal', 8, 0, -1)
564-
vim.api.nvim_buf_add_highlight(self.buf, namespace, 'Comment', 13, 0, -1)
565-
else
566-
vim.api.nvim_buf_set_lines(self.buf, 13, 14, true, { ' [t] - enter time' })
567-
vim.api.nvim_buf_add_highlight(self.buf, namespace, 'Comment', 8, 0, -1)
568-
vim.api.nvim_buf_add_highlight(self.buf, namespace, 'Comment', 13, 0, -1)
569-
end
570-
vim.api.nvim_set_option_value('modifiable', false, { buf = self.buf })
585+
function Calendar:set_day()
586+
self:set_sel_day()
587+
self:rerender_time()
571588
end
572589

573590
function Calendar:clear_time()
574591
self.date = self.date:set({ hour = 0, min = 0, date_only = true })
575-
self:rerender_time()
576592
self:set_sel_day()
593+
self:rerender_time()
577594
end
578595

579596
function Calendar:set_sel_hour()

0 commit comments

Comments
 (0)