# HG changeset patch # User Richard M. Stallman # Date 873657169 0 # Node ID 7573e51f9c4117e37026303a84bce1130daa71af # Parent 2e277f6435552c9be1210e2418374534e2a7c190 (Feval_buffer): New arg FILENAME. diff -r 2e277f643555 -r 7573e51f9c41 src/lread.c --- a/src/lread.c Sun Sep 07 18:32:24 1997 +0000 +++ b/src/lread.c Sun Sep 07 18:32:49 1997 +0000 @@ -941,16 +941,19 @@ #ifndef standalone -DEFUN ("eval-buffer", Feval_buffer, Seval_buffer, 0, 2, "", +DEFUN ("eval-buffer", Feval_buffer, Seval_buffer, 0, 3, "", "Execute the current buffer as Lisp code.\n\ Programs can pass two arguments, BUFFER and PRINTFLAG.\n\ BUFFER is the buffer to evaluate (nil means use current buffer).\n\ PRINTFLAG controls printing of output:\n\ nil means discard it; anything else is stream for print.\n\ \n\ +If the optional third argument FILENAME is non-nil,\n\ +it specifies the file name to use for `load-history'.\n\ +\n\ This function preserves the position of point.") - (buffer, printflag) - Lisp_Object buffer, printflag; + (buffer, printflag, filename) + Lisp_Object buffer, printflag, filename; { int count = specpdl_ptr - specpdl; Lisp_Object tem, buf; @@ -960,16 +963,20 @@ else buf = Fget_buffer (buffer); if (NILP (buf)) - error ("No such buffer."); + error ("No such buffer"); if (NILP (printflag)) tem = Qsymbolp; else tem = printflag; + + if (NILP (filename)) + filename = XBUFFER (buf)->filename; + specbind (Qstandard_output, tem); record_unwind_protect (save_excursion_restore, save_excursion_save ()); BUF_SET_PT (XBUFFER (buf), BUF_BEGV (XBUFFER (buf))); - readevalloop (buf, 0, XBUFFER (buf)->filename, Feval, !NILP (printflag)); + readevalloop (buf, 0, filename, Feval, !NILP (printflag)); unbind_to (count, Qnil); return Qnil;