186
186
187
187
--- @return OrgDate | nil
188
188
function Headline :get_closed_date ()
189
- return utils .find (self :get_all_dates (), function (date )
190
- return date :is_closed ()
191
- end )
189
+ local dates = self :get_plan_dates ()
190
+ return vim .tbl_get (dates , ' CLOSED' , 1 )
192
191
end
193
192
194
193
function Headline :get_priority_sort_value ()
@@ -361,13 +360,14 @@ function Headline:get_title_with_priority()
361
360
return title
362
361
end
363
362
364
- --- @return TSNode | nil , table<string , string>
363
+ memoize (' get_properties' )
364
+ --- @return table<string , string> , TSNode | nil
365
365
function Headline :get_properties ()
366
366
local section = self :node ():parent ()
367
367
local properties_node = section and section :field (' property_drawer' )[1 ]
368
368
369
369
if not properties_node then
370
- return nil , {}
370
+ return {}, nil
371
371
end
372
372
373
373
local properties = {}
@@ -383,7 +383,7 @@ function Headline:get_properties()
383
383
end
384
384
end
385
385
386
- return properties_node , properties
386
+ return properties , properties_node
387
387
end
388
388
389
389
--- @param name string
@@ -397,19 +397,19 @@ function Headline:set_property(name, value)
397
397
vim .fn .deletebufline (bufnr , property_node :start () + 1 )
398
398
end
399
399
self :refresh ()
400
- local properties_node , properties = self :get_properties ()
400
+ local properties , properties_node = self :get_properties ()
401
401
if vim .tbl_isempty (properties ) then
402
402
self :_set_node_lines (properties_node , {})
403
403
end
404
404
return self :refresh ()
405
405
end
406
406
407
- local properties = self :get_properties ()
407
+ local _ , properties = self :get_properties ()
408
408
if not properties then
409
409
local append_line = self :get_append_line ()
410
410
local property_drawer = self :_apply_indent ({ ' :PROPERTIES:' , ' :END:' }) --[[ @as string[] ]]
411
411
vim .api .nvim_buf_set_lines (bufnr , append_line , append_line , false , property_drawer )
412
- properties = self :refresh ():get_properties ()
412
+ _ , properties = self :refresh ():get_properties ()
413
413
end
414
414
415
415
local property = (' :%s: %s' ):format (name , value )
445
445
--- @param search_parents ? boolean
446
446
--- @return string | nil , TSNode | nil
447
447
function Headline :get_property (property_name , search_parents )
448
- local properties = self :get_properties ()
448
+ local _ , properties = self :get_properties ()
449
449
if properties then
450
450
for _ , node in ipairs (ts_utils .get_named_children (properties )) do
451
451
local name = node :field (' name' )[1 ]
598
598
599
599
--- @return number
600
600
function Headline :get_append_line ()
601
- local properties = self :get_properties ()
601
+ local _ , properties = self :get_properties ()
602
602
if properties then
603
603
local row = properties :end_ ()
604
604
return row
@@ -853,6 +853,7 @@ function Headline:get_drawer_append_line(name)
853
853
return name_row + 1
854
854
end
855
855
856
+ memoize (' get_range' )
856
857
--- @return OrgRange
857
858
function Headline :get_range ()
858
859
return Range .from_node (self :node ():parent ())
@@ -863,6 +864,7 @@ function Headline:get_lines()
863
864
return self .file :get_node_text_list (self :node ():parent ())
864
865
end
865
866
867
+ memoize (' get_headline_line_content' )
866
868
--- @return string
867
869
function Headline :get_headline_line_content ()
868
870
local line = self .file :get_node_text (self :node ()):gsub (' \n ' , ' ' )
0 commit comments