| 
					
				 | 
			
			
				@@ -2165,8 +2165,13 @@ e^{i\\pi}+1=0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   ;; Handle non-empty blank line at the end of buffer. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   (should 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    (org-test-with-temp-text "#+BEGIN_CENTER\nC\n#+END_CENTER\n  " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     (= (org-element-property :end (org-element-at-point)) (point-max))))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     (= (org-element-property :end (org-element-at-point)) (point-max)))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  (should 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   (org-test-with-temp-text "#+BEGIN_CENTER\n<point>C\n#+END_CENTER\n  " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     (= (org-element-property :end (org-element-at-point)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        (save-excursion 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          (search-forward "END") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          (line-beginning-position)))))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ;;;; Plain List 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2204,7 +2209,11 @@ Outside list" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   ;; beginning. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   (should 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    (org-test-with-temp-text "- list\n   \n   " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     (= (org-element-property :end (org-element-at-point)) (point-max))))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     (= (org-element-property :end (org-element-at-point)) (point-max)))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ;; Correctly compute list ending when list is before first headline. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  (dolist (org-element-use-cache '(t nil)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    (org-test-with-temp-text "- list\n* Headline\n" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      (should (= (org-element-property :end (org-element-at-point)) 8))))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ;;;; Planning 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -3732,6 +3741,14 @@ Text 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        (org-test-with-temp-text "- Para1\n- Para2\n\nPara3" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	 (progn (forward-line 2) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		(org-element-type (org-element-at-point)))))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ;; Special case: at the last blank line in a plain list at the end of 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ;; a headline, return the plain list, not the last item, and not the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ;; headline. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  (should 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   (eq 'plain-list 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       (org-test-with-temp-text "* Headline\n- Para1\n- Para2\n\nPara3\n* Another headline" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 (progn (forward-line 3) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		(org-element-type (org-element-at-point)))))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   ;; Special case: when a list ends at the end of buffer and there's 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   ;; no final newline, return last element in last item. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   (should 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -4063,20 +4080,166 @@ Text 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 (ert-deftest test-org-element/cache-bugs () 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   "Test basic expectations and common pitfalls for cache." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  :expected-result :failed 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   ;; Unindented second row of the table should not be re-parented by 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   ;; inserted item. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   (should 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    (eq 'table 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        (let ((org-element-use-cache t)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	 (org-test-with-temp-text 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	  "#+begin_center\nP0\n\n<point>\n\n  P1\n  | a | b |\n| c | d |\n#+end_center" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	  "#+begin_center 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+P0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<point> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  P1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  | a | b | 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+| c | d | 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#+end_center" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	  (save-excursion (search-forward "| c |") (org-element-at-point)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	  (insert "- item") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	  (search-forward "| c |") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	  (beginning-of-line) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	  (org-element-type (org-element-at-point)))))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  (should 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   (eq 'table 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       (let ((org-element-use-cache t)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 (org-test-with-temp-text 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	  " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+- item 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<point> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  | a | b | 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+| c | d | 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#+end_center" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	  (save-excursion (search-forward "| c |") (org-element-at-point)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          (delete-char 1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	  (search-forward "| c |") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	  (beginning-of-line) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	  (org-element-type (org-element-at-point)))))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  (should 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   (eq 'table-row 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       (let ((org-element-use-cache t)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 (org-test-with-temp-text 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	  " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+- item 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<point> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  | a | b | 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+| c | d | 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#+end_center" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	  (save-excursion (search-forward "| c |") (org-element-at-point)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          (insert "\n") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	  (search-forward "| c |") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	  (beginning-of-line) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	  (org-element-type (org-element-at-point))))))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+(ert-deftest test-org-element/cache-headline () 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  "Test basic expectations and common pitfalls for cached headings." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ;; Appending to final headline in a subtree. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  (org-test-with-temp-text 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+* Heading 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Aliquam erat volutpat. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+*** Subheading 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+** Another 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+** Final 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+:PROPERTIES: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+:ID: some 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<point>:END: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+* Heading 2 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+** End 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    (let ((org-element-use-cache t)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      (org-element-at-point) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      (save-excursion 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        (goto-char (point-max)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        (org-element-at-point)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      (insert ":CATEOGORY: cat\n") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      (search-backward "* Heading") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      (should 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       (eq (org-element-property :end (org-element-at-point)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+           (save-excursion 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+             (search-forward "* Heading 2") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+             (line-beginning-position)))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      (search-forward "* Heading 2") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      (beginning-of-line) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      (insert "\n\n") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      (search-backward "* Heading") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      (should 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       (eq (org-element-property :end (org-element-at-point)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+           (save-excursion 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+             (search-forward "* Heading 2") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+             (line-beginning-position)))))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ;; Appending at eob. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  (org-test-with-temp-text 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+* Heading 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+*** Sub-heading 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+** Another 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+*** 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+***** 2 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+** 3 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ Aenean in sem ac leo mollis blandit. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<point>" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    (let ((org-element-use-cache t)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      (org-element-at-point (point-max)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      (insert "\n\nTest\n") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      (search-backward "* Heading") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      (should 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       (eq (point-max) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+           (org-element-property :end (org-element-at-point)))))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ;; Breaking headline at eob. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  (org-test-with-temp-text 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+* Heading 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+*** Sub-heading 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<point>" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    (let ((org-element-use-cache t)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      (org-element-at-point (point-max)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      (insert "* heading 2") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      (beginning-of-line) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      (should 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       (eq (point-max) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+           (org-element-property :end (org-element-at-point)))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      (delete-char 1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      (search-backward "* Heading") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      (should 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       (eq (point-max) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+           (org-element-property :end (org-element-at-point)))))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ;; Inserting low-level headline in-between. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  (org-test-with-temp-text 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+* Heading 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+*** Sub-heading 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<point> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+*** Sub-heading 2 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+*** Sub-heading 3 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    (let ((org-element-use-cache t)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      (org-element-at-point (point-max)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      (insert "** heading 2") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      (search-forward "*** Sub-heading 2") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      (should 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       (equal (org-element-property :parent (org-element-at-point)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              (progn 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                (search-backward "** heading 2") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                (org-element-at-point)))))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ;; Test when `org-element--cache-for-removal' modifies common parent 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ;; (`org-data' in this case) around changed region. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  (org-test-with-temp-text 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      "blah 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+:DRAWER: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<point>test 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+:END: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+paragraph 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+* headline" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    (let ((org-element-use-cache t)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      (org-element-at-point (point-max)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      (delete-region (point) (point-max)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      (should (eq 'paragraph (org-element-type (org-element-at-point))))))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 (provide 'test-org-element) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ;;; test-org-element.el ends here 
			 |