1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-15 18:40:39 -08:00

* log-view.el (log-view-diff-changeset): New function.

(log-view-mode-map, log-view-mode-menu): Bind it.
(log-view-per-file-logs, log-view-vc-fileset)
(log-view-vc-backend): New variables.
(log-view-find-revision, log-view-modify-change-comment)
(log-view-annotate-version): Throw an error if the log is for more
than one file and we can't find the current file.  Get the current
file from log-view-vc-fileset if necessary.
(log-view-diff): Get the current file from log-view-vc-fileset if
necessary.

* vc.el (vc-print-log): Set log-view-vc-fileset and log-view-vc-backend.

* vc-hg.el (vc-hg-log-view-mode): Call the log method only once.
(vc-hg-log-view-mode): Declare for compiler.
(vc-hg-log-view-mode): Set log-view-per-file-logs and
log-view-file-re.
(vc-hg-diff): If no file is passed, use default-directory for cwd.

* vc-bzr.el (vc-bzr-log-view-mode): Set log-view-per-file-logs.

* vc-svn.el (vc-svn-log-view-mode): New derived mode.
This commit is contained in:
Dan Nicolaescu 2008-06-15 14:58:24 +00:00
parent 6f77e7d72e
commit 6653c6b769
7 changed files with 105 additions and 19 deletions

View file

@ -212,23 +212,19 @@
;; If the buffer exists from a previous invocation it might be
;; read-only.
(let ((inhibit-read-only t))
;; We need to loop and call "hg log" on each file separately.
;; "hg log" with multiple file arguments mashes all the logs
;; together. Ironically enough, this puts us back near CVS
;; which can't generate proper fileset logs either.
(dolist (file files)
(with-current-buffer
buffer
(insert "Working file: " file "\n")) ;; Like RCS/CVS.
(vc-hg-command buffer 0 file "log"))))
(with-current-buffer
buffer
(vc-hg-command buffer 0 files "log"))))
(defvar log-view-message-re)
(defvar log-view-file-re)
(defvar log-view-font-lock-keywords)
(defvar log-view-per-file-logs)
(define-derived-mode vc-hg-log-view-mode log-view-mode "Hg-Log-View"
(require 'add-log) ;; we need the add-log faces
(set (make-local-variable 'log-view-file-re) "^Working file:[ \t]+\\(.+\\)")
(set (make-local-variable 'log-view-file-re) "\\`a\\`")
(set (make-local-variable 'log-view-per-file-logs) nil)
(set (make-local-variable 'log-view-message-re)
"^changeset:[ \t]*\\([0-9]+\\):\\(.+\\)")
(set (make-local-variable 'log-view-font-lock-keywords)
@ -251,14 +247,16 @@
(defun vc-hg-diff (files &optional oldvers newvers buffer)
"Get a difference report using hg between two revisions of FILES."
(let ((working (vc-working-revision (car files))))
(let* ((firstfile (car files))
(working (and firstfile (vc-working-revision firstfile))))
(when (and (equal oldvers working) (not newvers))
(setq oldvers nil))
(when (and (not oldvers) newvers)
(setq oldvers working))
(apply #'vc-hg-command (or buffer "*vc-diff*") nil
(mapcar (lambda (file) (file-name-nondirectory file)) files)
"--cwd" (file-name-directory (car files))
"--cwd" (or (when firstfile (file-name-directory firstfile))
(expand-file-name default-directory))
"diff"
(append
(when oldvers