| 
					
				 | 
			
			
				@@ -290,6 +290,25 @@ This is in contrast to merely setting it to 0." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					(match-beginning 0) string))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   (replace-match newtext fixedcase literal string)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+(defmacro org-save-outline-visibility (use-markers &rest body) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  "Save and restore outline visibility around BODY. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+If USE-MARKERS is non-nil, use markers for the positions. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+This means that the buffer may change while running BODY, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+but it also means that the buffer should stay alive 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+during the operation, because otherwise all these markers will 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+point nowhere." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  (declare (indent 1)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  `(let ((data (org-outline-overlay-data ,use-markers))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     (unwind-protect 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 (progn 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	   ,@body 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	   (org-set-outline-overlay-data data)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       (when ,use-markers 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 (mapc (lambda (c) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 (and (markerp (car c)) (move-marker (car c) nil)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 (and (markerp (cdr c)) (move-marker (cdr c) nil))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	       data))))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 (defmacro org-with-limited-levels (&rest body) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   "Execute BODY with limited number of outline levels." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   `(let* ((outline-regexp (org-get-limited-outline-regexp))) 
			 |