Function: cvs-sentinel
cvs-sentinel is a byte-compiled function defined in pcvs.el.gz.
Signature
(cvs-sentinel PROC MSG)
Documentation
Sentinel for the cvs update process.
This is responsible for parsing the output from the cvs update when it is finished.
Source Code
;; Defined in /usr/src/emacs/lisp/vc/pcvs.el.gz
(defun cvs-sentinel (proc _msg)
"Sentinel for the cvs update process.
This is responsible for parsing the output from the cvs update when
it is finished."
(when (memq (process-status proc) '(signal exit))
(let ((cvs-postproc (process-get proc 'cvs-postprocess))
(cvs-buf (process-get proc 'cvs-buffer))
(procbuf (process-buffer proc)))
(unless (buffer-live-p cvs-buf) (setq cvs-buf nil))
(unless (buffer-live-p procbuf) (setq procbuf nil))
;; Since the buffer and mode line will show that the
;; process is dead, we can delete it now. Otherwise it
;; will stay around until M-x list-processes.
(process-put proc 'postprocess nil)
(delete-process proc)
;; Don't do anything if the main buffer doesn't exist any more.
(when cvs-buf
(with-current-buffer cvs-buf
(cvs-update-header (process-get proc 'cvs-header) nil)
(setq cvs-mode-line-process (symbol-name (process-status proc)))
(force-mode-line-update)
(when cvs-postproc
(if (null procbuf)
;;(set-process-buffer proc nil)
(error "CVS process buffer was killed")
(with-current-buffer procbuf
;; Do the postprocessing like parsing and such.
(save-excursion
(funcall cvs-postproc)))))))
;; Check whether something is left.
(when (and procbuf (not (get-buffer-process procbuf)))
(with-current-buffer procbuf
;; IIRC, we enable undo again once the process is finished
;; for cases where the output was inserted in *vc-diff* or
;; in a file-like buffer. --Stef
(buffer-enable-undo)
(with-current-buffer (or cvs-buf (current-buffer))
(message "CVS process has completed in %s"
(buffer-name))))))))