From: Philip Kaludercic Date: Tue, 6 Sep 2022 20:06:29 +0000 (+0200) Subject: Add new user option 'diff-add-log-use-relative-names' X-Git-Tag: emacs-29.0.90~1856^2~670 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=740a1a3d0ee7cd754b4049f0d65cd756f10b48f6;p=emacs.git Add new user option 'diff-add-log-use-relative-names' * .dir-locals.el: Set new option to t * etc/NEWS: Mention new option. * lisp/vc/diff-mode.el (diff-add-log-use-relative-names): Add new option. (diff-add-log-current-defuns): Use new option. * doc/emacs/maintaining.texi (Log Buffer): Mention new option. --- diff --git a/.dir-locals.el b/.dir-locals.el index 1c90ddcf567..9882a19f855 100644 --- a/.dir-locals.el +++ b/.dir-locals.el @@ -5,7 +5,8 @@ (sentence-end-double-space . t) (fill-column . 70) (emacs-lisp-docstring-fill-column . 65) - (bug-reference-url-format . "https://debbugs.gnu.org/%s"))) + (bug-reference-url-format . "https://debbugs.gnu.org/%s") + (diff-add-log-use-relative-names . t))) (c-mode . ((c-file-style . "GNU") (c-noise-macro-names . ("INLINE" "ATTRIBUTE_NO_SANITIZE_UNDEFINED" "UNINIT" "CALLBACK" "ALIGN_STACK")) (electric-quote-comment . nil) diff --git a/doc/emacs/maintaining.texi b/doc/emacs/maintaining.texi index 343cc83ce5d..9f81313844e 100644 --- a/doc/emacs/maintaining.texi +++ b/doc/emacs/maintaining.texi @@ -690,11 +690,15 @@ started editing (@pxref{Old Revisions}), type @kbd{C-c C-d} @kindex C-c C-w @r{(Log Edit mode)} @findex log-edit-generate-changelog-from-diff +@vindex diff-add-log-use-relative-names To help generate ChangeLog entries, type @kbd{C-c C-w} (@code{log-edit-generate-changelog-from-diff}), to generate skeleton ChangeLog entries, listing all changed file and function names based on the diff of the VC fileset. Consecutive entries left empty will be -combined by @kbd{C-q} (@code{fill-paragraph}). +combined by @kbd{C-q} (@code{fill-paragraph}). By default the +skeleton will just include the file name, without any leading +directories. If you wish to prepend the leading directories up to the +VC root, customize @code{diff-add-log-use-relative-names}. @kindex C-c C-a @r{(Log Edit mode)} @findex log-edit-insert-changelog diff --git a/etc/NEWS b/etc/NEWS index b61b88d6fbe..76c66a8e392 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -1340,6 +1340,11 @@ Sets the value of the buffer-local variable 'whitespace-style' in 'diff-mode' buffers. By default, this variable is '(face trailing)', which preserves behavior from previous Emacs versions. ++++ +*** New user option 'diff-add-log-use-relative-names'. +If non-nil insert file names in ChangeLog skeletons relative to the +VC root directory. + ** Ispell --- diff --git a/lisp/vc/diff-mode.el b/lisp/vc/diff-mode.el index a01943437c1..1d2fbca0e53 100644 --- a/lisp/vc/diff-mode.el +++ b/lisp/vc/diff-mode.el @@ -2336,10 +2336,21 @@ Call FUN with two args (BEG and END) for each hunk." (let ((inhibit-read-only t)) (undo arg))) +(defcustom diff-add-log-use-relative-names nil + "Use relative file names when generating ChangeLog skeletons. +The files will be relative to the root directory of the VC +repository. This option affects the behaviour of +`diff-add-log-current-defuns'." + :type 'boolean + :safe #'booleanp + :version "29.1") + (defun diff-add-log-current-defuns () "Return an alist of defun names for the current diff. The elements of the alist are of the form (FILE . (DEFUN...)), -where DEFUN... is a list of function names found in FILE." +where DEFUN... is a list of function names found in FILE. If +`diff-add-log-use-relative-names' is non-nil, file names in the alist +are relative to the root directory of the VC repository." (save-excursion (goto-char (point-min)) (let* ((defuns nil) @@ -2373,7 +2384,12 @@ where DEFUN... is a list of function names found in FILE." ;; hunks (e.g., "diff --git ..." etc). (re-search-forward diff-hunk-header-re nil t) (setq hunk-end (save-excursion (diff-end-of-hunk))) - (pcase-let* ((filename (substring-no-properties (diff-find-file-name))) + (pcase-let* ((filename (substring-no-properties + (if diff-add-log-use-relative-names + (file-relative-name + (diff-find-file-name) + (vc-root-dir)) + (diff-find-file-name)))) (=lines 0) (+lines 0) (-lines 0)