(elisp-eval-region): Accept new arg read-function; also handle

load-read-function.
This commit is contained in:
Richard M. Stallman 1998-06-13 04:34:18 +00:00
parent 63987c84b1
commit a440f81d29

View file

@ -122,7 +122,8 @@ its value will not be lost."
(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 @@ of the text to be executed.
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 @@ eval, and the printer."
(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.