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