diff --git a/core/core-editor.el b/core/core-editor.el index 891a70ff0..ec4252391 100644 --- a/core/core-editor.el +++ b/core/core-editor.el @@ -70,14 +70,14 @@ fundamental-mode) for performance sake." ;; revert buffers for changed files (def-package! autorevert - :defer buffer + :defer doom-after-switch-buffer-hook :config (setq auto-revert-verbose nil) (global-auto-revert-mode +1)) ;; persist variables across sessions (def-package! savehist - :defer (input . 1) + :defer (pre-command-hook . 1) :config (setq savehist-file (concat doom-cache-dir "savehist") savehist-save-minibuffer-history t @@ -87,7 +87,7 @@ fundamental-mode) for performance sake." ;; persistent point location in buffers (def-package! saveplace - :defer buffer + :defer doom-after-switch-buffer-hook :config (setq save-place-file (concat doom-cache-dir "saveplace")) (defun doom*recenter-on-load-saveplace (&rest _) @@ -99,7 +99,7 @@ fundamental-mode) for performance sake." ;; Keep track of recently opened files (def-package! recentf - :defer (input . 1) + :defer (pre-command-hook . 1) :commands recentf-open-files :config (setq recentf-save-file (concat doom-cache-dir "recentf") @@ -131,7 +131,7 @@ fundamental-mode) for performance sake." ;; Auto-close delimiters and blocks as you type (def-package! smartparens - :defer (buffer . 2) + :defer doom-after-switch-buffer-hook :config (require 'smartparens-config) (setq sp-highlight-pair-overlay nil @@ -150,7 +150,7 @@ fundamental-mode) for performance sake." ;; Branching undo (def-package! undo-tree - :defer input + :defer pre-command-hook :config (global-undo-tree-mode +1) ;; persistent undo history is known to cause undo history corruption, which diff --git a/core/core-packages.el b/core/core-packages.el index e3234a278..42b962710 100644 --- a/core/core-packages.el +++ b/core/core-packages.el @@ -247,7 +247,8 @@ FORCE-P is non-nil, do it anyway. (cl-pushnew doom-core-dir load-path :test #'string=) (add-hook 'doom-internal-init-hook #'doom|refresh-cache)) (when doom-debug-mode - (message "Doom initialized"))) + (message "Doom initialized")) + (setq doom-init-p t)) ;; initialize Doom core (require 'core-lib) (require 'core-os) @@ -255,13 +256,7 @@ FORCE-P is non-nil, do it anyway. (require 'core-ui) (require 'core-editor) (require 'core-projects) - (require 'core-keybinds)) - ;; load input-deferred packages on first `pre-command-hook' - (add-transient-hook! 'pre-command-hook - (mapc #'require (cdr (assq 'input doom-deferred-packages)))) - (add-transient-hook! 'doom-after-switch-buffer-hook - (when (get-buffer-window) - (mapc #'require (cdr (assq 'buffer doom-deferred-packages)))))) + (require 'core-keybinds))) (defun doom-initialize-autoloads () "Ensures that `doom-autoload-file' exists and is loaded. Otherwise run @@ -475,11 +470,11 @@ MODULES is an malformed plist of modules to load." (and (plist-member plist :unless) (eval (plist-get plist :unless) t)))) `(progn ,(when-let* ((defer (plist-get plist :defer)) - (type (or (car-safe defer) defer))) + (value (or (car-safe defer) defer))) (setq plist (plist-put plist :defer (or (cdr-safe defer) t))) - (when (and (not doom-init-p) - (assq type doom-deferred-packages)) - `(push ',name (cdr (assq ',type doom-deferred-packages))))) + (unless (or (memq value '(t nil)) + (number-or-marker-p value)) + `(add-transient-hook! ',value (require ',name)))) (use-package ,name ,@plist)))) (defmacro def-package-hook! (package when &rest body) diff --git a/core/core-ui.el b/core/core-ui.el index 758d98827..a7e61093c 100644 --- a/core/core-ui.el +++ b/core/core-ui.el @@ -281,13 +281,13 @@ DEFAULT is non-nil, set the default mode-line for all buffers." ;; undo/redo changes to Emacs' window layout (def-package! winner - :defer buffer + :defer doom-after-switch-buffer-hook :preface (defvar winner-dont-bind-my-keys t) ; I'll bind keys myself :config (winner-mode +1)) ;; highlight matching delimiters (def-package! paren - :defer input + :defer pre-command-hook :config (setq show-paren-delay 0.1 show-paren-highlight-openparen t diff --git a/core/core.el b/core/core.el index afd720562..3037bf2c7 100644 --- a/core/core.el +++ b/core/core.el @@ -173,8 +173,7 @@ this, you'll get stuttering and random freezes) and resets `file-name-handler-alist'." (unless noninteractive (run-hooks 'doom-init-hook)) - (setq doom-init-p t - file-name-handler-alist doom--file-name-handler-alist + (setq file-name-handler-alist doom--file-name-handler-alist gc-cons-threshold 16777216 gc-cons-percentage 0.15)) diff --git a/modules/completion/company/config.el b/modules/completion/company/config.el index efc730586..12a1f352b 100644 --- a/modules/completion/company/config.el +++ b/modules/completion/company/config.el @@ -48,7 +48,7 @@ MODES should be one major-mode symbol or a list of them." (def-package! company :when (featurep! +auto) - :defer input + :defer pre-command-hook :config (setq company-idle-delay 0.2)) diff --git a/modules/completion/helm/config.el b/modules/completion/helm/config.el index d407459f2..b515bb28e 100644 --- a/modules/completion/helm/config.el +++ b/modules/completion/helm/config.el @@ -11,7 +11,7 @@ ;; (def-package! helm-mode - :defer (input . 1) + :defer (pre-command-hook . 1) :config (helm-mode +1) ;; helm is too heavy for find-file-at-point diff --git a/modules/completion/ivy/config.el b/modules/completion/ivy/config.el index eb60b5789..e0f123bbc 100644 --- a/modules/completion/ivy/config.el +++ b/modules/completion/ivy/config.el @@ -24,7 +24,7 @@ immediately runs it on the current candidate (ending the ivy session)." ;; (def-package! ivy - :defer input + :defer (pre-command-hook . 1) :config (setq ivy-height 12 ivy-do-completion-in-region nil diff --git a/modules/feature/evil/config.el b/modules/feature/evil/config.el index c2ca114cc..b778d5961 100644 --- a/modules/feature/evil/config.el +++ b/modules/feature/evil/config.el @@ -23,7 +23,7 @@ (def-package! evil-collection :when (featurep! +everywhere) - :defer input + :defer pre-command-hook :preface ;; must be set before evil/evil-collcetion is loaded (setq evil-want-integration nil @@ -325,7 +325,7 @@ the new algorithm is confusing, like in python or ruby." (def-package! evil-snipe :commands (evil-snipe-mode evil-snipe-override-mode evil-snipe-local-mode evil-snipe-override-local-mode) - :defer input + :defer pre-command-hook :init (setq evil-snipe-smart-case t evil-snipe-scope 'line diff --git a/modules/ui/evil-goggles/config.el b/modules/ui/evil-goggles/config.el index ad71a0ebd..1a17d0ebe 100644 --- a/modules/ui/evil-goggles/config.el +++ b/modules/ui/evil-goggles/config.el @@ -2,7 +2,7 @@ (def-package! evil-goggles :when (featurep! :feature evil) - :defer input + :defer pre-command-hook :init (setq evil-goggles-duration 0.05 evil-goggles-pulse nil ; too slow