diff --git a/lisp/org.el b/lisp/org.el index 44ab01844..a34f76a3c 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -20896,14 +20896,17 @@ width for filling." ;; Elements that may contain `line-break' type objects. ((paragraph verse-block) (let ((beg (org-element-property :contents-begin element)) - (end (org-element-property :contents-end element))) + (end (org-element-property :contents-end element)) + (type (org-element-type element))) ;; Do nothing if point is at an affiliated keyword or at ;; verse block markers. - (if (or (< (point) beg) (>= (point) end)) t + (if (or (< (point) beg) + (and (eq type 'verse-block) (>= (point) end))) + t ;; At a verse block, first narrow to current "paragraph" ;; and set current element to that paragraph. (save-restriction - (when (eq (org-element-type element) 'verse-block) + (when (eq type 'verse-block) (narrow-to-region beg end) (save-excursion (end-of-line) diff --git a/testing/lisp/test-org.el b/testing/lisp/test-org.el index 5f08adf7e..974749172 100644 --- a/testing/lisp/test-org.el +++ b/testing/lisp/test-org.el @@ -143,6 +143,15 @@ http://article.gmane.org/gmane.emacs.orgmode/21459/" (let ((fill-column 20)) (org-fill-paragraph) (should (equal (buffer-string) "some \\\\\nlong text")))) + ;; Special case: fill correctly a paragraph when point is at its + ;; very end. + (should + (equal "A B" + (org-test-with-temp-text "A\nB" + (let ((fill-column 20)) + (goto-char (point-max)) + (org-fill-paragraph) + (buffer-string))))) ;; At a verse block, fill paragraph at point, also preserving line ;; breaks. Though, do nothing when point is at the block ;; boundaries.