Hello, John Kitchin <jkitc...@andrew.cmu.edu> writes:
> Wow. I would not have guessed either one of these! Thanks for sharing > them. Is that documented somewhere? [...] > For elements with a :contents-begin where does :post-affiliated come in? See <https://orgmode.org/worg/dev/org-element-api.html> > Once you get the idea, maybe, but this approach seems specific to > src-blocks (maybe any block) where there are delimiting lines. It > doesn't work on all elements (which to be fair was not claimed). I think > the OP was interested in something more consistent, which I am > sympathetic to. Some elements are very different from others. What would be the innards of an horizontal line or a planning line? > Some things aren't clear to me what should happen though, especially in > composite elements like tables and plain lists. E.g. To just select a > table without the affiliated lines, one can use :contents-begin and > :contents-end, once you get the table element (e.g. by walking up the > :parent chain if you are in a cell or row). > > In the absence of a single way, maybe there could be a small number of > ways to do this? How many cases do you think there are? > > - blocks (which have :value) > - composite elements (which have :contents-begin/end and/or non-nil :parents) > - regular elements (which have :contents-begin/end) There is no difference between regular elements and composite elements. Also, all blocks do not have a value (e.g., center blocks). > I can see this argument, but I am still unclear on which elements need a > value, and which don't. For example, src-blocks have a value, but a > paragraph doesn't, nor do items in a plain list, at least from > (org-element-context). In a parse tree, some elements are terminal (i.e., leaves), others are not. Non-terminal elements have :contents-begin and :contents-end properties. Others have :value, if it makes sense, or nothing (e.g., planning lines). Source blocks are terminal elements. Paragraphs, lists and items are not. Regards, -- Nicolas Goaziou