diff options
author | Paul Eggert <[email protected]> | 1993-07-12 22:04:35 +0000 |
---|---|---|
committer | Paul Eggert <[email protected]> | 1993-07-12 22:04:35 +0000 |
commit | 45c92c0c569a9bf4e76c37adedd1c6cb51aa10ab (patch) | |
tree | 1bae0227a94877a065a589264fb6e080968472b9 /lisp/vc-hooks.el | |
parent | 44ca409ab8d054aca63ab260f342637c2d2829a9 (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.el | 33 |
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) |