From: Po Lu Date: Wed, 24 Apr 2024 03:45:31 +0000 (+0800) Subject: More effectually prevent defun list wrapping in C-x C-w X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=633c775fdce2d251a322a51b680e989314cf87a3;p=emacs.git More effectually prevent defun list wrapping in C-x C-w * lisp/vc/log-edit.el (log-edit-fill-entry): Match and replace with NBSPs the opening defun list also. * test/lisp/vc/log-edit-tests.el (log-edit-fill-entry-no-defun-list-wrapping): New test. (cherry picked from commit 145a77808ebd36fffb2e9c0376f821f09733d045) --- diff --git a/lisp/vc/log-edit.el b/lisp/vc/log-edit.el index 1f766eea455..d61a108b195 100644 --- a/lisp/vc/log-edit.el +++ b/lisp/vc/log-edit.el @@ -698,7 +698,15 @@ according to `fill-column'." (save-excursion (goto-char beg) (when (re-search-forward - "^[[:blank:]]*(.*\\([[:space:]]\\).*):" + ;; Also replace spaces within defun lists + ;; prefixed by a file name so that + ;; fill-region never attempts to break + ;; them, even if multiple items combine + ;; with symbols to exceed the fill column + ;; by the expressly permitted margin of 1 + ;; character. + (concat "^\\([[:blank:]]*\\|\\* .*[[:blank:]]" + "\\)(.*\\([[:space:]]\\).*):") end t) (replace-regexp-in-region "[[:space:]]" " " (setq space-beg diff --git a/test/lisp/vc/log-edit-tests.el b/test/lisp/vc/log-edit-tests.el index 8373156587d..db60d21f137 100644 --- a/test/lisp/vc/log-edit-tests.el +++ b/test/lisp/vc/log-edit-tests.el @@ -344,4 +344,22 @@ next line instead.") (let ((fill-column 20)) (log-edit-fill-entry)) (should (equal (buffer-string) wanted))))) +(ert-deftest log-edit-fill-entry-no-defun-list-wrapping () + ;; This test verifies that the opening defun list of an entry is never + ;; broken, even in the event its length in total exceeds the fill + ;; column. + (let (string wanted) + (setq string " +* src/androidfns.c (Fxw_display_color_p): +(Fx_display_grayscale_p): Report color and/or grayscale properly. +" + wanted " +* src/androidfns.c (Fxw_display_color_p, Fx_display_grayscale_p): +Report color and/or grayscale properly. +") + (with-temp-buffer + (insert string) + (let ((fill-column 64)) (log-edit-fill-entry)) + (should (equal (buffer-string) wanted))))) + ;;; log-edit-tests.el ends here