summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp
diff options
context:
space:
mode:
authorRichard M. Stallman <rms@gnu.org>1998-06-13 04:34:18 +0000
committerRichard M. Stallman <rms@gnu.org>1998-06-13 04:34:18 +0000
commit7abbf0dcb4a8d8030d7ba03e8db112ce7959833c (patch)
tree5286ee6dcc9c086d5506336f62c44bf5b4ea4454 /lisp/emacs-lisp
parentb78585e49a3f09843d313a8ec4a4339624838ebd (diff)
downloademacs-7abbf0dcb4a8d8030d7ba03e8db112ce7959833c.tar.gz
(elisp-eval-region): Accept new arg read-function; also handle
load-read-function.
Diffstat (limited to 'lisp/emacs-lisp')
-rw-r--r--lisp/emacs-lisp/eval-reg.el15
1 files changed, 13 insertions, 2 deletions
diff --git a/lisp/emacs-lisp/eval-reg.el b/lisp/emacs-lisp/eval-reg.el
index a38acade8be..8d7824146ba 100644
--- a/lisp/emacs-lisp/eval-reg.el
+++ b/lisp/emacs-lisp/eval-reg.el
@@ -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.