[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
force auto compile .el files
From: |
Giuseppe Scrivano |
Subject: |
force auto compile .el files |
Date: |
Sat, 25 Mar 2006 13:25:00 +0100 |
User-agent: |
Gnus/5.11 (Gnus v5.11) Emacs/22.0.50 (gnu/linux) |
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. */
- force auto compile .el files,
Giuseppe Scrivano <=