From: Dan Nicolaescu Date: Sat, 29 Aug 2009 18:56:12 +0000 (+0000) Subject: * vc.el (vc-print-log-internal): Move RCS/CVS specific code ... X-Git-Tag: emacs-pretest-23.1.90~1599 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=db167d28c634931c7cc72640edb23b141050fd33;p=emacs.git * vc.el (vc-print-log-internal): Move RCS/CVS specific code ... * vc-rcs.el (vc-rcs-print-log-cleanup): ... here. New function. (vc-rcs-print-log): Use it. * vc-cvs.el (vc-cvs-print-log): Use vc-rcs-print-log-cleanup. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 80b4ff11881..4bf474b62db 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,12 @@ +2009-08-29 Dan Nicolaescu + + * vc.el (vc-print-log-internal): Move RCS/CVS specific code ... + + * vc-rcs.el (vc-rcs-print-log-cleanup): ... here. New function. + (vc-rcs-print-log): Use it. + + * vc-cvs.el (vc-cvs-print-log): Use vc-rcs-print-log-cleanup. + 2009-08-29 Stefan Monnier * files.el (get-free-disk-space): Use / for default-directory. diff --git a/lisp/vc-cvs.el b/lisp/vc-cvs.el index 33571c10c31..55a03d79900 100644 --- a/lisp/vc-cvs.el +++ b/lisp/vc-cvs.el @@ -494,13 +494,18 @@ Will fail unless you have administrative privileges on the repo." ;;; History functions ;;; +(declare-function vc-rcs-print-log-cleanup "vc-rcs" ()) + (defun vc-cvs-print-log (files &optional buffer) "Get change logs associated with FILES." + (require 'vc-rcs) ;; It's just the catenation of the individual logs. (vc-cvs-command buffer (if (vc-stay-local-p files 'CVS) 'async 0) - files "log")) + files "log") + (with-current-buffer buffer + (vc-exec-after (vc-rcs-print-log-cleanup)))) (defun vc-cvs-comment-history (file) "Get comment history of a file." diff --git a/lisp/vc-rcs.el b/lisp/vc-rcs.el index ffb6d21c638..95ed4ac2f64 100644 --- a/lisp/vc-rcs.el +++ b/lisp/vc-rcs.el @@ -538,10 +538,23 @@ directory the operation is applied to all registered files beneath it." ;;; History functions ;;; +(defun vc-rcs-print-log-cleanup () + (let ((inhibit-read-only t)) + (goto-char (point-max)) + (forward-line -1) + (while (looking-at "=*\n") + (delete-char (- (match-end 0) (match-beginning 0))) + (forward-line -1)) + (goto-char (point-min)) + (when (looking-at "[\b\t\n\v\f\r ]+") + (delete-char (- (match-end 0) (match-beginning 0)))))) + (defun vc-rcs-print-log (files &optional buffer) "Get change log associated with FILE. If FILE is a directory the operation is applied to all registered files beneath it." - (vc-do-command (or buffer "*vc*") 0 "rlog" (mapcar 'vc-name (vc-expand-dirs files)))) + (vc-do-command (or buffer "*vc*") 0 "rlog" (mapcar 'vc-name (vc-expand-dirs files))) + (with-current-buffer (or buffer "*vc*") + (vc-rcs-print-log-cleanup))) (defun vc-rcs-diff (files &optional oldvers newvers buffer) "Get a difference report using RCS between two sets of files." diff --git a/lisp/vc.el b/lisp/vc.el index f9a89d1dece..fd95d86c5e1 100644 --- a/lisp/vc.el +++ b/lisp/vc.el @@ -1834,17 +1834,6 @@ allowed and simply skipped)." (set (make-local-variable 'log-view-vc-backend) ',backend) (set (make-local-variable 'log-view-vc-fileset) ',files) - ;; FIXME: this seems to apply only to RCS/CVS, it doesn't quite - ;; belong here in the generic code. - (goto-char (point-max)) - (forward-line -1) - (while (looking-at "=*\n") - (delete-char (- (match-end 0) (match-beginning 0))) - (forward-line -1)) - (goto-char (point-min)) - (when (looking-at "[\b\t\n\v\f\r ]+") - (delete-char (- (match-end 0) (match-beginning 0)))) - (shrink-window-if-larger-than-buffer) ;; move point to the log entry for the working revision (vc-call-backend ',backend 'show-log-entry ',working-revision)