Skip to content

Commit 91f5a9e

Browse files
feat(api): Add todo_ignore opts for tags and tags_todo views
1 parent 5f45d47 commit 91f5a9e

File tree

1 file changed

+23
-16
lines changed

1 file changed

+23
-16
lines changed

lua/orgmode/api/agenda.lua

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ local function get_date(date, name)
2020
error(('Invalid format for "%s" date in Org Agenda'):format(name))
2121
end
2222

23-
local function get_opts(options)
23+
local function get_shared_opts(options)
2424
options = options or {}
2525
local opts = {}
2626
if options.filters and options.filters ~= '' then
@@ -35,6 +35,14 @@ local function get_opts(options)
3535
return opts
3636
end
3737

38+
local function get_tags_opts(options)
39+
local opts = get_shared_opts(options)
40+
opts.match_query = options.match_query
41+
opts.todo_ignore_scheduled = options.org_agenda_todo_ignore_scheduled
42+
opts.todo_ignore_deadlines = options.org_agenda_todo_ignore_deadlines
43+
return opts
44+
end
45+
3846
---@class OrgApiAgendaOpts
3947
---@field filters? OrgApiAgendaFilter
4048
---@field header? string
@@ -51,7 +59,7 @@ end
5159
---@param options? OrgApiAgendaOptions
5260
function OrgAgenda.agenda(options)
5361
options = options or {}
54-
local opts = get_opts(options)
62+
local opts = get_shared_opts(options)
5563
opts.from = get_date(options.from, 'from')
5664
opts.span = options.span
5765
orgmode.agenda:agenda(opts)
@@ -62,32 +70,31 @@ end
6270
---@param options? OrgApiAgendaTodosOptions
6371
function OrgAgenda.todos(options)
6472
options = options or {}
65-
local opts = get_opts(options)
73+
local opts = get_shared_opts(options)
6674
orgmode.agenda:todos(opts)
6775
end
6876

69-
---@class OrgApiAgendaTagsOptions:OrgApiAgendaOpts
77+
---@class OrgApiAgendaTagsTodoOptions:OrgApiAgendaOpts
7078
---@field match_query? string Match query to find the todos
71-
---@field todo_only? boolean
79+
---@field org_agenda_todo_ignore_scheduled? OrgAgendaTodoIgnoreScheduledTypes
80+
---@field org_agenda_todo_ignore_deadlines? OrgAgendaTodoIgnoreDeadlinesTypes
7281

7382
---@param options? OrgApiAgendaTagsOptions
74-
function OrgAgenda.tags(options)
83+
function OrgAgenda.tags_todo(options)
7584
options = options or {}
76-
local opts = get_opts(options)
77-
opts.todo_only = options.todo_only
78-
opts.match_query = options.match_query
79-
orgmode.agenda:tags(opts)
85+
local opts = get_tags_opts(options)
86+
orgmode.agenda:tags_todo(opts)
8087
end
8188

82-
---@class OrgApiAgendaTagsTodoOptions:OrgApiAgendaOpts
83-
---@field match_query? string Match query to find the todos
89+
---@class OrgApiAgendaTagsOptions:OrgApiAgendaTagsTodoOptions
90+
---@field todo_only? boolean
8491

8592
---@param options? OrgApiAgendaTagsOptions
86-
function OrgAgenda.tags_todo(options)
93+
function OrgAgenda.tags(options)
8794
options = options or {}
88-
local opts = get_opts(options)
89-
opts.match_query = options.match_query
90-
orgmode.agenda:tags_todo(opts)
95+
local opts = get_tags_opts(options)
96+
opts.todo_only = options.todo_only
97+
orgmode.agenda:tags(opts)
9198
end
9299

93100
return OrgAgenda

0 commit comments

Comments
 (0)