Browse Source

Fix filling when point is at the very end of a paragraph

* lisp/org.el (org-fill-paragraph): Fix filling when point is at the
  very end of a paragraph.
* testing/lisp/test-org.el: Add test.
Nicolas Goaziou 12 years ago
parent
commit
fcca4ab8e4
2 changed files with 15 additions and 3 deletions
  1. 6 3
      lisp/org.el
  2. 9 0
      testing/lisp/test-org.el

+ 6 - 3
lisp/org.el

@@ -20894,14 +20894,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)

+ 9 - 0
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.