Commit 93a142e1 authored by Dan Nicolaescu's avatar Dan Nicolaescu
Browse files

* 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.
parent 30b7f3e6
...@@ -277,6 +277,9 @@ as a single changeset. ...@@ -277,6 +277,9 @@ as a single changeset.
*** In VC Annotate mode, you can type V to toggle the annotation visibility. *** 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. ** sgml-electric-tag-pair-mode lets you simultaneously edit matched tag pairs.
** The appearance of superscript and subscript in TeX is more customizable. ** The appearance of superscript and subscript in TeX is more customizable.
......
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> 2007-12-01 Martin Rudalics <rudalics@gmx.at>
* play/blackbox.el (bb-up, bb-down): Revert 2007-10-21 change and * play/blackbox.el (bb-up, bb-down): Revert 2007-10-21 change and
......
...@@ -57,6 +57,7 @@ ...@@ -57,6 +57,7 @@
(easy-mmode-defmap log-edit-mode-map (easy-mmode-defmap log-edit-mode-map
`(("\C-c\C-c" . log-edit-done) `(("\C-c\C-c" . log-edit-done)
("\C-c\C-a" . log-edit-insert-changelog) ("\C-c\C-a" . log-edit-insert-changelog)
("\C-c\C-d" . log-edit-show-diff)
("\C-c\C-f" . log-edit-show-files) ("\C-c\C-f" . log-edit-show-files)
("\M-n" . log-edit-next-comment) ("\M-n" . log-edit-next-comment)
("\M-p" . log-edit-previous-comment) ("\M-p" . log-edit-previous-comment)
...@@ -79,6 +80,8 @@ ...@@ -79,6 +80,8 @@
["Insert ChangeLog" log-edit-insert-changelog] ["Insert ChangeLog" log-edit-insert-changelog]
["Add to ChangeLog" log-edit-add-to-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 ["List files" log-edit-show-files
:help "Show the list of relevant files."] :help "Show the list of relevant files."]
"--" "--"
...@@ -170,6 +173,7 @@ when this variable is set to nil.") ...@@ -170,6 +173,7 @@ when this variable is set to nil.")
(defconst log-edit-files-buf "*log-edit-files*") (defconst log-edit-files-buf "*log-edit-files*")
(defvar log-edit-initial-files nil) (defvar log-edit-initial-files nil)
(defvar log-edit-callback nil) (defvar log-edit-callback nil)
(defvar log-edit-diff-function nil)
(defvar log-edit-listfun nil) (defvar log-edit-listfun nil)
(defvar log-edit-parent-buffer nil) (defvar log-edit-parent-buffer nil)
...@@ -301,7 +305,7 @@ automatically." ...@@ -301,7 +305,7 @@ automatically."
(2 font-lock-function-name-face)))) (2 font-lock-function-name-face))))
;;;###autoload ;;;###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. "Setup a buffer to enter a log message.
\\<log-edit-mode-map>The buffer will be put in `log-edit-mode'. \\<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. 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 ...@@ -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]. 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 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. `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 PARAMS if non-nil is an alist. The keys for the alist can be:
that are concerned by the current operation (using relative names). `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 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 log message and go back to the current buffer when done. Otherwise, it
uses the current buffer." 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 ...@@ -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)) (when setup (erase-buffer))
(log-edit-mode) (log-edit-mode)
(set (make-local-variable 'log-edit-callback) callback) (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)) (if buffer (set (make-local-variable 'log-edit-parent-buffer) parent))
(set (make-local-variable 'log-edit-initial-files) (log-edit-files)) (set (make-local-variable 'log-edit-initial-files) (log-edit-files))
(when setup (run-hooks 'log-edit-hook)) (when setup (run-hooks 'log-edit-hook))
...@@ -417,6 +432,11 @@ If you want to abort the commit, simply delete the buffer." ...@@ -417,6 +432,11 @@ If you want to abort the commit, simply delete the buffer."
(indent-rigidly (point-min) (point-max) (indent-rigidly (point-min) (point-max)
(- log-edit-common-indent common))))) (- 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 () (defun log-edit-show-files ()
"Show the list of files to be committed." "Show the list of files to be committed."
(interactive) (interactive)
......
...@@ -83,8 +83,8 @@ ...@@ -83,8 +83,8 @@
;; to be installed somewhere on Emacs's path for executables. ;; to be installed somewhere on Emacs's path for executables.
;; ;;
;; If your site uses the ChangeLog convention supported by Emacs, the ;; If your site uses the ChangeLog convention supported by Emacs, the
;; function log-edit-comment-to-change-log could prove a useful checkin hook, ;; 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) ;; 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'. ;; from the commit buffer instead or to set `log-edit-setup-invert'.
;; ;;
;; The vc code maintains some internal state in order to reduce expensive ;; 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." ...@@ -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." "Set up `log-edit' for use with VC on FILE."
(setq default-directory (setq default-directory
(with-current-buffer vc-parent-buffer 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) (set (make-local-variable 'vc-log-fileset) fileset)
(make-local-variable 'vc-log-revision) (make-local-variable 'vc-log-revision)
(set-buffer-modified-p nil) (set-buffer-modified-p nil)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment