Major changes: 1. Property values can now deferred and computed next time when the value is requested. 2. Some properties are stored in an array instead of plist. The functions are inlined to turn the propery queries into direct `aref' and `aset' calls to the plist, when applicable. 3. Secondary strings are now considered of `anonymous' type, in backwards-compatible way. 4. New functions to map over and/or resolve deferred values of element properties. 5. Docstrings and code consistently use "node" for generic syntax tree elements, to not confuse the element/object terminology we use in the parser. * lisp/org-element-ast.el (org-element-deferred): New type user to store deferred values. (org-element--deferred-resolve-once): (org-element--deferred-resolve): (org-element--deferred-resolve-force): (org-element--deferred-resolve-list): Helper functions used to resolve the deferred values. (org-element--standard-properties): (org-element--standard-properties-idxs): (org-element--property-idx): (org-element--parray): (org-element--plist-property): Store most commonly used properties in vector for faster access. Implement inliner helpers to transform property keywords into array indices. (org-element-property-1): New function to retrieve property without resolving deferred value. (org-element--put-parray): (org-element-put-property): Refactor, using the new property vector when applicable. (org-element--property): New helper function. (org-element-property): Refactor, using the new property vector and deferred value resolution. Add new optional arguments DFLT and FORCE-UNDEFER. Define setters. (org-element-set-contents): Handle anonymous nodes. (org-element-set): (org-element-adopt): (org-element-extract): Rename from `org-element-set-elements', `org-element-adopt-elements', and `org-element-extract-elements' and keep backward-compatible alias. This is to reduce the confusion about "node" vs. "element" vs. "object". (org-element-create): Initialize property array correctly. (org-element-copy): Allow copying secondary strings. Add new optional argument KEEP-CONTENTS. (org-element-lineage): Clarify the limitation when cache is disabled. (org-element-type): New optional argument to identify anonymous nodes instead of returning nil for both anonymous nodes and everything not matching other element types. |
||
---|---|---|
doc | ||
etc | ||
lisp | ||
mk | ||
testing | ||
.dir-locals.el | ||
.gitignore | ||
.gitmodules | ||
CONTRIBUTE.org | ||
COPYING | ||
Makefile | ||
README.org |
This is a distribution of Org Mode, a major mode for keeping notes, authoring documents, computational notebooks, literate programming, maintaining to-do lists, planning projects, and more — in a fast and effective plain text system.
Check the Org Mode website for more.
Install Org
Org is part of GNU Emacs: you probably don't need to install it.
To install a more recent version, please do it from GNU ELPA by
running this command: M-x package-install RET org RET
Join the GNU Project
Org is part of GNU Emacs and GNU Emacs is part of the GNU Operating System, developed by the GNU Project.
If you are the author of an awesome program and want to join us in writing Free (libre) Software, please consider making it an official GNU program and become a GNU Maintainer. Instructions on how to do this are here http://www.gnu.org/help/evaluation.
Don't have a program to contribute? Look at all the other ways to help: https://www.gnu.org/help/help.html.
And to learn more about Free (libre) Software in general, please read and share this page: https://gnu.org/philosophy/free-sw.html
License
Org-mode is published under the GNU GPLv3 license or any later version, the same as GNU Emacs.
Org-mode is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
GNU Emacs is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with Org mode. If not, see https://www.gnu.org/licenses/.