+2004-12-01 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * pcvs.el (cvs-header-msg): New function.
+ (cvs-update-header): Use it. Change calling convention.
+ Correctly handle the case of having simultaneous active processes.
+ (cvs-sentinel): Don't call cvs-update-header any more.
+ (cvs-mode-run): Update call and add cvs-update-header to postproc.
+
2004-12-01 Jay Belanger <belanger@truman.edu>
* calc/calc-ext.el (calc-inverse, calc-hyperbolic):
(x-cut-buffer-or-selection-value): Compare the X cut buffer text
with x-last-selected-text-cut-encoded.
+2004-11-30 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * man.el (Man-fontify-manpage): Improve handling of ANSI escapes.
+
2004-11-30 Markus Rost <rost@ias.edu>
* textmodes/tex-mode.el (tex-main-file): Add a compatibility with
2004-11-30 Andre Spiegel <spiegel@gnu.org>
- * vc-hooks.el (vc-recompute-state): Moved here from vc.el.
+ * vc-hooks.el (vc-recompute-state): Move here from vc.el.
* vc-cvs.el (vc-cvs-state): Handle the case where vc-state is
still nil.
* fringe.el (fringe-indicators): Add fake defvar to avoid compiler
warning. Delay real definition, which uses
- `set-fringe-indicators-1' till after the definition of that
- function.
+ `set-fringe-indicators-1' till after the definition of that function.
2004-11-28 Kim F. Storm <storm@cua.dk>
2004-11-27 Richard M. Stallman <rms@gnu.org>
- * comint.el (comint-read-noecho): Add trivial compatibility
- definition.
+ * comint.el (comint-read-noecho): Add trivial compatibility definition.
* generic.el (define-generic-mode): Doc fix.
;; emacsen. It shouldn't be needed, but it does no harm.
(sit-for 0))
-(defun cvs-update-header (args fis) ; inline
+(defun cvs-header-msg (args fis)
(let* ((lastarg nil)
(args (mapcar (lambda (arg)
(cond
(concat (match-string 0 arg) "<log message>"))
;; Keep the rest as is.
(t arg)))
- args))
- ;; turn them into a string
- (arg (cvs-strings->string
- (append (cvs-flags-query 'cvs-cvs-flags nil 'noquery)
- (if cvs-cvsroot (list "-d" cvs-cvsroot))
- args
- (mapcar 'cvs-fileinfo->full-path fis))))
- (str (if args (concat "-- Running " cvs-program " " arg " ...\n")
- "\n")))
- (if nil (insert str) ;inline
- ;;(with-current-buffer cvs-buffer
- (let* ((prev-msg (car (ewoc-get-hf cvs-cookies)))
- (tin (ewoc-nth cvs-cookies 0)))
- ;; look for the first *real* fileinfo (to determine emptyness)
- (while
- (and tin
- (memq (cvs-fileinfo->type (ewoc-data tin))
- '(MESSAGE DIRCHANGE)))
- (setq tin (ewoc-next cvs-cookies tin)))
- ;; cleanup the prev-msg
- (when (string-match "Running \\(.*\\) ...\n" prev-msg)
- (setq prev-msg
- (concat
- "-- last cmd: "
- (match-string 1 prev-msg)
- " --")))
- ;; set the new header and footer
- (ewoc-set-hf cvs-cookies
- str (concat "\n--------------------- "
- (if tin "End" "Empty")
- " ---------------------\n"
- prev-msg))))))
+ args)))
+ (concat cvs-program " "
+ (cvs-strings->string
+ (append (cvs-flags-query 'cvs-cvs-flags nil 'noquery)
+ (if cvs-cvsroot (list "-d" cvs-cvsroot))
+ args
+ (mapcar 'cvs-fileinfo->full-path fis))))))
+
+(defun cvs-update-header (cmd add)
+ (let* ((hf (ewoc-get-hf cvs-cookies))
+ (str (car hf))
+ (done "")
+ (tin (ewoc-nth cvs-cookies 0)))
+ (if (eq (length str) 1) (setq str ""))
+ ;; look for the first *real* fileinfo (to determine emptyness)
+ (while
+ (and tin
+ (memq (cvs-fileinfo->type (ewoc-data tin))
+ '(MESSAGE DIRCHANGE)))
+ (setq tin (ewoc-next cvs-cookies tin)))
+ (if add
+ (setq str (concat "-- Running " cmd " ...\n" str))
+ (if (not (string-match
+ (concat "^-- Running " (regexp-quote cmd) " \\.\\.\\.\n") str))
+ (error "Internal PCL-CVS error while removing message")
+ (setq str (replace-match "" t t str))
+ (if (zerop (length str)) (setq str "\n"))
+ (setq done (concat "-- last cmd: " cmd " --"))))
+ ;; set the new header and footer
+ (ewoc-set-hf cvs-cookies
+ str (concat "\n--------------------- "
+ (if tin "End" "Empty")
+ " ---------------------\n"
+ done))))
(defun cvs-sentinel (proc msg)
;; in a file-like buffer. -stef
(buffer-enable-undo)
(with-current-buffer cvs-buffer
- (cvs-update-header nil nil) ;FIXME: might need to be inline
(message "CVS process has completed in %s" (buffer-name)))))
;; This might not even be necessary
(set-buffer obuf)))))
;; absence of `cvs update' output has a specific meaning.
(or fis (list (cvs-create-fileinfo 'DIRCHANGE "" "." ""))))))
(push `(cvs-parse-process ',dont-change-disc nil ',old-fis) postproc)))
+ (let ((msg (cvs-header-msg args fis)))
+ (cvs-update-header msg 'add)
+ (push `(with-current-buffer cvs-buffer
+ (cvs-update-header ',msg nil))
+ postproc))
(setq postproc (if (cdr postproc) (cons 'progn postproc) (car postproc)))
- (cvs-update-header args fis)
(with-current-buffer buf
(let ((inhibit-read-only t)) (erase-buffer))
(message "Running cvs %s ..." cmd)