]> code.delx.au - gnu-emacs/blobdiff - lisp/log-view.el
*** empty log message ***
[gnu-emacs] / lisp / log-view.el
index 11e23724690d3c8f0bc81cd5c095d48b7ba48877..fbe83d79513bbaf5f70dd07407ebd7b68f165da4 100644 (file)
@@ -1,10 +1,10 @@
 ;;; log-view.el --- Major mode for browsing RCS/CVS/SCCS log output
 
-;; Copyright (C) 1999, 2000, 2001  Free Software Foundation, Inc.
+;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004,
+;;   2005 Free Software Foundation, Inc.
 
 ;; Author: Stefan Monnier <monnier@cs.yale.edu>
 ;; Keywords: rcs sccs cvs log version-control
-;; Revision: $Id: log-view.el,v 1.9 2001/11/12 23:01:17 sds Exp $
 
 ;; This file is part of GNU Emacs.
 
@@ -20,8 +20,8 @@
 
 ;; You should have received a copy of the GNU General Public License
 ;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
 
 ;;; Commentary:
 
@@ -46,7 +46,9 @@
   '(("q" . quit-window)
     ("z" . kill-this-buffer)
     ("m" . set-mark-command)
+    ;; ("e" . cvs-mode-edit-log)
     ("d" . log-view-diff)
+    ("f" . log-view-find-version)
     ("n" . log-view-msg-next)
     ("p" . log-view-msg-prev)
     ("N" . log-view-file-next)
 (defvar log-view-mode-hook nil
   "Hook run at the end of `log-view-mode'.")
 
-(defface log-view-file-face
+(defface log-view-file
   '((((class color) (background light))
-     (:background "grey70" :bold t))
-    (t (:bold t)))
+     (:background "grey70" :weight bold))
+    (t (:weight bold)))
   "Face for the file header line in `log-view-mode'."
   :group 'log-view)
-(defvar log-view-file-face 'log-view-file-face)
+;; backward-compatibility alias
+(put 'log-view-file-face 'face-alias 'log-view-file)
+(defvar log-view-file-face 'log-view-file)
 
-(defface log-view-message-face
+(defface log-view-message
   '((((class color) (background light))
      (:background "grey85"))
-    (t (:bold t)))
+    (t (:weight bold)))
   "Face for the message header line in `log-view-mode'."
   :group 'log-view)
-(defvar log-view-message-face 'log-view-message-face)
+;; backward-compatibility alias
+(put 'log-view-message-face 'face-alias 'log-view-message)
+(defvar log-view-message-face 'log-view-message)
 
 (defconst log-view-file-re
   (concat "^\\("
          "Working file: \\(.+\\)"
          "\\|SCCS/s\\.\\(.+\\):"
          "\\)\n"))
-(defconst log-view-message-re "^\\(revision \\([.0-9]+\\)\\|D \\([.0-9]+\\) .*\\)$")
+;; In RCS, a locked revision will look like "revision N.M\tlocked by: FOO".
+(defconst log-view-message-re "^\\(revision \\([.0-9]+\\)\\(?:\t.*\\)?\\|r\\([0-9]+\\) | .* | .*\\|D \\([.0-9]+\\) .*\\)$")
 
 (defconst log-view-font-lock-keywords
   `((,log-view-file-re
     (forward-line 1)
     (let ((pt (point)))
       (when (re-search-backward log-view-message-re nil t)
-       (let ((rev (or (match-string 2) (match-string 3))))
+       (let ((rev (or (match-string 2) (match-string 3) (match-string 4))))
          (unless (re-search-forward log-view-file-re pt t)
            rev))))))
 
          (cvs-force-command "/F"))
       (funcall f))))
 
-;;;
-;;; diff
-;;;
+(defun log-view-find-version (pos)
+  "Visit the version at point."
+  (interactive "d")
+  (save-excursion
+    (goto-char pos)
+    (switch-to-buffer (vc-find-version (log-view-current-file)
+                                       (log-view-current-tag)))))
+
+;;
+;; 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")
+were the region starts and ends."
+  (interactive
+   (list (if mark-active (region-beginning) (point))
+         (if mark-active (region-end) (point))))
   (let ((fr (log-view-current-tag beg))
         (to (log-view-current-tag end)))
     (when (string-equal fr to)
@@ -194,4 +211,5 @@ Otherwise, get the diff between the revisions
 
 (provide 'log-view)
 
+;; arch-tag: 0d64220b-ce7e-4f62-9c2a-6b04c2f81f4f
 ;;; log-view.el ends here