From: Dan Nicolaescu Date: Mon, 4 Feb 2008 21:41:09 +0000 (+0000) Subject: Add new TODO entry. X-Git-Tag: emacs-pretest-23.0.90~8186 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=8a72c7f8c9ec04056ca218de3599ee45c0b09f76;p=emacs.git Add new TODO entry. (diff-create-changelog): New function. (diff-mode-menu): Bind it. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 0dd1faa81df..bf6afb7aa35 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,9 @@ +2008-02-04 Dan Nicolaescu + + * diff-mode.el: Add new TODO entry. + (diff-create-changelog): New function. + (diff-mode-menu): Bind it. + 2008-02-04 Kenichi Handa * international/mule-diag.el (print-fontset-element): Handle the diff --git a/lisp/diff-mode.el b/lisp/diff-mode.el index b8b6a009e2b..ba6b2850205 100644 --- a/lisp/diff-mode.el +++ b/lisp/diff-mode.el @@ -39,6 +39,8 @@ ;; Todo: +;; - Improve `diff-create-changelog', 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. ;; @@ -171,6 +173,8 @@ when editing big diffs)." ["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 + :help "Create ChangeLog entries for the changes in the diff buffer"] "-----" ["Reverse direction" diff-reverse-direction t] ["Context -> Unified" diff-context->unified t] @@ -1725,6 +1729,35 @@ For use in `add-log-current-defun-function'." props 'diff-refine-preproc)))))))) +(defun diff-create-changelog () + "Iterate through the current diff and create ChangeLog entries." + (interactive) + ;; XXX: Currently add-change-log-entry-other-window is only called + ;; once per hunk. Some hunks have multiple changes, it would be + ;; good to call it for each change. + (save-excursion + (goto-char (point-min)) + (let ((orig-buffer (current-buffer))) + (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 ".")) + (error nil))))) + ;; provide the package (provide 'diff-mode)