diff --git a/lisp/org.el b/lisp/org.el index 4fcc2cd90..d656a5159 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -17522,7 +17522,7 @@ this numeric value." (interactive "r") (let ((result "")) (while (/= beg end) - (if (get-char-property beg 'invisible) + (if (invisible-p beg) (setq beg (next-single-char-property-change beg 'invisible nil end)) (let ((next (next-single-char-property-change beg 'invisible nil end))) (setq result (concat result (buffer-substring beg next))) diff --git a/testing/lisp/test-org.el b/testing/lisp/test-org.el index 6e6a1f852..d552474e2 100644 --- a/testing/lisp/test-org.el +++ b/testing/lisp/test-org.el @@ -8231,6 +8231,17 @@ CLOSED: %s (equal "ab" (org-test-with-temp-text #("aXXb" 1 2 (invisible t) 2 3 (invisible org-link)) + (let ((kill-ring nil)) + (org-copy-visible (point-min) (point-max)) + (current-kill 0 t))))) + ;; Copies text based on what's actually visible, as defined by + ;; `buffer-invisibility-spec'. + (should + (equal "aYb" + (org-test-with-temp-text + #("aXYb" + 1 2 (invisible t) + 2 3 (invisible org-test-copy-visible)) (let ((kill-ring nil)) (org-copy-visible (point-min) (point-max)) (current-kill 0 t)))))))