| 
					
				 | 
			
			
				@@ -22,79 +22,21 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ;;; Commentary: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ;; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;; Org syntax can be divided into three categories: "Greater 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;; elements", "Elements" and "Objects". 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+;; See <http://orgmode.org/worg/dev/org-syntax.html> for details about 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+;; Org syntax. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ;; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;; Elements are related to the structure of the document.  Indeed, all 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;; elements are a cover for the document: each position within belongs 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;; to at least one element. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;; An element always starts and ends at the beginning of a line.  With 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;; a few exceptions (`clock', `headline', `inlinetask', `item', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;; `planning', `property-drawer', `node-property', `section' and 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;; `table-row' types), it can also accept a fixed set of keywords as 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;; attributes.  Those are called "affiliated keywords" to distinguish 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;; them from other keywords, which are full-fledged elements.  Almost 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;; all affiliated keywords are referenced in 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;; `org-element-affiliated-keywords'; the others are export attributes 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;; and start with "ATTR_" prefix. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;; Element containing other elements (and only elements) are called 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;; greater elements.  Concerned types are: `center-block', `drawer', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;; `dynamic-block', `footnote-definition', `headline', `inlinetask', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;; `item', `plain-list', `property-drawer', `quote-block', `section' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;; and `special-block'. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;; Other element types are: `babel-call', `clock', `comment', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;; `comment-block', `diary-sexp', `example-block', `export-block', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;; `fixed-width', `horizontal-rule', `keyword', `latex-environment', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;; `node-property', `paragraph', `planning', `src-block', `table', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;; `table-row' and `verse-block'.  Among them, `paragraph' and 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;; `verse-block' types can contain Org objects and plain text. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;; Objects are related to document's contents.  Some of them are 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;; recursive.  Associated types are of the following: `bold', `code', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;; `entity', `export-snippet', `footnote-reference', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;; `inline-babel-call', `inline-src-block', `italic', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;; `latex-fragment', `line-break', `link', `macro', `radio-target', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;; `statistics-cookie', `strike-through', `subscript', `superscript', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;; `table-cell', `target', `timestamp', `underline' and `verbatim'. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;; Some elements also have special properties whose value can hold 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;; objects themselves (e.g. an item tag or a headline name).  Such 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;; values are called "secondary strings".  Any object belongs to 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;; either an element or a secondary string. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;; Notwithstanding affiliated keywords, each greater element, element 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;; and object has a fixed set of properties attached to it.  Among 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;; them, four are shared by all types: `:begin' and `:end', which 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;; refer to the beginning and ending buffer positions of the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;; considered element or object, `:post-blank', which holds the number 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;; of blank lines, or white spaces, at its end and `:parent' which 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;; refers to the element or object containing it.  Greater elements, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;; elements and objects containing objects will also have 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;; `:contents-begin' and `:contents-end' properties to delimit 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;; contents.  Eventually, All elements have a `:post-affiliated' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;; property referring to the buffer position after all affiliated 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;; keywords, if any, or to their beginning position otherwise. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;; At the lowest level, a `:parent' property is also attached to any 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;; string, as a text property. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;; Lisp-wise, an element or an object can be represented as a list. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+;; Lisp-wise, a syntax object can be represented as a list. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ;; It follows the pattern (TYPE PROPERTIES CONTENTS), where: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;;   TYPE is a symbol describing the Org element or object. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+;;   TYPE is a symbol describing the object. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ;;   PROPERTIES is the property list attached to it.  See docstring of 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;;              appropriate parsing function to get an exhaustive 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;;              list. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;;   CONTENTS is a list of elements, objects or raw strings contained 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;;            in the current element or object, when applicable. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+;;              appropriate parsing function to get an exhaustive list. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+;;   CONTENTS is a list of syntax objects or raw strings contained 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+;;            in the current object, when applicable. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ;; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;; An Org buffer is a nested list of such elements and objects, whose 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;; type is `org-data' and properties is nil. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+;; For the whole document, TYPE is `org-data' and PROPERTIES is nil. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ;; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;; The first part of this file defines Org syntax, while the second 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;; one provide accessors and setters functions. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+;; The first part of this file defines constants for the Org syntax, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+;; while the second one provide accessors and setters functions. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ;; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ;; The next part implements a parser and an interpreter for each 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ;; element and object type in Org syntax. 
			 |