emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] /srv/bzr/emacs/trunk r111281: * comint.el (comint-redirect


From: Michael Mauger
Subject: [Emacs-diffs] /srv/bzr/emacs/trunk r111281: * comint.el (comint-redirect-previous-input-string): New variable.
Date: Thu, 20 Dec 2012 21:08:29 -0500
User-agent: Bazaar (2.5.0)

------------------------------------------------------------
revno: 111281
committer: Michael Mauger <address@hidden>
branch nick: trunk
timestamp: Thu 2012-12-20 21:08:29 -0500
message:
  * comint.el (comint-redirect-previous-input-string): New variable.
  (comint-redirect-setup, comint-redirect-cleanup)
  (comint-redirect-preoutput-filter): Use it.  Fixes redirection bug.
  (comint-redirect-preoutput-filter): Fix verbose message.
modified:
  lisp/ChangeLog
  lisp/comint.el
=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog    2012-12-20 11:15:38 +0000
+++ b/lisp/ChangeLog    2012-12-21 02:08:29 +0000
@@ -1,3 +1,10 @@
+2012-12-20  Michael R. Mauger  <address@hidden>
+
+       * comint.el (comint-redirect-previous-input-string): New variable.
+       (comint-redirect-setup, comint-redirect-cleanup)
+       (comint-redirect-preoutput-filter): Use it.  Fixes redirection bug.
+       (comint-redirect-preoutput-filter): Fix verbose message.
+
 2012-12-20  Michael Albinus  <address@hidden>
 
        * progmodes/grep.el (rgrep): Escape command line.  Sometimes, it

=== modified file 'lisp/comint.el'
--- a/lisp/comint.el    2012-10-08 00:12:26 +0000
+++ b/lisp/comint.el    2012-12-21 02:08:29 +0000
@@ -3490,6 +3490,11 @@
 This is useful, for instance, for insertion into Help mode buffers.
 You probably want to set it locally to the output buffer.")
 
+(defvar comint-redirect-previous-input-string nil
+  "Last redirected line of text.
+Allows detection of the end of the redirection in case the
+completion string is split between two output segments.")
+
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; Functions
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -3527,6 +3532,9 @@
     (make-local-variable 'comint-redirect-completed)
     (setq comint-redirect-completed nil)
 
+    (make-local-variable 'comint-redirect-previous-input-string)
+    (setq comint-redirect-previous-input-string "")
+
     (setq mode-line-process
          (if mode-line-process
              (list (concat (elt mode-line-process 0) " Redirection"))
@@ -3535,6 +3543,8 @@
 (defun comint-redirect-cleanup ()
   "End a Comint redirection.  See `comint-redirect-send-command'."
   (interactive)
+  ;; Release the last redirected string
+  (setq comint-redirect-previous-input-string nil)
   ;; Restore the process filter
   (set-process-filter (get-buffer-process (current-buffer))
                      comint-redirect-original-filter-function)
@@ -3616,18 +3626,21 @@
 
     ;; Message
     (and comint-redirect-verbose
-        (message "Redirected output to buffer(s) %s"
-                 (mapconcat 'identity output-buffer-list " ")))
+        (message "Redirected output to buffer(s) %s" output-buffer-list))
 
     ;; If we see the prompt, tidy up
     ;; We'll look for the prompt in the original string, so nobody can
     ;; clobber it
-    (and (string-match comint-redirect-finished-regexp input-string)
+    (and (string-match comint-redirect-finished-regexp 
+                       (concat comint-redirect-previous-input-string 
+                               input-string))
         (progn
           (and comint-redirect-verbose
                (message "Redirection completed"))
           (comint-redirect-cleanup)
           (run-hooks 'comint-redirect-hook)))
+    (setq comint-redirect-previous-input-string input-string)
+
     ;; Echo input?
     (if comint-redirect-echo-input
        filtered-input-string


reply via email to

[Prev in Thread] Current Thread [Next in Thread]