# HG changeset patch # User Stefan Monnier # Date 1202177650 0 # Node ID bc2ac468b9770819eee31d946fe7b1ee69891c5e # Parent 1c3159ee43abbf3c1db4f239d6b1f1e3a32324f9 (diff-add-change-log-entries-other-window): Rename from diff-create-changelog. Change users. Minor change to hopefully work with plain diffs. (diff-mode-map): Add binding for it. diff -r 1c3159ee43ab -r bc2ac468b977 lisp/ChangeLog --- a/lisp/ChangeLog Tue Feb 05 01:39:59 2008 +0000 +++ b/lisp/ChangeLog Tue Feb 05 02:14:10 2008 +0000 @@ -1,3 +1,10 @@ +2008-02-05 Stefan Monnier + + * diff-mode.el (diff-add-change-log-entries-other-window): + Rename from diff-create-changelog. Change users. + Minor change to hopefully work with plain diffs. + (diff-mode-map): Add binding for it. + 2008-02-04 Dan Nicolaescu * diff-mode.el: Add new TODO entry. diff -r 1c3159ee43ab -r bc2ac468b977 lisp/diff-mode.el --- a/lisp/diff-mode.el Tue Feb 05 01:39:59 2008 +0000 +++ b/lisp/diff-mode.el Tue Feb 05 02:14:10 2008 +0000 @@ -39,7 +39,8 @@ ;; Todo: -;; - Improve `diff-create-changelog', it is very simplistic now. +;; - Improve `diff-add-change-log-entries-other-window', +;; it is very simplistic now. ;; ;; - Add a `delete-after-apply' so C-c C-a automatically deletes hunks. ;; Also allow C-c C-a to delete already-applied hunks. @@ -151,6 +152,8 @@ `(("\e" . ,diff-mode-shared-map) ;; From compilation-minor-mode. ("\C-c\C-c" . diff-goto-source) + ;; By analogy with the global C-x 4 a binding. + ("\C-x4A" . diff-add-change-log-entries-other-window) ;; Misc operations. ("\C-c\C-a" . diff-apply-hunk) ("\C-c\C-e" . diff-ediff-patch) @@ -173,7 +176,7 @@ ["Apply hunk" diff-apply-hunk t] ["Test applying hunk" diff-test-hunk t] ["Apply diff with Ediff" diff-ediff-patch t] - ["Create Change Log" diff-create-changelog + ["Create Change Log entries" diff-add-change-log-entries-other-window :help "Create ChangeLog entries for the changes in the diff buffer"] "-----" ["Reverse direction" diff-reverse-direction t] @@ -1729,8 +1732,9 @@ props 'diff-refine-preproc)))))))) -(defun diff-create-changelog () - "Iterate through the current diff and create ChangeLog entries." +(defun diff-add-change-log-entries-other-window () + "Iterate through the current diff and create ChangeLog entries. +I.e. like `add-change-log-entry-other-window' but applied to all hunks." (interactive) ;; XXX: Currently add-change-log-entry-other-window is only called ;; once per hunk. Some hunks have multiple changes, it would be @@ -1741,21 +1745,18 @@ (condition-case nil ;; Call add-change-log-entry-other-window for each hunk in ;; the diff buffer. - (while t - (set-buffer orig-buffer) - (diff-hunk-next) - (beginning-of-line) - (while (not (looking-at "^ ")) - (forward-line 1)) - ;; Move to where the changes are, - ;; `add-change-log-entry-other-window' works better in - ;; that case. - (while (not (looking-at "^[!+-]")) - (forward-line 1)) - (add-change-log-entry-other-window) - ;; Insert a "." so that the entries created don't get - ;; merged. - (insert ".")) + (while (progn + (diff-hunk-next) + ;; Move to where the changes are, + ;; `add-change-log-entry-other-window' works better in + ;; that case. + (re-search-forward "\n[!+-<>]" nil t)) + (save-excursion + (add-change-log-entry-other-window) + ;; Insert a "." so that the entries created don't get + ;; merged. + (insert "."))) + ;; When there's no more hunks, diff-hunk-next signals an error. (error nil))))) ;; provide the package