From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nicolas Goaziou Subject: Re: Bug: org-element-at-point on headline does not contain :parent property [9.3 (release_9.3 @ /home/yantar92/.emacs.d/straight/build/org/)] Date: Wed, 05 Feb 2020 15:46:00 +0100 Message-ID: <8736bp2itz.fsf@nicolasgoaziou.fr> References: <874ky0o471.fsf@yantar92-laptop.i-did-not-set--mail-host-address--so-tickle-me> <87wo91bixl.fsf@gnu.org> <877e11tl3a.fsf@localhost> <87blqd2nxj.fsf@nicolasgoaziou.fr> <87y2thrvnn.fsf@localhost> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([2001:470:142:3::10]:34664) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1izLwW-00034Y-Kn for emacs-orgmode@gnu.org; Wed, 05 Feb 2020 09:46:20 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1izLwV-0004Da-1C for emacs-orgmode@gnu.org; Wed, 05 Feb 2020 09:46:16 -0500 Received: from relay4-d.mail.gandi.net ([217.70.183.196]:38141) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1izLwU-0003yG-RX for emacs-orgmode@gnu.org; Wed, 05 Feb 2020 09:46:14 -0500 In-Reply-To: <87y2thrvnn.fsf@localhost> (Ihor Radchenko's message of "Wed, 05 Feb 2020 21:49:48 +0800") List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane-mx.org@gnu.org Sender: "Emacs-orgmode" To: Ihor Radchenko Cc: emacs-orgmode@gnu.org Ihor Radchenko writes: > Thanks for the clarification. I was not sure if it is intended. > I was mislead about this 2 times because of docstring, though it is > clear from the source code. I fixed the docstring. Thank you. >> Luckily, headlines are exactly where you do _not_ need Element library. >> `org-back-to-heading' and `org-up-heading-safe' will always be faster, >> and as accurate. I.e., the code operating on headlines is usually >> distinct from the code handling other elements. > > Well. `org-back-to-heading` + `org-up-heading-safe` take more than 15% of > my agenda generation time (I have really huge number of headings + > multiple custom skip functions). I was hoping to use cache for speed > up. Cache will not help you here. `org-up-heading-safe' and `org-back-to-heading' are faster than `org-element-at-point' + cache. Moreover, custom skip functions are a pain. They prevent any form of caching during agenda creation. IMO, Agenda (or its re-implementation) should do without them. >> You can parse the full document and get all the :parent properties >> filled. That's not the job for `org-element-at-point'. > > I once tried to do exactly this, but I did not manage to figure out how > to obtain element at point from full parse tree (from inside an agenda > skip function). Is it possible? It is possible but not implemented. >> Note that `org-element-cache' was disabled a while ago because it could >> introduce freezes. I think this is related to how this part handles >> `before-change-functions' and `after-change-functions'. Anyway, YMMV. > > I see... I don't know how useful the cache is except my idea about > using cache to speed up agenda. But I was stuck with the :parent > property issue and did not play much further since that time. I once started to implement Agenda-specific caching, but stopped as it would have entailed rewriting much of the Agenda code. It would have been a pain. Even switching "org-agenda.el" to lexical binding is difficult (and isn't done yet). Some re-implementation of Agenda (e.g., org-super-agenda + org-ql) may be better wrt caching.