diff options
| author | Dan Nicolaescu <dann@ics.uci.edu> | 2007-12-01 19:37:20 +0000 | 
|---|---|---|
| committer | Dan Nicolaescu <dann@ics.uci.edu> | 2007-12-01 19:37:20 +0000 | 
| commit | 93a142e14fc190bdae9467d8f99367f9df1bda91 (patch) | |
| tree | ce04891e94c46db55c45104a9ea08893b74270b3 | |
| parent | 30b7f3e6d09b303feae73ca2f1b507291652f166 (diff) | |
| download | emacs-93a142e14fc190bdae9467d8f99367f9df1bda91.tar.gz | |
* log-edit.el (log-edit-show-diff): New function.
(log-edit-mode-map, log-edit-menu): Bind it.
(log-edit-diff-function): New variable.
(log-edit): Change the 3rd param to be an alist and accept a
function that computes a diff for the files involved.
* vc.el (vc-log-edit): Add a diff function parameter to log-edit.
| -rw-r--r-- | etc/NEWS | 3 | ||||
| -rw-r--r-- | lisp/ChangeLog | 10 | ||||
| -rw-r--r-- | lisp/log-edit.el | 28 | ||||
| -rw-r--r-- | lisp/vc.el | 9 | 
4 files changed, 43 insertions, 7 deletions
@@ -277,6 +277,9 @@ as a single changeset.  *** In VC Annotate mode, you can type V to toggle the annotation visibility. +** log-edit now has a command bound to C-c C-d to show the diff for +the files involved. +  ** sgml-electric-tag-pair-mode lets you simultaneously edit matched tag pairs.  ** The appearance of superscript and subscript in TeX is more customizable. diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 6b976d8b8e4..2eaaf3cbe48 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,13 @@ +2007-12-01  Dan Nicolaescu  <dann@ics.uci.edu> + +	* log-edit.el (log-edit-show-diff): New function. +	(log-edit-mode-map, log-edit-menu): Bind it. +	(log-edit-diff-function): New variable. +	(log-edit): Change the 3rd param to be an alist and accept a +	function that computes a diff for the files involved. + +	* vc.el (vc-log-edit): Add a diff function parameter to log-edit. +  2007-12-01  Martin Rudalics  <rudalics@gmx.at>  	* play/blackbox.el (bb-up, bb-down): Revert 2007-10-21 change and diff --git a/lisp/log-edit.el b/lisp/log-edit.el index 5c2cf989f62..46f1544d9eb 100644 --- a/lisp/log-edit.el +++ b/lisp/log-edit.el @@ -57,6 +57,7 @@  (easy-mmode-defmap log-edit-mode-map    `(("\C-c\C-c" . log-edit-done)      ("\C-c\C-a" . log-edit-insert-changelog) +    ("\C-c\C-d" . log-edit-show-diff)      ("\C-c\C-f" . log-edit-show-files)      ("\M-n"	. log-edit-next-comment)      ("\M-p"	. log-edit-previous-comment) @@ -79,6 +80,8 @@      ["Insert ChangeLog" log-edit-insert-changelog]      ["Add to ChangeLog" log-edit-add-to-changelog]      "--" +    ["Show diff" log-edit-show-diff +     :help "Show the diff for the files to be committed."]      ["List files" log-edit-show-files       :help "Show the list of relevant files."]      "--" @@ -170,6 +173,7 @@ when this variable is set to nil.")  (defconst log-edit-files-buf "*log-edit-files*")  (defvar log-edit-initial-files nil)  (defvar log-edit-callback nil) +(defvar log-edit-diff-function nil)  (defvar log-edit-listfun nil)  (defvar log-edit-parent-buffer nil) @@ -301,7 +305,7 @@ automatically."       (2 font-lock-function-name-face))))  ;;;###autoload -(defun log-edit (callback &optional setup listfun buffer &rest ignore) +(defun log-edit (callback &optional setup params buffer &rest ignore)    "Setup a buffer to enter a log message.  \\<log-edit-mode-map>The buffer will be put in `log-edit-mode'.  If SETUP is non-nil, the buffer is then erased and `log-edit-hook' is run. @@ -309,8 +313,13 @@ Mark and point will be set around the entire contents of the  buffer so that it is easy to kill the contents of the buffer with \\[kill-region].  Once you're done editing the message, pressing \\[log-edit-done] will call  `log-edit-done' which will end up calling CALLBACK to do the actual commit. -LISTFUN if non-nil is a function of no arguments returning the list of files -  that are concerned by the current operation (using relative names). +PARAMS if non-nil is an alist. The keys for the alist can be: +`log-edit-listfun' and `log-edit-diff-function'. The associated +value for `log-edit-listfun' should be a function with not +arguments that returns the list of files that are concerned by +the current operation (using relative names). The associated +value for `log-edit-diff-function' should be a function with no +arguments that displays a diff of the files concerned by the current operation.  If BUFFER is non-nil `log-edit' will jump to that buffer, use it to edit the    log message and go back to the current buffer when done.  Otherwise, it    uses the current buffer." @@ -321,7 +330,13 @@ If BUFFER is non-nil `log-edit' will jump to that buffer, use it to edit the      (when setup (erase-buffer))      (log-edit-mode)      (set (make-local-variable 'log-edit-callback) callback) -    (set (make-local-variable 'log-edit-listfun) listfun) +    (if (listp params) +	(dolist (crt params) +	  (set (make-local-variable (car crt)) (cdr crt))) +      ;; For backward compatibility with log-edit up to version 22.2 +      ;; accept non-list PARAMS to mean `log-edit-list'. +      (set (make-local-variable 'log-edit-listfun) params)) +      (if buffer (set (make-local-variable 'log-edit-parent-buffer) parent))      (set (make-local-variable 'log-edit-initial-files) (log-edit-files))      (when setup (run-hooks 'log-edit-hook)) @@ -417,6 +432,11 @@ If you want to abort the commit, simply delete the buffer."        (indent-rigidly (point-min) (point-max)  		      (- log-edit-common-indent common))))) +(defun log-edit-show-diff () +  "Show the diff for the files to be committed." +  (interactive) +  (funcall log-edit-diff-function)) +  (defun log-edit-show-files ()    "Show the list of files to be committed."    (interactive) diff --git a/lisp/vc.el b/lisp/vc.el index 74e949a4a3c..622c9682fbc 100644 --- a/lisp/vc.el +++ b/lisp/vc.el @@ -83,8 +83,8 @@  ;; to be installed somewhere on Emacs's path for executables.  ;;  ;; If your site uses the ChangeLog convention supported by Emacs, the -;; function log-edit-comment-to-change-log could prove a useful checkin hook, -;; although you might prefer to use C-c C-a (i.e. log-edit-insert-changelog) +;; function `log-edit-comment-to-change-log' could prove a useful checkin hook, +;; although you might prefer to use C-c C-a (i.e. `log-edit-insert-changelog')  ;; from the commit buffer instead or to set `log-edit-setup-invert'.  ;;  ;; The vc code maintains some internal state in order to reduce expensive @@ -3577,7 +3577,10 @@ The annotations are relative to the current time, unless overridden by OFFSET."    "Set up `log-edit' for use with VC on FILE."    (setq default-directory  	(with-current-buffer vc-parent-buffer default-directory)) -  (log-edit 'vc-finish-logentry nil `(lambda () ',fileset)) +  (log-edit 'vc-finish-logentry +	    nil +	    `((log-edit-listfun . (lambda () ',fileset)) +	      (log-edit-diff-function . (lambda () (vc-diff nil)))))    (set (make-local-variable 'vc-log-fileset) fileset)    (make-local-variable 'vc-log-revision)    (set-buffer-modified-p nil)  | 
