]> git.eshelyaron.com Git - emacs.git/commitdiff
Add new TODO entry.
authorDan Nicolaescu <dann@ics.uci.edu>
Mon, 4 Feb 2008 21:41:09 +0000 (21:41 +0000)
committerDan Nicolaescu <dann@ics.uci.edu>
Mon, 4 Feb 2008 21:41:09 +0000 (21:41 +0000)
(diff-create-changelog): New function.
(diff-mode-menu): Bind it.

lisp/ChangeLog
lisp/diff-mode.el

index 0dd1faa81df87b2a812674a02be84da6e1e9f4a0..bf6afb7aa35d51a7ccb88ccc3cfccf07b737a4ec 100644 (file)
@@ -1,3 +1,9 @@
+2008-02-04  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * diff-mode.el: Add new TODO entry.
+       (diff-create-changelog): New function.
+       (diff-mode-menu): Bind it.
+
 2008-02-04  Kenichi Handa  <handa@ni.aist.go.jp>
 
        * international/mule-diag.el (print-fontset-element): Handle the
index b8b6a009e2bf497cd6847f493120eaa2c0077605..ba6b28502053f68b20ec7a6858577c43149f10d4 100644 (file)
@@ -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)