emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/lisp/log-view.el


From: Sam Steingold
Subject: [Emacs-diffs] Changes to emacs/lisp/log-view.el
Date: Mon, 12 Nov 2001 18:01:18 -0500

Index: emacs/lisp/log-view.el
diff -u emacs/lisp/log-view.el:1.8 emacs/lisp/log-view.el:1.9
--- emacs/lisp/log-view.el:1.8  Mon Nov 12 15:34:45 2001
+++ emacs/lisp/log-view.el      Mon Nov 12 18:01:17 2001
@@ -4,7 +4,7 @@
 
 ;; Author: Stefan Monnier <address@hidden>
 ;; Keywords: rcs sccs cvs log version-control
-;; Revision: $Id: log-view.el,v 1.8 2001/11/12 20:34:45 sds Exp $
+;; Revision: $Id: log-view.el,v 1.9 2001/11/12 23:01:17 sds Exp $
 
 ;; This file is part of GNU Emacs.
 
@@ -35,15 +35,19 @@
 
 (eval-when-compile (require 'cl))
 (require 'pcvs-util)
+(autoload 'vc-version-diff "vc")
 
-
 (defgroup log-view nil
   "Major mode for browsing log output of RCS/CVS/SCCS."
   :group 'pcl-cvs
   :prefix "log-view-")
 
 (easy-mmode-defmap log-view-mode-map
-  '(("n" . log-view-msg-next)
+  '(("q" . quit-window)
+    ("z" . kill-this-buffer)
+    ("m" . set-mark-command)
+    ("d" . log-view-diff)
+    ("n" . log-view-msg-next)
     ("p" . log-view-msg-prev)
     ("N" . log-view-file-next)
     ("P" . log-view-file-prev)
@@ -97,6 +101,8 @@
 ;;;###autoload
 (define-derived-mode log-view-mode fundamental-mode "Log-View"
   "Major mode for browsing CVS log output."
+  (set-buffer-modified-p nil)
+  (setq buffer-read-only t)
   (set (make-local-variable 'font-lock-defaults) log-view-font-lock-defaults)
   (set (make-local-variable 'cvs-minor-wrap-function) 'log-view-minor-wrap))
 
@@ -135,11 +141,12 @@
           (dir ""))
       (let ((default-directory ""))
        (when pcldir (setq dir (expand-file-name pcldir dir)))
-       (when cvsdir (setq dir (expand-file-name cvsdir dir)))
-       (expand-file-name file dir)))))
+       (when cvsdir (setq dir (expand-file-name cvsdir dir))))
+      (expand-file-name file dir))))
 
-(defun log-view-current-tag ()
+(defun log-view-current-tag (&optional where)
   (save-excursion
+    (when where (goto-char where))
     (forward-line 1)
     (let ((pt (point)))
       (when (re-search-backward log-view-message-re nil t)
@@ -167,10 +174,39 @@
          (cvs-force-command "/F"))
       (funcall f))))
 
+;;;
+;;; diff
+;;;
+
+(defun log-view-diff (beg end)
+  "Get the diff for several revisions.
+If the point is the same as the mark, get the diff for this revision.
+Otherwise, get the diff between the revisions
+ were the region starts and ends."
+  (interactive "r")
+  (let ((fr (log-view-current-tag beg))
+        (to (log-view-current-tag end)))
+    (when (string-equal fr to)
+      (save-excursion
+        (goto-char end)
+        (log-view-msg-next)
+        (setq to (log-view-current-tag))))
+    (vc-version-diff (log-view-current-file) to fr)))
+
 (provide 'log-view)
 
 ;;; Change Log:
 ;; $Log: log-view.el,v $
+;; Revision 1.9  2001/11/12 23:01:17  sds
+;; * vc.el (vc-print-log): Bind `inhibit-read-only' to t before and
+;; set-buffer-modified-p to nil after `vc-exec-after'.
+;; * log-view.el (log-view-mode-map): Bind "q", "z", "m" and "d".
+;; (log-view-mode): Make read-only.
+;; (log-view-current-file): Do final `expand-file-name' in the
+;; current `default-directory'.
+;; (log-view-current-tag): Take an optional `where' arg.
+;; (log-view-diff): New user command.
+;;
 ;; Revision 1.8  2001/11/12 20:34:45  sds
 ;; updated (C)
 ;;



reply via email to

[Prev in Thread] Current Thread [Next in Thread]