changeset 43579:ebb2754ac469

(comint-preoutput-filter-functions): Doc fix. (comint-output-filter-functions, comint-input-filter-functions) (comint-redirect-filter-functions): Likewise. (comint-redirect-preoutput-filter): Do the local-hook handling of t when running comint-redirect-filter-functions. (comint-output-filter): Likewise for comint-preoutput-filter-functions.
author Richard M. Stallman <rms@gnu.org>
date Wed, 27 Feb 2002 19:31:00 +0000
parents fa66c2edee4d
children a163de064942
files lisp/comint.el
diffstat 1 files changed, 26 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/comint.el	Wed Feb 27 05:29:00 2002 +0000
+++ b/lisp/comint.el	Wed Feb 27 19:31:00 2002 +0000
@@ -378,7 +378,8 @@
   "Functions to call before input is sent to the process.
 These functions get one argument, a string containing the text to send.
 
-This variable is buffer-local.")
+You can use `add-hook' to add functions to this list
+either globally or locally.")
 
 (defvar comint-output-filter-functions '(comint-postoutput-scroll-to-bottom)
   "Functions to call after output is inserted into the buffer.
@@ -390,7 +391,8 @@
 
 See also `comint-preoutput-filter-functions'.
 
-This variable is buffer-local.")
+You can use `add-hook' to add functions to this list
+either globally or locally.")
 
 (defvar comint-input-sender-no-newline nil
   "Non-nil directs the `comint-input-sender' function not to send a newline.")
@@ -1564,7 +1566,8 @@
 the last function is the text that is actually inserted in the
 redirection buffer.
 
-This variable is permanent-local.")
+You can use `add-hook' to add functions to this list
+either globally or locally.")
 
 ;; When non-nil, this is the last overlay used for output.
 ;; It is kept around so that we can extend it instead of creating
@@ -1631,7 +1634,12 @@
 	;; Run preoutput filters
 	(let ((functions comint-preoutput-filter-functions))
 	  (while (and functions string)
-	    (setq string (funcall (car functions) string))
+	    (if (eq (car functions) t)
+		(let ((functions (default-value 'comint-preoutput-filter-functions)))
+		  (while (and functions string)
+		    (setq string (funcall (car functions) string))
+		    (setq functions (cdr functions))))
+	      (setq string (funcall (car functions) string)))
 	    (setq functions (cdr functions))))
 
 	;; Insert STRING
@@ -2990,9 +2998,10 @@
 
 The functions on the list are called sequentially, and each one is given
 the string returned by the previous one.  The string returned by the
-last function is the text that is actually inserted in the redirection buffer.")
-
-(make-variable-buffer-local 'comint-redirect-filter-functions)
+last function is the text that is actually inserted in the redirection buffer.
+
+You can use `add-hook' to add functions to this list
+either globally or locally.")
 
 ;; Internal variables
 
@@ -3126,8 +3135,16 @@
     ;; If there are any filter functions, give them a chance to modify the string
     (let ((functions comint-redirect-filter-functions))
       (while (and functions filtered-input-string)
-	(setq filtered-input-string
-	      (funcall (car functions) filtered-input-string))
+	(if (eq (car functions) t)
+	    ;; If a local value says "use the default value too",
+	    ;; do that.
+	    (let ((functions (default-value 'comint-redirect-filter-functions)))
+	      (while (and functions filtered-input-string)
+		(setq filtered-input-string
+		      (funcall (car functions) filtered-input-string))
+		(setq functions (cdr functions))))
+	  (setq filtered-input-string
+		(funcall (car functions) filtered-input-string)))
 	(setq functions (cdr functions))))
 
     ;; Clobber `comint-redirect-finished-regexp'