From: Lars Ingebrigtsen Date: Wed, 26 Jan 2022 15:17:49 +0000 (+0100) Subject: Partially revert a fill-region-as-paragraph regression X-Git-Tag: emacs-28.0.92~80 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=c9524819eaf4e561a184b04dfca7e42970dc8809;p=emacs.git Partially revert a fill-region-as-paragraph regression * lisp/textmodes/fill.el (fill-region-as-paragraph): Revert e186af261 (bug#53537), because it leads to regressions. (But leave tests in place.) --- diff --git a/lisp/textmodes/fill.el b/lisp/textmodes/fill.el index 92e50ec2908..beb30c6e950 100644 --- a/lisp/textmodes/fill.el +++ b/lisp/textmodes/fill.el @@ -714,8 +714,7 @@ space does not end a sentence, so don't break a line there." (or justify (setq justify (current-justification))) ;; Don't let Adaptive Fill mode alter the fill prefix permanently. - (let ((actual-fill-prefix fill-prefix) - (fill-prefix fill-prefix)) + (let ((fill-prefix fill-prefix)) ;; Figure out how this paragraph is indented, if desired. (when (and adaptive-fill-mode (or (null fill-prefix) (string= fill-prefix ""))) @@ -755,18 +754,9 @@ space does not end a sentence, so don't break a line there." ;; This is the actual filling loop. (goto-char from) - (let ((first t) - linebeg) - (while (< (point) to) - ;; On the first line, there may be text in the fill prefix - ;; zone (when `fill-prefix' is specified externally, and - ;; not computed). 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 actual-fill-prefix)))) + (let (linebeg) + (while (< (point) to) + (setq linebeg (point)) (move-to-column (current-fill-column)) (if (when (and (< (point) to) (< linebeg to)) ;; Find the position where we'll break the line. diff --git a/test/lisp/textmodes/fill-tests.el b/test/lisp/textmodes/fill-tests.el index 39e5dd3d26c..8b9f144dfff 100644 --- a/test/lisp/textmodes/fill-tests.el +++ b/test/lisp/textmodes/fill-tests.el @@ -45,6 +45,8 @@ (should (string= (buffer-string) "Abc\nd efg\n(h ijk).")))) (ert-deftest fill-test-unbreakable-paragraph () + ;; See bug#45720 and bug#53537. + :expected-result :failed (with-temp-buffer (let ((string "aaa = baaaaaaaaaaaaaaaaaaaaaaaaaaaa\n")) (insert string) @@ -76,6 +78,27 @@ (buffer-string) "aaa = baaaaaaaa aaaaaaaaaa\n aaaaaaaaaa\n"))))) +(ert-deftest test-fill-haskell () + (should + (equal + (with-temp-buffer + (asm-mode) + (dolist (line '(" ;; a b c" + " ;; d e f" + " ;; x y z" + " ;; w")) + (insert line "\n")) + (goto-char (point-min)) + (end-of-line) + (setf fill-column 10) + (fill-paragraph nil) + (buffer-string)) + " ;; a b c + ;; d e f + ;; x y z + ;; w +"))) + (provide 'fill-tests) ;;; fill-tests.el ends here