/* 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;
else
{
UNREAD (c);
- val = read0 (readcharfun);
+ if (NILP (Vload_read_function))
+ val = read0 (readcharfun);
+ else
+ val = call1 (Vload_read_function, readcharfun);
}
val = (*evalfun) (val);
"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);