]> git.eshelyaron.com Git - emacs.git/commitdiff
(cvs-header-msg): New function.
authorStefan Monnier <monnier@iro.umontreal.ca>
Wed, 1 Dec 2004 22:35:15 +0000 (22:35 +0000)
committerStefan Monnier <monnier@iro.umontreal.ca>
Wed, 1 Dec 2004 22:35:15 +0000 (22:35 +0000)
(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.

lisp/ChangeLog
lisp/pcvs.el

index e39db555779ecc34769764da1f81fd08eb9f9988..fc558de5e6ee0bc5b568691ccb0840bda99485cf 100644 (file)
@@ -1,3 +1,11 @@
+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
@@ -87,7 +99,7 @@
 
 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.
 
index 0c8fe92f2d6fe75976a3ddd4763b735e4d4e4c1f..cd0cf0a2df1ad786fa3b3da7776324b2f3ebd975 100644 (file)
@@ -575,7 +575,7 @@ If non-nil, NEW means to create a new buffer no matter what."
   ;; 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
@@ -595,38 +595,40 @@ If non-nil, NEW means to create a new buffer no matter what."
                           (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)
@@ -658,7 +660,6 @@ it is finished."
            ;; 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)))))
@@ -1824,8 +1825,12 @@ POSTPROC is a list of expressions to be evaluated at the very end (after
                ;; 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)