Jelajahi Sumber

Fix error when filling consecutive comments

* lisp/org.el (org-fill-paragraph): Do not mix consecutive comments
  when filling any of them.
* testing/lisp/test-org.el: Add test.

Thanks to Samuel Wales for reporting it.
Nicolas Goaziou 11 tahun lalu
induk
melakukan
c78fa35252
2 mengubah file dengan 22 tambahan dan 1 penghapusan
  1. 15 1
      lisp/org.el
  2. 7 0
      testing/lisp/test-org.el

+ 15 - 1
lisp/org.el

@@ -22287,7 +22287,21 @@ a footnote definition, try to fill the first paragraph within."
 		justify)))
 	   t)
 	  ;; Fill comments.
-	  (comment (fill-comment-paragraph justify))
+	  (comment
+	   (let ((begin (org-element-property :post-affiliated element))
+		 (end (save-excursion
+			(goto-char (org-element-property :end element))
+			(skip-chars-backward " \r\t\n")
+			(line-end-position))))
+	     ;; Do not fill comments when at a blank line or at
+	     ;; affiliated keywords.
+	     (when (and (>= (point) begin) (<= (point) end))
+	       (let ((fill-prefix (save-excursion
+				    (beginning-of-line)
+				    (looking-at "[ \t]*#")
+				    (concat (match-string 0) " "))))
+		 (save-excursion
+		   (fill-region-as-paragraph begin end justify))))))
 	  ;; Ignore every other element.
 	  (otherwise t))))))
 

+ 7 - 0
testing/lisp/test-org.el

@@ -199,6 +199,13 @@
 	    (let ((fill-column 20))
 	      (org-fill-paragraph)
 	      (buffer-string)))))
+  ;; Do not mix consecutive comments when filling one of them.
+  (should
+   (equal "# A B\n\n# C"
+	  (org-test-with-temp-text "# A\n# B\n\n# C"
+	    (let ((fill-column 20))
+	      (org-fill-paragraph)
+	      (buffer-string)))))
   ;; Do nothing at affiliated keywords.
   (org-test-with-temp-text "#+NAME: para\nSome\ntext."
     (let ((fill-column 20))