186186
187187--- @return OrgDate | nil
188188function 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 )
192191end
193192
194193function Headline :get_priority_sort_value ()
@@ -361,13 +360,14 @@ function Headline:get_title_with_priority()
361360 return title
362361end
363362
364- --- @return TSNode | nil , table<string , string>
363+ memoize (' get_properties' )
364+ --- @return table<string , string> , TSNode | nil
365365function Headline :get_properties ()
366366 local section = self :node ():parent ()
367367 local properties_node = section and section :field (' property_drawer' )[1 ]
368368
369369 if not properties_node then
370- return nil , {}
370+ return {}, nil
371371 end
372372
373373 local properties = {}
@@ -383,7 +383,7 @@ function Headline:get_properties()
383383 end
384384 end
385385
386- return properties_node , properties
386+ return properties , properties_node
387387end
388388
389389--- @param name string
@@ -397,19 +397,19 @@ function Headline:set_property(name, value)
397397 vim .fn .deletebufline (bufnr , property_node :start () + 1 )
398398 end
399399 self :refresh ()
400- local properties_node , properties = self :get_properties ()
400+ local properties , properties_node = self :get_properties ()
401401 if vim .tbl_isempty (properties ) then
402402 self :_set_node_lines (properties_node , {})
403403 end
404404 return self :refresh ()
405405 end
406406
407- local properties = self :get_properties ()
407+ local _ , properties = self :get_properties ()
408408 if not properties then
409409 local append_line = self :get_append_line ()
410410 local property_drawer = self :_apply_indent ({ ' :PROPERTIES:' , ' :END:' }) --[[ @as string[] ]]
411411 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 ()
413413 end
414414
415415 local property = (' :%s: %s' ):format (name , value )
445445--- @param search_parents ? boolean
446446--- @return string | nil , TSNode | nil
447447function Headline :get_property (property_name , search_parents )
448- local properties = self :get_properties ()
448+ local _ , properties = self :get_properties ()
449449 if properties then
450450 for _ , node in ipairs (ts_utils .get_named_children (properties )) do
451451 local name = node :field (' name' )[1 ]
598598
599599--- @return number
600600function Headline :get_append_line ()
601- local properties = self :get_properties ()
601+ local _ , properties = self :get_properties ()
602602 if properties then
603603 local row = properties :end_ ()
604604 return row
@@ -853,6 +853,7 @@ function Headline:get_drawer_append_line(name)
853853 return name_row + 1
854854end
855855
856+ memoize (' get_range' )
856857--- @return OrgRange
857858function Headline :get_range ()
858859 return Range .from_node (self :node ():parent ())
@@ -863,6 +864,7 @@ function Headline:get_lines()
863864 return self .file :get_node_text_list (self :node ():parent ())
864865end
865866
867+ memoize (' get_headline_line_content' )
866868--- @return string
867869function Headline :get_headline_line_content ()
868870 local line = self .file :get_node_text (self :node ()):gsub (' \n ' , ' ' )
0 commit comments