Function: cvs-update-filter
cvs-update-filter is a byte-compiled function defined in pcvs.el.gz.
Signature
(cvs-update-filter PROC STRING)
Documentation
Filter function for PCL-CVS.
This function gets the output that CVS sends to stdout. It inserts the STRING into (process-buffer PROC) but it also checks if CVS is waiting for a lock file. If so, it inserts a message cookie in the *cvs* buffer.
Source Code
;; Defined in /usr/src/emacs/lisp/vc/pcvs.el.gz
(defun cvs-update-filter (proc string)
"Filter function for PCL-CVS.
This function gets the output that CVS sends to stdout. It inserts
the STRING into (process-buffer PROC) but it also checks if CVS is waiting
for a lock file. If so, it inserts a message cookie in the *cvs* buffer."
(save-match-data
(with-current-buffer (process-buffer proc)
(let ((inhibit-read-only t))
(save-excursion
;; Insert the text, moving the process-marker.
(goto-char (process-mark proc))
(insert string)
(set-marker (process-mark proc) (point))
;; FIXME: Delete any old lock message
;;(if (tin-nth cookies 1)
;; (tin-delete cookies
;; (tin-nth cookies 1)))
;; Check if CVS is waiting for a lock.
(beginning-of-line 0) ;Move to beginning of last complete line.
(when (looking-at "^[ a-z]+: \\(.*waiting for .*lock in \\(.*\\)\\)$")
(let ((msg (match-string 1))
(lock (match-string 2)))
(with-current-buffer cvs-buffer
(setq-local cvs-lock-file lock)
;; display the lock situation in the *cvs* buffer:
(ewoc-enter-last
cvs-cookies
(cvs-create-fileinfo
'MESSAGE "" " "
(concat msg
(when (file-exists-p lock)
(substitute-command-keys
"\n\t(type \\[cvs-mode-delete-lock] to delete it)")))
:subtype 'TEMP))
(pop-to-buffer (current-buffer))
(goto-char (point-max))
(beep)))))))))