mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-24 14:30:43 -08:00
Put re-loaded file back at start of load-history (bug#26837)
* src/lread.c (readevalloop): Fix the "whole buffer" check to operate in the correct buffer. (Feval_buffer): Move point back to the start after checking for lexical binding. * test/src/lread-tests.el (lread-test-bug26837): New test. * test/data/somelib.el, test/data/somelib2.el: New test data files.
This commit is contained in:
parent
d6d5020c25
commit
db30296bae
4 changed files with 29 additions and 1 deletions
|
|
@ -1885,7 +1885,7 @@ readevalloop (Lisp_Object readcharfun,
|
|||
/* On the first cycle, we can easily test here
|
||||
whether we are reading the whole buffer. */
|
||||
if (b && first_sexp)
|
||||
whole_buffer = (PT == BEG && ZV == Z);
|
||||
whole_buffer = (BUF_PT (b) == BUF_BEG (b) && BUF_ZV (b) == BUF_Z (b));
|
||||
|
||||
instream = stream;
|
||||
read_next:
|
||||
|
|
@ -2008,6 +2008,7 @@ This function preserves the position of point. */)
|
|||
record_unwind_protect (save_excursion_restore, save_excursion_save ());
|
||||
BUF_TEMP_SET_PT (XBUFFER (buf), BUF_BEGV (XBUFFER (buf)));
|
||||
specbind (Qlexical_binding, lisp_file_lexically_bound_p (buf) ? Qt : Qnil);
|
||||
BUF_TEMP_SET_PT (XBUFFER (buf), BUF_BEGV (XBUFFER (buf)));
|
||||
readevalloop (buf, 0, filename,
|
||||
!NILP (printflag), unibyte, Qnil, Qnil, Qnil);
|
||||
unbind_to (count, Qnil);
|
||||
|
|
|
|||
7
test/data/somelib.el
Normal file
7
test/data/somelib.el
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
;;; -*- lexical-binding: t; -*-
|
||||
|
||||
;; blah
|
||||
|
||||
(defun somefunc () t)
|
||||
|
||||
(provide 'somelib)
|
||||
7
test/data/somelib2.el
Normal file
7
test/data/somelib2.el
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
;;; -*- lexical-binding: t; -*-
|
||||
|
||||
;; blah
|
||||
|
||||
(defun somefunc2 () t)
|
||||
|
||||
(provide 'somelib2)
|
||||
|
|
@ -142,4 +142,17 @@ literals (Bug#20852)."
|
|||
"unescaped character literals "
|
||||
"\", (, ), ;, [, ] detected!")))))
|
||||
|
||||
(ert-deftest lread-test-bug26837 ()
|
||||
"Test for http://debbugs.gnu.org/26837 ."
|
||||
(let ((load-path (cons
|
||||
(file-name-as-directory
|
||||
(expand-file-name "data" (getenv "EMACS_TEST_DIRECTORY")))
|
||||
load-path)))
|
||||
(load "somelib" nil t)
|
||||
(should (string-suffix-p "/somelib.el" (caar load-history)))
|
||||
(load "somelib2" nil t)
|
||||
(should (string-suffix-p "/somelib2.el" (caar load-history)))
|
||||
(load "somelib" nil t)
|
||||
(should (string-suffix-p "/somelib.el" (caar load-history)))))
|
||||
|
||||
;;; lread-tests.el ends here
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue