This patch below is what I did, *just* to get comp not to complain about the "missing" .emacs.el. Then something should be done to make it to compile .emacs, and I'm not sure where or how. I can't shake the feeling that I'm thrashing around and someone who knows the code could do it faster and cleaner. diff --git i/src/comp.c w/src/comp.c index b6072a866e..a8e67bbeb2 100644 --- i/src/comp.c +++ w/src/comp.c @@ -4473,7 +4473,10 @@ DEFUN ("comp-el-to-eln-rel-filename", Fcomp_el_to_eln_rel_filename, Lisp_Object separator = build_string ("-"); Lisp_Object path_hash = comp_hash_string (filename); - filename = concat2 (Ffile_name_nondirectory (Fsubstring (filename, Qnil, - make_fixnum (-3))), - separator); + if (suffix_p (filename, ".emacs")) + filename = concat2 (Ffile_name_nondirectory (filename), separator); + else + filename = concat2 (Ffile_name_nondirectory (Fsubstring (filename, Qnil, + make_fixnum (-3))), + separator); Lisp_Object hash = concat3 (path_hash, separator, content_hash); return concat3 (filename, hash, build_string (NATIVE_ELISP_SUFFIX)); diff --git i/src/lread.c w/src/lread.c index 0a6e4201e4..b0b08ba872 100644 --- i/src/lread.c +++ w/src/lread.c @@ -1716,7 +1716,10 @@ maybe_swap_for_eln (bool no_native, Lisp_Object *filename, int *fd, Fremhash (*filename, V_comp_no_native_file_h); - if (no_native - || load_no_native - || !suffix_p (*filename, ".elc")) + if (no_native || load_no_native) + return; + + bool _emacs = suffix_p (*filename, ".emacs.elc"); + + if (!_emacs && !suffix_p (*filename, ".elc")) return; @@ -1724,5 +1727,5 @@ maybe_swap_for_eln (bool no_native, Lisp_Object *filename, int *fd, Lisp_Object eln_path_tail = Vnative_comp_eln_load_path; Lisp_Object src_name = - Fsubstring (*filename, Qnil, make_fixnum (-1)); + Fsubstring (*filename, Qnil, make_fixnum (_emacs ? -4 : -1)); if (NILP (Ffile_exists_p (src_name))) {