changeset 22464:fc8109f5d8f5

(elisp-eval-region): Accept new arg read-function; also handle load-read-function.
author Richard M. Stallman <rms@gnu.org>
date Sat, 13 Jun 1998 04:34:18 +0000
parents fd555029931d
children 5dcb65955074
files lisp/emacs-lisp/eval-reg.el
diffstat 1 files changed, 13 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/emacs-lisp/eval-reg.el	Sat Jun 13 04:33:31 1998 +0000
+++ b/lisp/emacs-lisp/eval-reg.el	Sat Jun 13 04:34:18 1998 +0000
@@ -122,7 +122,8 @@
 	 (funcall elisp-code)))))
 
 
-(defun elisp-eval-region (elisp-start elisp-end &optional elisp-output)
+(defun elisp-eval-region (elisp-start elisp-end &optional elisp-output
+				      elisp-read-function)
   "Execute the region as Lisp code.
 When called from programs, expects two arguments,
 giving starting and ending indices in the current buffer
@@ -130,6 +131,10 @@
 Programs can pass third argument PRINTFLAG which controls printing of output:
 nil means discard it; anything else is stream for print.
 
+Also the fourth argument READ-FUNCTION, if non-nil, is used
+instead of `read' to read each expression.  It gets one argument
+which is the input stream for reading characters.
+
 This version, from `eval-reg.el', allows Lisp customization of read,
 eval, and the printer."
 
@@ -149,7 +154,13 @@
       (goto-char elisp-start)
       (elisp-skip-whitespace)
       (while (< (point) elisp-end-marker)
-	(setq elisp-form (read elisp-buf))
+	(setq elisp-form
+	      (cond (elisp-read-function
+		     (funcall elisp-read-function elisp-buf))
+		    (load-read-function
+		     (funcall load-read-function elisp-buf))
+		    (t
+		     (read elisp-buf))))
 
 	(let ((elisp-current-buffer (current-buffer)))
 	  ;; Restore the inside current-buffer.