From 633c775fdce2d251a322a51b680e989314cf87a3 Mon Sep 17 00:00:00 2001 From: Po Lu Date: Wed, 24 Apr 2024 11:45:31 +0800 Subject: [PATCH] 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) --- lisp/vc/log-edit.el | 10 +++++++++- test/lisp/vc/log-edit-tests.el | 18 ++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) 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 -- 2.39.5