Fix `org-show-children' error when called before first heading
* lisp/org.el (org-show-children): Fix `org-show-children' error when called before first heading.
This commit is contained in:
parent
82b496c0e9
commit
270aa438e2
61
lisp/org.el
61
lisp/org.el
|
@ -6004,36 +6004,37 @@ Prefix arg LEVEL is how many levels below the current level
|
|||
should be shown. Default is enough to cause the following
|
||||
heading to appear."
|
||||
(interactive "p")
|
||||
(save-excursion
|
||||
(org-back-to-heading t)
|
||||
(let* ((current-level (funcall outline-level))
|
||||
(max-level (org-get-valid-level
|
||||
current-level
|
||||
(if level (prefix-numeric-value level) 1)))
|
||||
(end (save-excursion (org-end-of-subtree t t)))
|
||||
(regexp-fmt "^\\*\\{%d,%s\\}\\(?: \\|$\\)")
|
||||
(past-first-child nil)
|
||||
;; Make sure to skip inlinetasks.
|
||||
(re (format regexp-fmt
|
||||
current-level
|
||||
(cond
|
||||
((not (featurep 'org-inlinetask)) "")
|
||||
(org-odd-levels-only (- (* 2 org-inlinetask-min-level)
|
||||
3))
|
||||
(t (1- org-inlinetask-min-level))))))
|
||||
;; Display parent heading.
|
||||
(org-flag-heading nil)
|
||||
(forward-line)
|
||||
;; Display children. First child may be deeper than expected
|
||||
;; MAX-LEVEL. Since we want to display it anyway, adjust
|
||||
;; MAX-LEVEL accordingly.
|
||||
(while (re-search-forward re end t)
|
||||
(unless past-first-child
|
||||
(setq re (format regexp-fmt
|
||||
current-level
|
||||
(max (funcall outline-level) max-level)))
|
||||
(setq past-first-child t))
|
||||
(org-flag-heading nil)))))
|
||||
(unless (org-before-first-heading-p)
|
||||
(save-excursion
|
||||
(org-with-limited-levels (org-back-to-heading t))
|
||||
(let* ((current-level (funcall outline-level))
|
||||
(max-level (org-get-valid-level
|
||||
current-level
|
||||
(if level (prefix-numeric-value level) 1)))
|
||||
(end (save-excursion (org-end-of-subtree t t)))
|
||||
(regexp-fmt "^\\*\\{%d,%s\\}\\(?: \\|$\\)")
|
||||
(past-first-child nil)
|
||||
;; Make sure to skip inlinetasks.
|
||||
(re (format regexp-fmt
|
||||
current-level
|
||||
(cond
|
||||
((not (featurep 'org-inlinetask)) "")
|
||||
(org-odd-levels-only (- (* 2 org-inlinetask-min-level)
|
||||
3))
|
||||
(t (1- org-inlinetask-min-level))))))
|
||||
;; Display parent heading.
|
||||
(org-flag-heading nil)
|
||||
(forward-line)
|
||||
;; Display children. First child may be deeper than expected
|
||||
;; MAX-LEVEL. Since we want to display it anyway, adjust
|
||||
;; MAX-LEVEL accordingly.
|
||||
(while (re-search-forward re end t)
|
||||
(unless past-first-child
|
||||
(setq re (format regexp-fmt
|
||||
current-level
|
||||
(max (funcall outline-level) max-level)))
|
||||
(setq past-first-child t))
|
||||
(org-flag-heading nil))))))
|
||||
|
||||
(defun org-show-subtree ()
|
||||
"Show everything after this heading at deeper levels."
|
||||
|
|
Loading…
Reference in New Issue