diff options
author | Stefan Monnier <monnier@iro.umontreal.ca> | 2019-02-15 18:02:40 -0500 |
---|---|---|
committer | Stefan Monnier <monnier@iro.umontreal.ca> | 2019-02-15 18:02:40 -0500 |
commit | 3c80bc333750b62ed98d3064cf98b74b43121a5e (patch) | |
tree | 0cc0a55958bcd48cc0a4d21633e53f5b5422408e | |
parent | 877eba7249d0d352ff489f1fceb8362c08814494 (diff) | |
download | emacs-3c80bc333750b62ed98d3064cf98b74b43121a5e.tar.gz |
* src/lread.c (readevalloop): Use filename to decide macroexpansion
-rw-r--r-- | src/lread.c | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/src/lread.c b/src/lread.c index ff9b75475b8..ddef135687f 100644 --- a/src/lread.c +++ b/src/lread.c @@ -1932,13 +1932,12 @@ readevalloop (Lisp_Object readcharfun, Lisp_Object macroexpand = intern ("internal-macroexpand-for-load"); if (NILP (Ffboundp (macroexpand)) - /* Don't macroexpand in .elc files, since it should have been done - already. We actually don't know whether we're in a .elc file or not, - so we use circumstantial evidence: .el files normally go through - Vload_source_file_function -> load-with-code-conversion - -> eval-buffer. */ - || EQ (readcharfun, Qget_file_char) - || EQ (readcharfun, Qget_emacs_mule_file_char)) + || (STRINGP (sourcename) + && SBYTES (sourcename) >= 4 + && !strcmp (".elc", SSDATA (sourcename) + SBYTES (sourcename) - 4))) + /* Don't macroexpand before the corresponding function is defined + and don't bother macroexpanding in .elc files, since it should have + been done already. */ macroexpand = Qnil; if (MARKERP (readcharfun)) |