organic/org_mode_samples/element_container_priority/README.org

3.3 KiB

What are the possible element containers

Sections

Sections are divided by headlines.

  Zeroth section
  * First headline
  First section
  ** Child headline
  Child section
  * Second top-level headline
  Second top-level section

Greater blocks

  #+begin_center
  elements
  #+end_center

Drawers

  :drawername:
  elements
  :end:

Dynamic blocks

  * Headline
  #+BEGIN: clocktable :scope subtree :maxlevel 2
  #+CAPTION: Clock summary at [2023-04-16 Sun 16:13]
  | Headline     | Time   |
  |--------------+--------|
  | *Total time* | *0:00* |
  #+END:

Footnote definitions

  [fn:1] A footnote definition.

  [fn:2] A multi-line

  footnote definition.

Plain Lists

  1. foo
     1. bar
  2. baz

Which container takes priority

This test interleaves the opening and closing of each element container to see which element becomes parsed vs gets broken up. The row determines the first opening element and the column determines the second opening element.

Section Greater Block Drawer Dynamic Block Footnote Definition Plain List Paragraph
Section - Section Section Section Section Section Section
Greater Block Section First First First First First First
Drawer Section First First First First First First
Dynamic Block Section First First First First First First
Footnote Definition Section First First First - - -
Plain List Section Second Second Second - - -
Paragraph Section Second Second Second - - -

Possible solutions

Greater blocks, drawers, and dynamic blocks disable plain list exit matcher

Test Case 1

  1. foo
     #+begin_center
     2. bar


     baz
     #+end_center

Parse out headlines first

Then go through elements parsing them in-order

Should paragraph exit matcher apply to the element matcher in the exit matcher

No. But paragraph exit matcher needs to apply to the object matcher.

Maybe two groups of elements: alpha and beta

When entering an alpha element, ignore beta exit matchers above this in the context.