#+TITLE: Org support #+DESCRIPTION: Exactly which org syntax is handled, which is not, and how the rest degrades. #+LEDE: A deliberate subset, with the boundary enforced by tests rather than by hope. orgo parses a defined slice of org. The boundary is not aspirational: every supported construct has a golden-file test, and every excluded one has a test asserting how it degrades. That is what stops the parser drifting toward all-of-org. * Supported ** Headings Nesting by star count, with TODO keywords, priority cookies and tags: #+BEGIN_SRC org ,* TODO [#A] Write the parser :work:rust: ,:PROPERTIES: ,:CUSTOM_ID: write-parser ,:END: #+END_SRC The keyword set is Emacs' default — =TODO= and =DONE= — matched on a word boundary, so a heading beginning "TODOs are great" is a plain title. Keyword and priority markup uses Emacs' own export classes. Every heading gets an =id=: its =:CUSTOM_ID:= if it has one, else its =:ID:=, else a slug of its text. ** Text and inline markup =*bold*=, =/italic/=, =_underline_=, =+strike+=, ~=verbatim=~ and =~code~=. Links in every org form — external, =[[*Heading]]=, =[[#custom-id]]=, =[[id:...]]=, =[[file:other.org]]= — plus bare URLs in running text. Timestamps, active and inactive, with times and ranges, render as =