aboutsummaryrefslogtreecommitdiffstats
path: root/lisp/vc-hooks.el
diff options
context:
space:
mode:
authorPaul Eggert <[email protected]>1993-07-12 22:04:35 +0000
committerPaul Eggert <[email protected]>1993-07-12 22:04:35 +0000
commit45c92c0c569a9bf4e76c37adedd1c6cb51aa10ab (patch)
tree1bae0227a94877a065a589264fb6e080968472b9 /lisp/vc-hooks.el
parent44ca409ab8d054aca63ab260f342637c2d2829a9 (diff)
(vc-rcs-status): Include head version number in mode line if there
are no locks.
Diffstat (limited to 'lisp/vc-hooks.el')
-rw-r--r--lisp/vc-hooks.el33
1 files changed, 21 insertions, 12 deletions
diff --git a/lisp/vc-hooks.el b/lisp/vc-hooks.el
index 4431183aaa..4dfec89d4e 100644
--- a/lisp/vc-hooks.el
+++ b/lisp/vc-hooks.el
@@ -152,11 +152,11 @@ visiting FILE."
vc-type))
(defun vc-rcs-status (file)
- ;; Return string " [LOCKER:REV]" if FILE under RCS control, otherwise nil,
- ;; for placement in modeline by `vc-mode-line'.
-
- ;; If FILE is not locked then return just "". If the FILE is locked
- ;; then return *all* the locks currently set, in a single string of the
+ ;; Return string for placement in modeline by `vc-mode-line'.
+ ;; If FILE is not registered under RCS, return nil.
+ ;; If FILE is registered but not locked, return " REV" if there is a head
+ ;; revision and " @@" otherwise.
+ ;; If FILE is locked then return all locks in a string of the
;; form " LOCKER1:REV1 LOCKER2:REV2 ...".
;; Algorithm:
@@ -177,6 +177,7 @@ visiting FILE."
;; The output doesn't show which version you are actually looking at.
;; The modeline can get quite cluttered when there are multiple locks.
+ ;; The head revision is probably not what you want if you've used `rcs -b'.
(let ((master (vc-name file))
found)
@@ -205,13 +206,21 @@ visiting FILE."
(if found
;; Clean control characters from text.
- (let ((status
- (save-restriction
- (narrow-to-region (match-beginning 1) (match-end 1))
- (goto-char (point-min))
- (while (re-search-forward "[ \b\t\n\v\f\r]+" nil t)
- (replace-match " " t t))
- (buffer-string))))
+ (let* ((locks
+ (save-restriction
+ (narrow-to-region (match-beginning 1) (match-end 1))
+ (goto-char (point-min))
+ (while (re-search-forward "[ \b\t\n\v\f\r]+" nil t)
+ (replace-match " " t t))
+ (buffer-string)))
+ (status
+ (if (not (string-equal locks ""))
+ locks
+ (goto-char (point-min))
+ (if (looking-at "head[ \b\t\n\v\f\r]+\\([.0-9]+\\)")
+ (concat " " (buffer-substring (match-beginning 1)
+ (match-end 1)))
+ " @@"))))
;; Clean work buffer.
(erase-buffer)
(set-buffer-modified-p nil)