From: Giuseppe Scrivano <gscrivano@gnu.org>
Subject: force auto compile .el files
Date: Sat, 25 Mar 2006 13:25:00 +0100 [thread overview]
Message-ID: <87pskahftv.fsf@gnu.org> (raw)
hello,
what do you think about the following patch? Actually when
emacs tries to open an outdated .elc file it shows only a
warning message, differently with this patch if the symbol
`force-auto-compile' is not nil it automatically tries to
compile the newer .el source file. If the symbol is nil
it shows only the warning message.
Thanks,
Giuseppe
--- src/lread.c.old 2006-03-23 15:28:30.000000000 +0100
+++ src/lread.c 2006-03-25 12:33:00.000000000 +0100
@@ -724,6 +724,8 @@
int newer = 0;
/* 1 means we are loading a compiled file. */
int compiled = 0;
+ /* 1 means we forced the compilation of the .el file. */
+ int force_compiled = 0;
Lisp_Object handler;
int safe_p = 1;
char *fmode = "r";
@@ -887,9 +889,32 @@
if (result >= 0 && (unsigned) s1.st_mtime < (unsigned) s2.st_mtime)
{
- /* Make the progress messages mention that source is newer. */
- newer = 1;
-
+ /* If the symbol `force-auto-compile' is not NIL then try to
+ automatically recompile the updated .el file. If the value
+ is NIL show only a warning. */
+ if (!NILP (Fintern_soft (make_specified_string ("force-auto-compile",
+ -1, 18, 0), Qnil)))
+ {
+ Lisp_Object args[2];
+
+ args[0] = Fintern_soft (make_specified_string ("byte-compile-file",
+ -1, 17, 0), Qnil);
+
+ SSET (efound, SBYTES (efound) - 1, 0);
+ args[1] = Fsubstring (efound, make_number (0), make_number (-1));
+
+ if (args[0] != Qnil)
+ force_compiled = !NILP (Ffuncall (2, args));
+ else
+ newer = 1;
+
+ SSET (efound, SBYTES (efound) - 1, 'c');
+ }
+ else
+ {
+ /* Make the progress messages mention that source is newer. */
+ newer = 1;
+ }
/* If we won't print another message, mention this anyway. */
if (!NILP (nomessage))
{
@@ -941,9 +966,11 @@
if (!safe_p)
message_with_string ("Loading %s (compiled; note unsafe, not compiled in Emacs)...",
file, 1);
+ else if (force_compiled)
+ message_with_string ("Loading %s (force compiled)...", file, 1);
else if (!compiled)
message_with_string ("Loading %s (source)...", file, 1);
- else if (newer)
+ else if (newer)
message_with_string ("Loading %s (compiled; note, source file is newer)...",
file, 1);
else /* The typical case; compiled file newer than source file. */
next reply other threads:[~2006-03-25 12:25 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-03-25 12:25 Giuseppe Scrivano [this message]
2006-03-26 0:20 ` force auto compile .el files Richard Stallman
2006-03-26 0:59 ` Giuseppe Scrivano
2006-03-26 1:23 ` Thien-Thi Nguyen
2006-03-27 8:35 ` Richard Stallman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87pskahftv.fsf@gnu.org \
--to=gscrivano@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).