emacs-elpa-diffs
[Top][All Lists]
Advanced

[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."



reply via email to

[Prev in Thread] Current Thread [Next in Thread]