]> code.delx.au - gnu-emacs/blobdiff - doc/lispref/internals.texi
Merge from origin/emacs-25
[gnu-emacs] / doc / lispref / internals.texi
index 20681c07d9a7abd764612d511bc85302cf31d650..fedef3d7f46dfc1ddda4caf115a00b0c2121ba6e 100644 (file)
@@ -1,6 +1,6 @@
 @c -*-texinfo-*-
 @c This is part of the GNU Emacs Lisp Reference Manual.
-@c Copyright (C) 1990-1993, 1998-1999, 2001-2015 Free Software
+@c Copyright (C) 1990-1993, 1998-1999, 2001-2016 Free Software
 @c Foundation, Inc.
 @c See the file elisp.texi for copying conditions.
 @node GNU Emacs Internals
@@ -32,7 +32,9 @@ executable.  You don't have to know this material to build and install
 Emacs, since the makefiles do all these things automatically.  This
 information is pertinent to Emacs developers.
 
-   Compilation of the C source files in the @file{src} directory
+  Building Emacs requires GNU Make version 3.81 or later.
+
+  Compilation of the C source files in the @file{src} directory
 produces an executable file called @file{temacs}, also called a
 @dfn{bare impure Emacs}.  It contains the Emacs Lisp interpreter and
 I/O routines, but not the editing commands.
@@ -64,6 +66,16 @@ into the dumped Emacs.  If you port Emacs to a new operating system,
 and are not able to implement dumping, then Emacs must load
 @file{loadup.el} each time it starts.
 
+@cindex build details
+@cindex deterministic build
+@cindex @option{--disable-build-details} option to @command{configure}
+  By default the dumped @file{emacs} executable records details such
+as the build time and host name.  Use the
+@option{--disable-build-details} option of @command{configure} to
+suppress these details, so that building and installing Emacs twice
+from the same sources is more likely to result in identical copies of
+Emacs.
+
 @cindex @file{site-load.el}
   You can specify additional files to preload by writing a library named
 @file{site-load.el} that loads them.  You may need to rebuild Emacs
@@ -660,6 +672,7 @@ usage: (or CONDITIONS...)  */)
       if (!NILP (val))
         break;
       args = XCDR (args);
+      QUIT;
     @}
 @end group
 
@@ -779,6 +792,14 @@ their addresses after performing Lisp evaluation.  Lisp evaluation can
 occur via calls to @code{eval_sub} or @code{Feval}, either directly or
 indirectly.
 
+@cindex @code{QUIT}, use in Lisp primitives
+  Note the call to the @code{QUIT} macro inside the loop: this macro
+checks whether the user pressed @kbd{C-g}, and if so, aborts the
+processing.  You should do that in any loop that can potentially
+require a large number of iterations; in this case, the list of
+arguments could be very long.  This increases Emacs responsiveness and
+improves user experience.
+
   You must not use C initializers for static or global variables unless
 the variables are never written once Emacs is dumped.  These variables
 with initializers are allocated in an area of memory that becomes