[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/org e822291aca: Merge branch 'bugfix'
From: |
ELPA Syncer |
Subject: |
[elpa] externals/org e822291aca: Merge branch 'bugfix' |
Date: |
Sun, 27 Feb 2022 23:57:40 -0500 (EST) |
branch: externals/org
commit e822291aca712d1b3ef6685d37afd7e4556aa04a
Merge: bb6830409d 33543d2aa8
Author: Kyle Meyer <kyle@kyleam.com>
Commit: Kyle Meyer <kyle@kyleam.com>
Merge branch 'bugfix'
---
lisp/ol.el | 2 +-
lisp/org.el | 10 ++---
testing/lisp/test-org.el | 113 ++++++++++++++++++++++++++++-------------------
3 files changed, 74 insertions(+), 51 deletions(-)
diff --git a/lisp/ol.el b/lisp/ol.el
index 722729e007..1b2bb9a9a2 100644
--- a/lisp/ol.el
+++ b/lisp/ol.el
@@ -183,7 +183,7 @@ link.
(defcustom org-link-descriptive t
"Non-nil means Org displays descriptive links.
-E.g. [[https://orgmode.org][Org website]] is be displayed as
+E.g. [[https://orgmode.org][Org website]] is displayed as
\"Org Website\", hiding the link itself and just displaying its
description. When set to nil, Org displays the full links
literally.
diff --git a/lisp/org.el b/lisp/org.el
index ef8d460e14..9455c15c82 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -17746,11 +17746,11 @@ this numeric value."
(interactive "r")
(let ((result ""))
(while (/= beg end)
- (when (get-char-property beg 'invisible)
- (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)))
- (setq beg next)))
+ (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)))
+ (setq beg next))))
(setq deactivate-mark t)
(kill-new result)
(message "Visible strings have been copied to the kill ring.")))
diff --git a/testing/lisp/test-org.el b/testing/lisp/test-org.el
index ce4d7b9dd3..6aecc3af86 100644
--- a/testing/lisp/test-org.el
+++ b/testing/lisp/test-org.el
@@ -8231,52 +8231,75 @@ CLOSED: %s
(org-show-set-visibility 'minimal)
(org-invisible-p2))))
-(defun test-org/copy-visible ()
+(ert-deftest test-org/copy-visible ()
"Test `org-copy-visible' specifications."
- (should
- (equal "Foo"
- (org-test-with-temp-text "Foo"
- (let ((kill-ring nil))
- (org-copy-visible (point-min) (point-max))
- (current-kill 0 t)))))
- ;; Skip invisible characters by text property.
- (should
- (equal "Foo"
- (org-test-with-temp-text #("F<hidden>oo" 1 7 (invisible t))
- (let ((kill-ring nil))
- (org-copy-visible (point-min) (point-max))
- (current-kill 0 t)))))
- ;; Skip invisible characters by overlay.
- (should
- (equal "Foo"
- (org-test-with-temp-text "F<hidden>oo"
- (let ((o (make-overlay 2 10)))
- (overlay-put o 'invisible t))
- (let ((kill-ring nil))
- (org-copy-visible (point-min) (point-max))
- (current-kill 0 t)))))
- ;; Handle invisible characters at the beginning and the end of the
- ;; buffer.
- (should
- (equal "Foo"
- (org-test-with-temp-text #("<hidden>Foo" 0 8 (invisible t))
- (let ((kill-ring nil))
- (org-copy-visible (point-min) (point-max))
- (current-kill 0 t)))))
- (should
- (equal "Foo"
- (org-test-with-temp-text #("Foo<hidden>" 3 11 (invisible t))
- (let ((kill-ring nil))
- (org-copy-visible (point-min) (point-max))
- (current-kill 0 t)))))
- ;; Handle multiple visible parts.
- (should
- (equal "abc"
- (org-test-with-temp-text
- #("aXbXc" 1 2 (invisible t) 3 4 (invisible t))
- (let ((kill-ring nil))
- (org-copy-visible (point-min) (point-max))
- (current-kill 0 t))))))
+ ;;`org-unfontify-region', which is wired up to
+ ;; `font-lock-unfontify-region-function', removes the invisible text
+ ;; property, among other things.
+ (cl-letf (((symbol-function 'org-unfontify-region) #'ignore))
+ (should
+ (equal "Foo"
+ (org-test-with-temp-text "Foo"
+ (let ((kill-ring nil))
+ (org-copy-visible (point-min) (point-max))
+ (current-kill 0 t)))))
+ ;; Skip invisible characters by text property.
+ (should
+ (equal "Foo"
+ (org-test-with-temp-text #("F<hidden>oo" 1 9 (invisible t))
+ (let ((kill-ring nil))
+ (org-copy-visible (point-min) (point-max))
+ (current-kill 0 t)))))
+ ;; Skip invisible characters by overlay.
+ (should
+ (equal "Foo"
+ (org-test-with-temp-text "F<hidden>oo"
+ (let ((o (make-overlay 2 10)))
+ (overlay-put o 'invisible t))
+ (let ((kill-ring nil))
+ (org-copy-visible (point-min) (point-max))
+ (current-kill 0 t)))))
+ ;; Handle invisible characters at the beginning and the end of the
+ ;; buffer.
+ (should
+ (equal "Foo"
+ (org-test-with-temp-text #("<hidden>Foo" 0 8 (invisible t))
+ (let ((kill-ring nil))
+ (org-copy-visible (point-min) (point-max))
+ (current-kill 0 t)))))
+ (should
+ (equal "Foo"
+ (org-test-with-temp-text #("Foo<hidden>" 3 11 (invisible t))
+ (let ((kill-ring nil))
+ (org-copy-visible (point-min) (point-max))
+ (current-kill 0 t)))))
+ ;; Handle multiple visible parts.
+ (should
+ (equal "abc"
+ (org-test-with-temp-text
+ #("aXbXc" 1 2 (invisible t) 3 4 (invisible t))
+ (let ((kill-ring nil))
+ (org-copy-visible (point-min) (point-max))
+ (current-kill 0 t)))))
+ ;; Handle adjacent invisible parts.
+ (should
+ (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)))))))
(ert-deftest test-org/set-visibility-according-to-property ()
"Test `org-set-visibility-according-to-property' specifications."