Improve fill-region-as-paragraph when there's a fill prefix
* lisp/textmodes/fill.el (fill-region-as-paragraph): Try to improve how line breaks are set on unbreakable text with a fill prefix area that has spaces within (bug#45720).
This commit is contained in:
parent
918a5eae17
commit
e186af261a
2 changed files with 40 additions and 2 deletions
|
@ -743,9 +743,16 @@ space does not end a sentence, so don't break a line there."
|
||||||
|
|
||||||
;; This is the actual filling loop.
|
;; This is the actual filling loop.
|
||||||
(goto-char from)
|
(goto-char from)
|
||||||
(let (linebeg)
|
(let ((first t)
|
||||||
|
linebeg)
|
||||||
(while (< (point) to)
|
(while (< (point) to)
|
||||||
(setq linebeg (point))
|
;; On the first line, there may be text in the fill prefix
|
||||||
|
;; zone. In that case, don't consider that area when
|
||||||
|
;; trying to find a place to put a line break (bug#45720).
|
||||||
|
(if (not first)
|
||||||
|
(setq linebeg (point))
|
||||||
|
(setq first nil
|
||||||
|
linebeg (+ (point) (length fill-prefix))))
|
||||||
(move-to-column (current-fill-column))
|
(move-to-column (current-fill-column))
|
||||||
(if (when (< (point) to)
|
(if (when (< (point) to)
|
||||||
;; Find the position where we'll break the line.
|
;; Find the position where we'll break the line.
|
||||||
|
|
|
@ -44,6 +44,37 @@
|
||||||
(fill-paragraph)
|
(fill-paragraph)
|
||||||
(should (string= (buffer-string) "Abc\nd efg\n(h ijk)."))))
|
(should (string= (buffer-string) "Abc\nd efg\n(h ijk)."))))
|
||||||
|
|
||||||
|
(ert-deftest fill-test-unbreakable-paragraph ()
|
||||||
|
(with-temp-buffer
|
||||||
|
(let ((string "aaa = baaaaaaaaaaaaaaaaaaaaaaaaaaaa\n"))
|
||||||
|
(insert string)
|
||||||
|
(goto-char (point-min))
|
||||||
|
(search-forward "b")
|
||||||
|
(let* ((pos (point))
|
||||||
|
(beg (line-beginning-position))
|
||||||
|
(end (line-end-position))
|
||||||
|
(fill-prefix (make-string (- pos beg) ?\s))
|
||||||
|
;; `fill-column' is too small to accomodate the current line
|
||||||
|
(fill-column (- end beg 10)))
|
||||||
|
(fill-region-as-paragraph beg end nil nil pos))
|
||||||
|
(should (equal (buffer-string) string)))))
|
||||||
|
|
||||||
|
(ert-deftest fill-test-breakable-paragraph ()
|
||||||
|
(with-temp-buffer
|
||||||
|
(let ((string "aaa = baaaaaaaa aaaaaaaaaa aaaaaaaaaa\n"))
|
||||||
|
(insert string)
|
||||||
|
(goto-char (point-min))
|
||||||
|
(search-forward "b")
|
||||||
|
(let* ((pos (point))
|
||||||
|
(beg (line-beginning-position))
|
||||||
|
(end (line-end-position))
|
||||||
|
(fill-prefix (make-string (- pos beg) ?\s))
|
||||||
|
;; `fill-column' is too small to accomodate the current line
|
||||||
|
(fill-column (- end beg 10)))
|
||||||
|
(fill-region-as-paragraph beg end nil nil pos))
|
||||||
|
(should (equal
|
||||||
|
(buffer-string)
|
||||||
|
"aaa = baaaaaaaa aaaaaaaaaa\n aaaaaaaaaa\n")))))
|
||||||
|
|
||||||
(provide 'fill-tests)
|
(provide 'fill-tests)
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue