;;; 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, 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.10 2001/11/16 13:53:05 monnier Exp $
;; This file is part of GNU Emacs.
'(("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)
(defface log-view-file-face
'((((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)
(defface log-view-message-face
'((((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)
"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))))))
(interactive "d")
(save-excursion
(goto-char pos)
- (switch-to-buffer (vc-find-version (log-view-current-file)
+ (switch-to-buffer (vc-find-version (log-view-current-file)
(log-view-current-tag)))))
-;;;
-;;; diff
-;;;
+;;
+;; 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)
(provide 'log-view)
+;; arch-tag: 0d64220b-ce7e-4f62-9c2a-6b04c2f81f4f
;;; log-view.el ends here