| 
					
				 | 
			
			
				@@ -24687,29 +24687,34 @@ Move to the previous element at the same level, when possible." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 (defun org-drag-element-backward () 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   "Move backward element at point." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   (interactive) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  (if (org-with-limited-levels (org-at-heading-p)) (org-move-subtree-up) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    (let* ((elem (or (org-element-at-point) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		     (user-error "No element at point"))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	   (prev-elem 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	    (save-excursion 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	      (goto-char (org-element-property :begin elem)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	      (skip-chars-backward " \r\t\n") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	      (unless (bobp) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		(let* ((beg (org-element-property :begin elem)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		       (prev (org-element-at-point)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		       (up prev)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		  (while (and (setq up (org-element-property :parent up)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			      (<= (org-element-property :end up) beg)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		    (setq prev up)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		  prev))))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      ;; Error out if no previous element or previous element is 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      ;; a parent of the current one. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      (if (or (not prev-elem) (org-element-nested-p elem prev-elem)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	  (user-error "Cannot drag element backward") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	(let ((pos (point))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	  (org-element-swap-A-B prev-elem elem) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	  (goto-char (+ (org-element-property :begin prev-elem) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			(- pos (org-element-property :begin elem))))))))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  (let ((elem (or (org-element-at-point) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		  (user-error "No element at point")))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    (if (eq (org-element-type elem) 'headline) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	;; Preserve point when moving a whole tree, even if point was 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	;; on blank lines below the headline. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	(let ((offset (skip-chars-backward " \t\n"))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	  (unwind-protect (org-move-subtree-up) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	    (forward-char (- offset)))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      (let ((prev-elem 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	     (save-excursion 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	       (goto-char (org-element-property :begin elem)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	       (skip-chars-backward " \r\t\n") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	       (unless (bobp) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 (let* ((beg (org-element-property :begin elem)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			(prev (org-element-at-point)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			(up prev)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		   (while (and (setq up (org-element-property :parent up)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			       (<= (org-element-property :end up) beg)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		     (setq prev up)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		   prev))))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	;; Error out if no previous element or previous element is 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	;; a parent of the current one. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	(if (or (not prev-elem) (org-element-nested-p elem prev-elem)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	    (user-error "Cannot drag element backward") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	  (let ((pos (point))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	    (org-element-swap-A-B prev-elem elem) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	    (goto-char (+ (org-element-property :begin prev-elem) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			  (- pos (org-element-property :begin elem)))))))))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 (defun org-drag-element-forward () 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   "Move forward element at point." 
			 |