- Support dual-value affiliated keywords like
#+CAPTION[short]: long
- Fix handling of non-property content in drawers
- Fix handling of empty drawer properties
- Fix for parsing edge case
- Added
elementNameproperty toOrgElementand a few other node types - Added a
plistparser for e.g. lists of properties on src blocks, keyword lines, etc. - Added an extension on
OrgTreewith methods for searching for sections by ID, custom ID, title, etc.
- Minor bug fixes
- Make
ensureTrailingNewLinemethod available on allOrgElements
- Improve handling of custom TODO states when cycling section
- Improve parsing accuracy of paragraphs, timestamps
- Parse timestamp modifiers as
OrgTimestampModifierOrg*Timestamp.repeaterOrDelayis nowmodifiers
edit,editNodemethods are now available onOrgParentNode- Add new high-level structured editing features:
OrgTimestamp.bumpRepetitionOrgDrawer.setPropertyOrgTree.setPropertyOrgSection.addLogNoteOrgSection.cycleTodo
- Improve handling of table edge cases
- Fix parsing of table.el-style dividers
- Fix parsing of table cells containing
+ - Improve detection of numeric table cells
isOrg*Url/parseOrg*Urlfunctions are renamed from*Urlto*SearchOrgFileLink.parsenow recognizesid:links- Add
OrgFileLink.toString
- Add
OrgNode.toPlainTextfor stripping "inline" markup as much as possible
- Add coderef URL utilities
- Fix block parsing edge cases
- Update petitparser to 7.0.1
- Add common class for timestamps:
OrgTimestamp - Add
OrgTimestamp.isActiveto determine whether timestamp is "active" - Add getters for obtaining timestamps as
DateTime - Add
OrgTree.tagsWithInheritancefor computing tags with inheritance - Add
OrgTree.propertiesWithInheritancefor computing properties with inheritance
- Accept timestamps without day of the week
- Fix handling of single-character drawer property values
- Fix behavior of
OrgSrcBlock.fromChildren
- Add
OrgZipper.findWhereto allow editing a node by arbitrary predicate
- "Greater"
OrgBlocks andOrgDynamicBlocks can now contain "elements", not just rich inline markup
- Expose
orgIdgenerator for generatingOrgParentNodeIDs - Allow adding a checkbox to a non-checkbox list item in
OrgListItem.toggleCheckbox(see theaddargument) - Fixes to aid structured editing scenarios
- Expose
canGo*methods on OrgZipper, addcanGoLeft
- Improve AST for Org planning keywords (see #18)
- Block type is now exposed as
OrgBlock.type - Block content parsing now better matches Org Mode in Emacs
- Dynamic blocks are now parsed as
OrgDynamicBlock
OrgTree.attachDirnow returns a record indicating the type in addition to the value
- Fix detection of empty (disabled) TODO settings
- Keyword values are now parsed separately; see
keyandvalueonOrgMeta- Note that
OrgMeta.trailingis still present but is guaranteed to only be whitespace
- Note that
- Keyword values are rich content
- Support inline src blocks
- Support min/max-style timestamp repeaters
- Drawer property values can now contain nested rich content
- Drawer parsing accuracy is improved
- Footnote, horizontal rule parsing accuracy is improved
- Trailing blank lines are handled more consistently
- Verbatim and code markups no longer have nested rich content
- Links can now contain nested rich content (except for other links)
- Org "elements" now consistently inherit
OrgElement OrgFootnotecontent can now contain elements
- Markups (bold, italic, etc.) and sub/superscripts can now contain nested rich content
- List items containing blocks and drawers are parsed more accurately
- Drawer parsing accuracy is improved
- Parse
<<link targets>>and<<<radio targets>>> - Parse links to radio targets. This requires a second parsing pass; see the
interpretEmbeddedSettingsarg toOrgDocument.parse. - Improve Unicode handling
- Fix bugs in
OrgNode.contains
- Minor optimization
- Parse horizontal rules to
OrgHorizontalRule
- Fix parsing of diary timestamps
- Replace
OrgTimestampwith specialized classesOrgDiaryTimestamp,OrgSimpleTimestamp,OrgTimeRangeTimestamp,OrgDateRangeTimestamp
- Introduce
OrgSubSuperscriptsealed parent class
- Introduce
OrgStatisticsCookieparent class - Add
OrgStatisticsCookie.updatemethod - Fix identifying numerical table cells
- Parse statistics cookies
- Minor optimizations
- Upgrade dependencies
OrgParagraphs are now split on blank lines like in Emacs
- Minor optimization
- Support entities in subscripts and superscripts
- Support non-ASCII headline tags
- Fix lower bound of more dependency
- Restore compatibility with Flutter 3.24
- Parse subscripts and superscripts
- Allow
OrgMetanodes to be recognized inside text runs
- Parse Org Cite citations
- Add
orgTodoparser andOrgTodoStatesmodel OrgHeadline.keyword.donenow indicates whether a keyword is considered "in-progress" or "done"- Add
interpretEmbeddedSettingsarg toOrgDocument.parse. Passtrueto allow detecting TODO keywords from#+TODO:(and related) meta lines. OrgParserDefinitionandOrgGrammarDefinitionconstructors now take a list ofOrgTodoStatesrather than string lists
- Introduce
OrgSerializer: supply a subclass toOrgNode.toMarkupto customize how a tree is serialized. - Add
OrgSection.tags - Add optional
wherepredicate toOrgTree.findContainingTree
- Bug fixes
- Add parser, AST for the Org query language described in the Matching tags and properties section of the Org manual
- Make
OrgTree.getPropertiespublic - Reorganize code
- Adjust
OrgDecryptedContentto allow serializing to encrypted form- Supply an appropriate
DecryptedContentSerializer - See
OrgDecryptedContent.toCleartextMarkupto obtain the unencrypted form
- Supply an appropriate
- Parse PGP encrypted blocks, add representation for decrypted content
- Parse comment lines
- Fix some editing bugs
- Remove
OrgTree.level(OrgSection.levelremains)
- Support the
attachment:protocol inOrgFileLink ids,customIdsis now onOrgTreerather thanOrgSection- Added
OrgTree.dirsto get the:DIR:property values of the tree - Added
OrgTree.attachDirto get the attachment directory for the tree - The
OrgPathreturned byOrgNode.findnow includes the starting node as the first item - Added
OrgFileLink.copyWith
- Parse Emacs local variables
lists
to
OrgLocalVariablesAST node. The content, stripped of prefixes and suffixes, is available fromOrgLocalVariables.contentString.
- Add
OrgNode.findmethod for searching for a particular node and its "path" in the document - Change
OrgFootnoteReferenceproperties - Add
OrgFootnoteReference.isDefinitionto indicate whether reference is part of a footnote definition or merely a reference
- Full support for dumping AST back to Org markup:
OrgNode.toMarkup- Errors in round-tripping are now considered bugs
- Various changes in AST class properties to better support dumping to markup
- While the AST remains immutable, editing operations are now possible via
zipper; see
OrgTree.editandOrgTree.editNode, as well as example.dart - Simple editing convenience methods added:
OrgListItem.toggleCheckboxOrgHeadline.cycleTodo
- Fix support for inline markup in header titles
- Support "greater" blocks with arbitrary names such as
#+begin_foo - Add initial support for dumping AST back to Org markup:
OrgNode.toMarkup
- Update to petitparser 6.0.1
- Require Dart 3.0 or higher
- Fix parsing of section title text in some cases (#13)
- Update to petitparser 5.4.0
- Require petitparser 5.1.0 or higher
- Require Dart 2.18 or higher
- Add dartdoc comments to AST, grammar, and parser objects
- Fix incorrect parsing of star-only headlines (#5)
- Add utilities for recognizing, parsing
id:and#custom-idURLsisOrgIdUrl&parseOrgIdUrlisOrgCustomIdUrl&parseOrgCustomIdUrl
- Add
OrgDrawer.propertiesfor obtaining drawer properties - Add methods for getting the
IDandCUSTOM_IDproperties of a sectionOrgSection.idsOrgSection.customIds
- Add
OrgTree.visitSectionsfor efficiently walking just sections OrgFileLinknow correctly recognizes links with empty file parts likefile:::*Section name, which point to local sections; seeOrgFileLink.isLocal.
- Require petitparser 4.1.0 or higher
- Relicense under the MIT License
- "Plain" links of all built-in types are now recognized (not just http(s): and mailto:)
- Added parser, AST for file links; see
OrgFileLinkclass,orgFileLinkvariable - Removed the following classes; use noted replacements
OrgGrammar→OrgGrammarDefinition().build()OrgContentGrammar→OrgContentGrammarDefinition().build()OrgParser→orgvariableOrgContentParser→OrgContentParserDefinition().build()
- Change class hierarchy of AST classes
- All classes now inherit from
OrgNode - All
OrgNodes have achildrenproperty OrgTree.children(sections only) is nowOrgTree.sections
- All classes now inherit from
- Easily walk an AST with
OrgNode.visit
- Fix nullability errors in headline, src block
- Migrate to non-nullable by default
- Fix parsing of non-property drawer content
- Parse planning/clock lines as separate elements (#2)
- Fix inline style markup (
*foo*,+bar+, etc.) to span at most one line break
- Parse entities (
\frac12→ ½, etc.)
- More accurate tag handling in section headlines
- Fix section headline parsing error
- Parse inline and block LaTeX fragments (#1)
- Parse src blocks (
#+begin_src) asOrgSrcBlock; language of block is exposed asOrgSrcBlock.language
- Add example
- Added
OrgTable.columnIsNumericAPI for determining if a table column is primarily comprised of numbers
- Initial release