From 84a150451b13a779f1d2e638e0b49047bc793441 Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Tue, 21 Mar 1995 20:05:23 +0000 Subject: [PATCH] (Vload_read_function): New variable. (readevalloop): Use that variable. (syms_of_lread): Set up Lisp variable. --- src/lread.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/lread.c b/src/lread.c index f0afa5f0710..1af746ad9ef 100644 --- a/src/lread.c +++ b/src/lread.c @@ -87,6 +87,9 @@ Lisp_Object Vcurrent_load_list; /* Name of file actually being read by `load'. */ Lisp_Object Vload_file_name; +/* Function to use for reading, in `load' and friends. */ +Lisp_Object Vload_read_function; + /* List of descriptors now open for Fload. */ static Lisp_Object load_descriptor_list; @@ -743,7 +746,10 @@ readevalloop (readcharfun, stream, sourcename, evalfun, printflag) else { UNREAD (c); - val = read0 (readcharfun); + if (NILP (Vload_read_function)) + val = read0 (readcharfun); + else + val = call1 (Vload_read_function, readcharfun); } val = (*evalfun) (val); @@ -2083,6 +2089,11 @@ or variables, and cons cells `(provide . FEATURE)' and `(require . FEATURE)'."); "Used for internal purposes by `load'."); Vcurrent_load_list = Qnil; + DEFVAR_LISP ("load-read-function", &Vload_read_function, + "Function used by `load' and `eval-region' for reading expressions.\n\ +The default is nil, which means use the function `read'."); + Vload_read_function = Qnil; + load_descriptor_list = Qnil; staticpro (&load_descriptor_list); -- 2.39.5