Kaynağa Gözat

org.el (org-fill-context-prefix): Fix auto-filling in `message-mode'.

* org.el (org-fill-context-prefix): Fix auto-filling in
`message-mode'.
Bastien Guerry 12 yıl önce
ebeveyn
işleme
bbc1dde930
1 değiştirilmiş dosya ile 41 ekleme ve 39 silme
  1. 41 39
      lisp/org.el

+ 41 - 39
lisp/org.el

@@ -20924,45 +20924,47 @@ hierarchy of headlines by UP levels before marking the subtree."
   "Compute a fill prefix for the line at point P.
 Return fill prefix, as a string, or nil if current line isn't
 meant to be filled."
-  (save-excursion
-    (goto-char p)
-    (beginning-of-line)
-    (let* ((element (org-element-at-point))
-	   (type (org-element-type element))
-	   (post-affiliated
-	    (progn
-	      (goto-char (org-element-property :begin element))
-	      (while (looking-at org-element--affiliated-re) (forward-line))
-	      (point))))
-      (unless (< p post-affiliated)
-	(case type
-	  (comment (looking-at "[ \t]*# ?") (match-string 0))
-	  (footnote-definition "")
-	  ((item plain-list)
-	   (make-string (org-list-item-body-column
-			 (org-element-property :begin element))
-			? ))
-	  (paragraph
-	   ;; Fill prefix is usually the same as the current line,
-	   ;; except if the paragraph is at the beginning of an item.
-	   (let ((parent (org-element-property :parent element)))
-	     (cond ((eq (org-element-type parent) 'item)
-		    (make-string (org-list-item-body-column
-				  (org-element-property :begin parent))
-				 ? ))
-		   ((looking-at "\\s-+") (match-string 0))
-		   (t  ""))))
-	  ((comment-block verse-block)
-	   ;; Only fill contents if P is within block boundaries.
-	   (let* ((cbeg (save-excursion (goto-char post-affiliated)
-					(forward-line)
-					(point)))
-		  (cend (save-excursion
-			  (goto-char (org-element-property :end element))
-			  (skip-chars-backward " \r\t\n")
-			  (line-beginning-position))))
-	     (when (and (>= p cbeg) (< p cend))
-	       (if (looking-at "\\s-+") (match-string 0) "")))))))))
+  (unless (and (derived-mode-p 'message-mode) (not (message-in-body-p)))
+    ;; FIXME: This is really the job of orgstruct++-mode
+    (save-excursion
+      (goto-char p)
+      (beginning-of-line)
+      (let* ((element (org-element-at-point))
+	     (type (org-element-type element))
+	     (post-affiliated
+	      (progn
+		(goto-char (org-element-property :begin element))
+		(while (looking-at org-element--affiliated-re) (forward-line))
+		(point))))
+	(unless (< p post-affiliated)
+	  (case type
+	    (comment (looking-at "[ \t]*# ?") (match-string 0))
+	    (footnote-definition "")
+	    ((item plain-list)
+	     (make-string (org-list-item-body-column
+			   (org-element-property :begin element))
+			  ? ))
+	    (paragraph
+	     ;; Fill prefix is usually the same as the current line,
+	     ;; except if the paragraph is at the beginning of an item.
+	     (let ((parent (org-element-property :parent element)))
+	       (cond ((eq (org-element-type parent) 'item)
+		      (make-string (org-list-item-body-column
+				    (org-element-property :begin parent))
+				   ? ))
+		     ((looking-at "\\s-+") (match-string 0))
+		     (t  ""))))
+	    ((comment-block verse-block)
+	     ;; Only fill contents if P is within block boundaries.
+	     (let* ((cbeg (save-excursion (goto-char post-affiliated)
+					  (forward-line)
+					  (point)))
+		    (cend (save-excursion
+			    (goto-char (org-element-property :end element))
+			    (skip-chars-backward " \r\t\n")
+			    (line-beginning-position))))
+	       (when (and (>= p cbeg) (< p cend))
+		 (if (looking-at "\\s-+") (match-string 0) ""))))))))))
 
 (declare-function message-in-body-p "message" ())
 (defvar org-element-paragraph-separate)  ; From org-element.el