From 2324d745f12fe8e8d4f7864307eb55c46fc49504 Mon Sep 17 00:00:00 2001 From: "D. Williams" Date: Mon, 7 Sep 2020 14:13:12 +0200 Subject: [PATCH] org.el: let heading navigation check the entire heading for visibility * org.el (org-forward-heading-same-level): check complete heading instead of the first char TINYCHANGE --- lisp/org.el | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/lisp/org.el b/lisp/org.el index bc74cedc7..040cfad61 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -20512,6 +20512,16 @@ entry." ((looking-at-p re) (forward-line)) (t (throw 'exit t)))))))) +(defun org--line-visible-p () + "Return t if the current line is partially visible." + (let ((line-beg (line-beginning-position)) + (line-pos (1- (line-end-position))) + (is-invisible t)) + (while (and (< line-beg line-pos) is-invisible) + (setq is-invisible (org-invisible-p line-pos)) + (cl-decf line-pos)) + (not is-invisible))) + (defun org-forward-heading-same-level (arg &optional invisible-ok) "Move forward to the ARG'th subheading at same level as this one. Stop at the first and last subheadings of a superior heading. @@ -20533,8 +20543,7 @@ non-nil it will also look at invisible ones." (cond ((< l level) (setq count 0)) ((and (= l level) (or invisible-ok - (not (org-invisible-p - (line-beginning-position))))) + (org--line-visible-p))) (cl-decf count) (when (= l level) (setq result (point))))))) (goto-char result)) -- 2.26.2