X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/601fb9b822b020e1b9566b0a60874c1de89df0b2..f2cdb04ac04fb8f9f92bce11df6e4a020720208b:/lisp/loadup.el diff --git a/lisp/loadup.el b/lisp/loadup.el index e444fc5dca..85222ce7d9 100644 --- a/lisp/loadup.el +++ b/lisp/loadup.el @@ -1,7 +1,7 @@ ;;; loadup.el --- load up standardly loaded Lisp files for Emacs -;; Copyright (C) 1985, 1986, 1992, 1994, 2001, 2002, 2003, -;; 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +;; Copyright (C) 1985, 1986, 1992, 1994, 2001, 2002, 2003, 2004, 2005, +;; 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. ;; Maintainer: FSF ;; Keywords: internal @@ -25,15 +25,35 @@ ;; 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: + +;; i) Any file loaded on all platforms should appear in $lisp +;; and $shortlisp in src/Makefile.in. Use the .el or .elc version as +;; appropriate. + +;; ii) Any file that is only loaded on some platforms should appear +;; in the version of $lisp in the generated Makefile on that platform. +;; At the present time, this is achieved by use of #ifdefs. +;; It should also appear in $SOME_MACHINE_LISP on all platforms. + +;; The above steps ensure 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: + +;; iii) If the file is loaded uncompiled, it should (where possible) +;; obey the doc-string conventions expected by make-docfile. + ;;; Code: -;; add subdirectories to the load-path for files that might -;; get autoloaded when bootstrapping +;; Add subdirectories to the load-path for files that might get +;; autoloaded when bootstrapping. (if (or (equal (nth 3 command-line-args) "bootstrap") (equal (nth 4 command-line-args) "bootstrap") (equal (nth 3 command-line-args) "unidata-gen.el") (equal (nth 4 command-line-args) "unidata-gen-files") - ;; in case CANNOT_DUMP + ;; In case CANNOT_DUMP. (equal (nth 0 command-line-args) "../src/bootstrap-emacs")) (let ((dir (car load-path))) ;; We'll probably overflow the pure space. @@ -46,6 +66,12 @@ (message "Using load-path %s" load-path) +(if (or (member (nth 3 command-line-args) '("dump" "bootstrap")) + (member (nth 4 command-line-args) '("dump" "bootstrap"))) + ;; To reduce the size of dumped Emacs, we avoid making huge + ;; char-tables. + (setq inhibit-load-charset-map t)) + ;; We don't want to have any undo records in the dumped Emacs. (set-buffer "*scratch*") (setq buffer-undo-list t) @@ -54,6 +80,10 @@ (load "emacs-lisp/backquote") (load "subr") +;; Do it after subr, since both after-load-functions and add-hook are +;; implemented in subr.el. +(add-hook 'after-load-functions '(lambda (f) (garbage-collect))) + ;; We specify .el in case someone compiled version.el by mistake. (load "version.el") @@ -62,7 +92,7 @@ (load "emacs-lisp/map-ynp") (load "cus-start") (load "international/mule") -(load "international/mule-conf.el") ;Don't get confused if someone compiled this by mistake. +(load "international/mule-conf") (load "env") (load "format") (load "bindings") @@ -76,17 +106,12 @@ (load "button") (load "startup") -(message "Lists of integers (garbage collection statistics) are normal output") -(message "while building Emacs; they do not indicate a problem.") -(message "%s" (garbage-collect)) - (condition-case nil ;; Don't get confused if someone compiled this by mistake. (load "loaddefs.el") ;; In case loaddefs hasn't been generated yet. (file-error (load "ldefs-boot.el"))) -(message "%s" (garbage-collect)) (load "abbrev") ;lisp-mode.el and simple.el use define-abbrev-table. (load "simple") @@ -100,8 +125,8 @@ (load "case-table") (load "international/characters") (load "composite") -;; This file doesn't exist when building Emacs from CVS. It is -;; generated just after temacs is build. +;; 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) ;; Load language-specific files. @@ -153,7 +178,6 @@ (load "isearch") (load "rfn-eshadow") -(message "%s" (garbage-collect)) (load "menu-bar") (load "paths.el") ;Don't get confused if someone compiled paths by mistake. (load "emacs-lisp/lisp") @@ -163,12 +187,8 @@ (load "emacs-lisp/lisp-mode") (load "textmodes/text-mode") (load "textmodes/fill") -(message "%s" (garbage-collect)) (load "replace") -(if (eq system-type 'vax-vms) - (progn - (load "vmsproc"))) (load "buff-menu") (if (fboundp 'x-create-frame) @@ -177,72 +197,59 @@ (load "image") (load "international/fontset") (load "dnd") - (load "mwheel") (load "tool-bar"))) + +(if (or (featurep 'system-font-setting) (featurep 'font-render-setting)) + (load "font-setting")) + (if (featurep 'x) (progn (load "x-dnd") (load "term/common-win") (load "term/x-win"))) -(message "%s" (garbage-collect)) - -(if (eq system-type 'vax-vms) - (progn - (load "vms-patch"))) (if (eq system-type 'windows-nt) (progn (load "w32-vars") (load "term/common-win") (load "term/w32-win") (load "ls-lisp") - (load "disp-table") ; needed to setup ibm-pc char set, see internal.el + (load "disp-table") (load "dos-w32") (load "w32-fns"))) (if (eq system-type 'ms-dos) (progn - (load "ls-lisp") (load "dos-w32") (load "dos-fns") (load "dos-vars") - (load "international/ccl") ; codepage.el uses CCL en/decoder - (load "international/codepage") ; internal.el uses cpNNN coding systems + ;; Don't load term/common-win: it isn't appropriate for the `pc' + ;; ``window system'', which generally behaves like a terminal. + (load "term/pc-win") + (load "ls-lisp") (load "disp-table"))) ; needed to setup ibm-pc char set, see internal.el -(if (eq system-type 'macos) - (progn - (load "ls-lisp"))) -(if (featurep 'mac-carbon) - (progn - (load "term/mac-win"))) (if (featurep 'ns) (progn (load "emacs-lisp/easymenu") ;; for platform-related menu adjustments (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. + (load "mwheel")) (if (fboundp 'atan) ; preload some constants and (progn ; floating pt. functions if we have float support. (load "emacs-lisp/float-sup"))) -(message "%s" (garbage-collect)) (load "vc-hooks") (load "ediff-hook") (if (fboundp 'x-show-tip) (load "tooltip")) -(message "%s" (garbage-collect)) - ;If you want additional libraries to be preloaded and their ;doc strings kept in the DOC file rather than in core, ;you may load them with a "site-load.el" file. ;But you must also cause them to be scanned when the DOC file -;is generated. For VMS, you must edit ../vms/makedoc.com. +;is generated. ;For other systems, you must edit ../src/Makefile.in. -(if (load "site-load" t) - (garbage-collect)) - -(if (fboundp 'x-popup-menu) - (precompute-menubar-bindings)) -;; Turn on recording of which commands get rebound, -;; for the sake of the next call to precompute-menubar-bindings. -(setq define-key-rebound-commands nil) +(load "site-load" t) ;; Determine which last version number to use ;; based on the executables that now exist. @@ -259,10 +266,6 @@ (format "%s.%d" emacs-version (if versions (1+ (apply 'max versions)) 1))))) -;; Note: all compiled Lisp files loaded above this point -;; must be among the ones parsed by make-docfile -;; to construct DOC. Any that are not processed -;; for DOC will not have doc strings in the dumped Emacs. (message "Finding pointers to doc strings...") (if (or (equal (nth 3 command-line-args) "dump") @@ -333,10 +336,13 @@ (equal (nth 4 command-line-args) "bootstrap")) (setcdr load-path nil)) +(remove-hook 'after-load-functions '(lambda (f) (garbage-collect))) + +(setq inhibit-load-charset-map nil) (clear-charset-maps) (garbage-collect) -;;; At this point, we're ready to resume undo recording for scratch. +;; At this point, we're ready to resume undo recording for scratch. (buffer-enable-undo "*scratch*") (if (null (garbage-collect)) @@ -344,11 +350,7 @@ (if (or (member (nth 3 command-line-args) '("dump" "bootstrap")) (member (nth 4 command-line-args) '("dump" "bootstrap"))) - (if (eq system-type 'vax-vms) - (progn - (message "Dumping data as file temacs.dump") - (dump-emacs "temacs.dump" "temacs") - (kill-emacs)) + (progn (if (memq system-type '(ms-dos windows-nt cygwin)) (message "Dumping under the name emacs") (message "Dumping under the name emacs"))