X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/58376670d83682e2135175dccf05a23eb815bfe6..c6077bfd297a8a0e4deaec217db17be630d98b9c:/lisp/loadup.el diff --git a/lisp/loadup.el b/lisp/loadup.el index bfec75fc2c..21c64a8c3b 100644 --- a/lisp/loadup.el +++ b/lisp/loadup.el @@ -1,6 +1,6 @@ ;;; loadup.el --- load up standardly loaded Lisp files for Emacs -;; Copyright (C) 1985-1986, 1992, 1994, 2001-2015 Free Software +;; Copyright (C) 1985-1986, 1992, 1994, 2001-2016 Free Software ;; Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org @@ -26,23 +26,34 @@ ;; This is loaded into a bare Emacs to make a dumpable one. -;; If you add/remove Lisp files to be loaded here, consider the -;; following issues: +;; If you add a file to be loaded here, keep the following points in mind: -;; i) Any file loaded on any platform should appear in $lisp in src/lisp.mk. -;; Use the .el or .elc version as appropriate. +;; i) If the file is no-byte-compile, explicitly load the .el version. +;; Such files should (where possible) obey the doc-string conventions +;; expected by make-docfile. They should also be added to the +;; uncompiled[] list in make-docfile.c. +;; ii) If the file is dumped with Emacs (on any platform), put the +;; load statement at the start of a line (leading whitespace is ok). + +;; iii) If the file is _not_ dumped with Emacs, make sure the load +;; statement is _not_ at the start of a line. See pcase for an example. + +;; These rules are so that src/Makefile can construct lisp.mk automatically. ;; This ensures both that the Lisp files are compiled (if necessary) ;; before the emacs executable is dumped, and that they are passed to ;; make-docfile. (Any that are not processed for DOC will not have -;; doc strings in the dumped Emacs.) Because of this: - -;; ii) If the file is loaded uncompiled, it should (where possible) -;; obey the doc-string conventions expected by make-docfile. It -;; should also be added to the uncompiled[] list in make-docfile.c. +;; doc strings in the dumped Emacs.) ;;; Code: +;; This is used in xdisp.c to determine when bidi reordering is safe. +;; (It starts non-nil in temacs, but we set it non-nil here anyway, in +;; case someone loads loadup one more time.) We reset it after +;; successfully loading charprop.el, which defines the Unicode tables +;; bidi.c needs for its job. +(setq redisplay--inhibit-bidi t) + ;; Add subdirectories to the load-path for files that might get ;; autoloaded when bootstrapping. ;; This is because PATH_DUMPLOADSEARCH is just "../lisp". @@ -63,9 +74,13 @@ (expand-file-name "textmodes" dir) (expand-file-name "vc" dir))))) +;; Prevent build-time PATH getting stored in the binary. +;; Mainly cosmetic, but helpful for Guix. (Bug#20330) +(setq exec-path nil) + (if (eq t purify-flag) ;; Hash consing saved around 11% of pure space in my tests. - (setq purify-flag (make-hash-table :test 'equal :size 70000))) + (setq purify-flag (make-hash-table :test 'equal :size 80000))) (message "Using load-path %s" load-path) @@ -102,6 +117,10 @@ (load "format") (load "bindings") (load "window") ; Needed here for `replace-buffer-in-windows'. +;; We are now capable of resizing the mini-windows, so give the +;; variable its advertised default value (it starts as nil, see +;; xdisp.c). +(setq resize-mini-windows 'grow-only) (setq load-source-file-function 'load-with-code-conversion) (load "files") @@ -113,8 +132,7 @@ ;; Since loaddefs is not yet loaded, macroexp's uses of pcase will simply ;; fail until pcase is explicitly loaded. This also means that we have to ;; disable eager macro-expansion while loading pcase. - (let ((macroexp--pending-eager-loads '(skip))) - (load "emacs-lisp/pcase")) + (let ((macroexp--pending-eager-loads '(skip))) (load "emacs-lisp/pcase")) ;; Re-load macroexp so as to eagerly macro-expand its uses of pcase. (let ((max-lisp-eval-depth (* 2 max-lisp-eval-depth))) (load "emacs-lisp/macroexp"))) @@ -135,9 +153,7 @@ ;; should be updated by overwriting it with an up-to-date copy of ;; loaddefs.el that is uncorrupted by local changes. ;; autogen/update_autogen can be used to periodically update ldefs-boot. -(condition-case nil - ;; Don't get confused if someone compiled this by mistake. - (load "loaddefs.el") +(condition-case nil (load "loaddefs.el") ;; In case loaddefs hasn't been generated yet. (file-error (load "ldefs-boot.el"))) @@ -157,7 +173,8 @@ (load "case-table") ;; This file doesn't exist when building a development version of Emacs ;; from the repository. It is generated just after temacs is built. -(load "international/charprop.el" t) +(if (load "international/charprop.el" t) + (setq redisplay--inhibit-bidi nil)) (load "international/characters") (load "composite") @@ -174,6 +191,8 @@ (load "language/romanian") (load "language/greek") (load "language/hebrew") +(load "international/cp51932") +(load "international/eucjp-ms") (load "language/japanese") (load "language/korean") (load "language/lao") @@ -189,6 +208,7 @@ (load "language/cham") (load "indent") +(load "emacs-lisp/cl-generic") (load "frame") (load "startup") (load "term/tty-colors") @@ -268,7 +288,12 @@ (if (featurep 'ns) (progn (load "term/common-win") - (load "term/ns-win"))) + ;; Don't load ucs-normalize.el unless uni-*.el files were + ;; already produced, because it needs uni-*.el files that might + ;; not be built early enough during bootstrap. + (when (load-history-filename-element "charprop\\.el") + (load "international/ucs-normalize") + (load "term/ns-win")))) (if (fboundp 'x-create-frame) ;; Do it after loading term/foo-win.el since the value of the ;; mouse-wheel-*-event vars depends on those files being loaded or not. @@ -282,7 +307,8 @@ (load "electric") (load "emacs-lisp/eldoc") (load "cus-start") ;Late to reduce customize-rogue (needs loaddefs.el anyway) -(if (not (eq system-type 'ms-dos)) (load "tooltip")) +(if (not (eq system-type 'ms-dos)) + (load "tooltip")) ;; This file doesn't exist when building a development version of Emacs ;; from the repository. It is generated just after temacs is built. @@ -352,6 +378,8 @@ lost after dumping"))) lost after dumping"))) (setq current-load-list nil) +;; Avoid storing references to build directory in the binary. +(setq custom-current-group-alist nil) ;; We keep the load-history data in PURE space. ;; Make sure that the spine of the list is not in pure space because it can @@ -399,6 +427,9 @@ lost after dumping"))) (if (null (garbage-collect)) (setq pure-space-overflow t)) +;; Make sure we will attempt bidi reordering henceforth. +(setq redisplay--inhibit-bidi nil) + (if (member (car (last command-line-args)) '("dump" "bootstrap")) (progn (message "Dumping under the name emacs")