mirror of
https://git.savannah.gnu.org/git/emacs/org-mode.git
synced 2024-11-29 07:58:21 +00:00
org-element: Fix visible-only parsing
* lisp/org-element.el (org-element--parse-elements): Also parse visible headlines within an otherwise compacted headline. * testing/lisp/test-org-element.el: Add test.
This commit is contained in:
parent
bd27a005bb
commit
be794a2a30
@ -4199,6 +4199,10 @@ elements.
|
||||
Elements are accumulated into ACC."
|
||||
(save-excursion
|
||||
(goto-char beg)
|
||||
;; Visible only: skip invisible parts at the beginning of the
|
||||
;; element.
|
||||
(when (and visible-only (org-invisible-p2))
|
||||
(goto-char (min (1+ (org-find-visible)) end)))
|
||||
;; 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)))
|
||||
@ -4211,12 +4215,13 @@ Elements are accumulated into ACC."
|
||||
(type (org-element-type element))
|
||||
(cbeg (org-element-property :contents-begin element)))
|
||||
(goto-char (org-element-property :end element))
|
||||
;; Visible only: skip invisible parts between siblings.
|
||||
(when (and visible-only (org-invisible-p2))
|
||||
(goto-char (min (1+ (org-find-visible)) end)))
|
||||
;; Fill ELEMENT contents by side-effect.
|
||||
(cond
|
||||
;; If VISIBLE-ONLY is true and element is hidden or if it has
|
||||
;; no contents, don't modify it.
|
||||
((or (and visible-only (org-element-property :hiddenp element))
|
||||
(not cbeg)))
|
||||
;; If element has no contents, don't modify it.
|
||||
((not cbeg))
|
||||
;; Greater element: parse it between `contents-begin' and
|
||||
;; `contents-end'. Make sure GRANULARITY allows the
|
||||
;; recursion, or ELEMENT is a headline, in which case going
|
||||
|
@ -2612,6 +2612,20 @@ Paragraph \\alpha."
|
||||
(should (stringp (org-element-property :title (org-element-at-point))))))
|
||||
|
||||
|
||||
|
||||
;;; Test Visible Only Parsing
|
||||
|
||||
(ert-deftest test-org-element/parse-buffer-visible ()
|
||||
"Test `org-element-parse-buffer' with visible only argument."
|
||||
(should
|
||||
(equal '("H1" "H3" "H5")
|
||||
(org-test-with-temp-text
|
||||
"* H1\n** H2\n** H3 :visible:\n** H4\n** H5 :visible:"
|
||||
(org-occur ":visible:")
|
||||
(org-element-map (org-element-parse-buffer nil t) 'headline
|
||||
(lambda (hl) (org-element-property :raw-value hl)))))))
|
||||
|
||||
|
||||
|
||||
;;; Test `:parent' Property
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user