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:
parent
6f77e7d72e
commit
6653c6b769
7 changed files with 105 additions and 19 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue