]> code.delx.au - gnu-emacs/commitdiff
Speed up byte-compilation and autoload generation by avoiding mode-hooks
authorArtur Malabarba <bruce.connor.am@gmail.com>
Sun, 12 Apr 2015 02:23:35 +0000 (03:23 +0100)
committerArtur Malabarba <bruce.connor.am@gmail.com>
Sun, 12 Apr 2015 02:57:59 +0000 (03:57 +0100)
This prevents emacs-lisp-mode-hook from being run everytime an
autoload file is generated, which can account for a fraction of
package installation time depending on the hooks the user has
configured.

* lisp/emacs-lisp/bytecomp.el (byte-compile-file): Use delay-mode-hooks.

* lisp/emacs-lisp/autoload.el (autoload-find-file)
(autoload-find-generated-file): Use delay-mode-hooks.

lisp/emacs-lisp/autoload.el
lisp/emacs-lisp/bytecomp.el

index 073d923a178a19d544aca6e70ac49b8c02543b92..206d5bb44346ad816f4ded79576595bb51067b5b 100644 (file)
@@ -235,8 +235,9 @@ If a buffer is visiting the desired autoload file, return it."
        (enable-local-eval nil))
     ;; We used to use `raw-text' to read this file, but this causes
     ;; problems when the file contains non-ASCII characters.
-    (find-file-noselect
-     (autoload-ensure-default-file (autoload-generated-file)))))
+    (let ((delay-mode-hooks t))
+      (find-file-noselect
+       (autoload-ensure-default-file (autoload-generated-file))))))
 
 (defun autoload-generated-file ()
   (expand-file-name generated-autoload-file
@@ -400,7 +401,7 @@ which lists the file name and which functions are in it, etc."
     (erase-buffer)
     (setq buffer-undo-list t
           buffer-read-only nil)
-    (emacs-lisp-mode)
+    (delay-mode-hooks (emacs-lisp-mode))
     (setq default-directory (file-name-directory file))
     (insert-file-contents file nil)
     (let ((enable-local-variables :safe)
index e929c02eefbf9a0bc90d7361b132fe1085c32edc..f0d2ee48ed29a1cfbe77d8d92fba056130f8ce8b 100644 (file)
@@ -1799,7 +1799,7 @@ The value is non-nil if there were no errors, nil if errors."
             (progn
               (setq-default major-mode 'emacs-lisp-mode)
               ;; Arg of t means don't alter enable-local-variables.
-              (normal-mode t))
+              (delay-mode-hooks (normal-mode t)))
           (setq-default major-mode dmm))
         ;; There may be a file local variable setting (bug#10419).
         (setq buffer-read-only nil