|
@@ -3105,7 +3105,9 @@ elements.
|
|
|
|
|
|
Elements are accumulated into ACC."
|
|
|
(save-excursion
|
|
|
- (goto-char beg)
|
|
|
+ (save-restriction
|
|
|
+ (narrow-to-region beg end)
|
|
|
+ (goto-char beg)
|
|
|
;; When parsing only headlines, skip any text before first one.
|
|
|
(when (and (eq granularity 'headline) (not (org-at-heading-p)))
|
|
|
(org-with-limited-levels (outline-next-heading)))
|
|
@@ -3117,13 +3119,10 @@ Elements are accumulated into ACC."
|
|
|
(if (eq special 'item)
|
|
|
(let ((element (org-element-item-parser structure)))
|
|
|
(goto-char (org-element-get-property :end element))
|
|
|
- (save-restriction
|
|
|
- (narrow-to-region
|
|
|
- (org-element-get-property :contents-begin element)
|
|
|
- (org-element-get-property :contents-end element))
|
|
|
- (org-element-parse-elements
|
|
|
- (point-min) (point-max) nil structure granularity visible-only
|
|
|
- (reverse element))))
|
|
|
+ (org-element-parse-elements
|
|
|
+ (org-element-get-property :contents-begin element)
|
|
|
+ (org-element-get-property :contents-end element)
|
|
|
+ nil structure granularity visible-only (reverse element)))
|
|
|
;; 2. When ITEM is nil, find current element's type and parse
|
|
|
;; it accordingly to its category.
|
|
|
(let ((element (org-element-current-element special structure)))
|
|
@@ -3133,12 +3132,10 @@ Elements are accumulated into ACC."
|
|
|
;; if GRANULARITY allows it.
|
|
|
((and (eq (car element) 'paragraph)
|
|
|
(or (not granularity) (eq granularity 'object)))
|
|
|
- (save-restriction
|
|
|
- (narrow-to-region
|
|
|
- (org-element-get-property :contents-begin element)
|
|
|
- (org-element-get-property :contents-end element))
|
|
|
- (org-element-parse-objects
|
|
|
- (point-min) (point-max) (reverse element) nil)))
|
|
|
+ (org-element-parse-objects
|
|
|
+ (org-element-get-property :contents-begin element)
|
|
|
+ (org-element-get-property :contents-end element)
|
|
|
+ (reverse element) nil))
|
|
|
;; Case 2. ELEMENT is recursive: parse it between
|
|
|
;; `contents-begin' and `contents-end'. Make sure
|
|
|
;; GRANULARITY allows the recursion, or ELEMENT is an
|
|
@@ -3151,22 +3148,18 @@ Elements are accumulated into ACC."
|
|
|
(eq (car element) 'headline))
|
|
|
(not (and visible-only
|
|
|
(org-element-get-property :hiddenp element))))
|
|
|
- (save-restriction
|
|
|
- (narrow-to-region
|
|
|
- (org-element-get-property :contents-begin element)
|
|
|
- (org-element-get-property :contents-end element))
|
|
|
- (org-element-parse-elements
|
|
|
- (point-min) (point-max)
|
|
|
- ;; At a plain list, switch to item mode. At an
|
|
|
- ;; headline, switch to section mode. Any other
|
|
|
- ;; element turns off special modes.
|
|
|
- (case (car element) (plain-list 'item) (headline 'section))
|
|
|
- (org-element-get-property :structure element)
|
|
|
- granularity visible-only (reverse element))))
|
|
|
+ (org-element-parse-elements
|
|
|
+ (org-element-get-property :contents-begin element)
|
|
|
+ (org-element-get-property :contents-end element)
|
|
|
+ ;; At a plain list, switch to item mode. At an
|
|
|
+ ;; headline, switch to section mode. Any other
|
|
|
+ ;; element turns off special modes.
|
|
|
+ (case (car element) (plain-list 'item) (headline 'section))
|
|
|
+ (org-element-get-property :structure element)
|
|
|
+ granularity visible-only (reverse element)))
|
|
|
;; Case 3. Else, just accumulate ELEMENT.
|
|
|
(t element))))
|
|
|
- acc)
|
|
|
- (org-skip-whitespace))
|
|
|
+ acc)))
|
|
|
;; Return result.
|
|
|
(nreverse acc)))
|
|
|
|