diff --git a/lisp/org.el b/lisp/org.el index 331365a9c..5be295d72 100644 --- a/lisp/org.el +++ b/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)))))) diff --git a/testing/lisp/test-org.el b/testing/lisp/test-org.el index 259dc04c8..b7a600952 100644 --- a/testing/lisp/test-org.el +++ b/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))