Replace :defer HOOK/FN with :after-call keyword
This commit is contained in:
parent
89c52e7d99
commit
1369c51000
3 changed files with 48 additions and 23 deletions
|
@ -83,14 +83,15 @@ fundamental-mode) for performance sake."
|
|||
|
||||
;; revert buffers for changed files
|
||||
(def-package! autorevert
|
||||
:defer doom-before-switch-buffer-hook
|
||||
:after-call doom-before-switch-buffer-hook
|
||||
:config
|
||||
(setq auto-revert-verbose nil)
|
||||
(global-auto-revert-mode +1))
|
||||
|
||||
;; persist variables across sessions
|
||||
(def-package! savehist
|
||||
:defer (pre-command-hook . 1)
|
||||
:defer 1
|
||||
:after-call post-command-hook
|
||||
:config
|
||||
(setq savehist-file (concat doom-cache-dir "savehist")
|
||||
savehist-save-minibuffer-history t
|
||||
|
@ -100,7 +101,7 @@ fundamental-mode) for performance sake."
|
|||
|
||||
;; persistent point location in buffers
|
||||
(def-package! saveplace
|
||||
:defer doom-before-switch-buffer-hook
|
||||
:after-call doom-before-switch-buffer-hook
|
||||
:config
|
||||
(setq save-place-file (concat doom-cache-dir "saveplace"))
|
||||
(defun doom*recenter-on-load-saveplace (&rest _)
|
||||
|
@ -112,7 +113,8 @@ fundamental-mode) for performance sake."
|
|||
|
||||
;; Keep track of recently opened files
|
||||
(def-package! recentf
|
||||
:defer (pre-command-hook . 1)
|
||||
:defer 1
|
||||
:after-call find-file-hook
|
||||
:commands recentf-open-files
|
||||
:config
|
||||
(setq recentf-save-file (concat doom-cache-dir "recentf")
|
||||
|
@ -135,7 +137,7 @@ fundamental-mode) for performance sake."
|
|||
|
||||
;; Auto-close delimiters and blocks as you type
|
||||
(def-package! smartparens
|
||||
:defer doom-before-switch-buffer-hook
|
||||
:after-call doom-before-switch-buffer-hook
|
||||
:commands (sp-pair sp-local-pair sp-with-modes)
|
||||
:config
|
||||
(require 'smartparens-config)
|
||||
|
@ -155,7 +157,7 @@ fundamental-mode) for performance sake."
|
|||
|
||||
;; Branching undo
|
||||
(def-package! undo-tree
|
||||
:defer doom-before-switch-buffer-hook
|
||||
:after-call doom-before-switch-buffer-hook
|
||||
:config
|
||||
;; persistent undo history is known to cause undo history corruption, which
|
||||
;; can be very destructive! So disable it!
|
||||
|
@ -176,7 +178,7 @@ fundamental-mode) for performance sake."
|
|||
command-log-mode-open-log-turns-on-mode t))
|
||||
|
||||
(def-package! dtrt-indent
|
||||
:defer t
|
||||
:after-call doom-before-switch-buffer-hook
|
||||
:config
|
||||
(setq dtrt-indent-verbosity (if doom-debug-mode 2 0))
|
||||
|
||||
|
|
|
@ -459,11 +459,44 @@ added, if the file exists."
|
|||
;; Use-package modifications
|
||||
;;
|
||||
|
||||
(autoload 'use-package "use-package" nil nil 'macro)
|
||||
(autoload 'use-package "use-package-core" nil 'macro)
|
||||
|
||||
;; TODO :after-hook HOOK (load packages on first run of HOOK)
|
||||
;; TODO Make
|
||||
(after! use-package-core
|
||||
(add-to-list 'use-package-deferring-keywords :after-call nil #'eq)
|
||||
|
||||
(setq use-package-keywords
|
||||
(use-package-list-insert :after-call use-package-keywords :after))
|
||||
|
||||
(defalias 'use-package-normalize/:after-call
|
||||
'use-package-normalize-symlist)
|
||||
|
||||
(defvar doom--deferred-packages-alist ()
|
||||
"TODO")
|
||||
|
||||
(defun use-package-handler/:after-call (name-symbol _keyword hooks rest state)
|
||||
(let ((fn (intern (format "doom|transient-hook--load-%s" name-symbol)))
|
||||
(hooks (delete-dups hooks)))
|
||||
(if (plist-get state :demand)
|
||||
(use-package-process-keywords name rest state)
|
||||
(use-package-concat
|
||||
`((fset ',fn
|
||||
(lambda (&rest _)
|
||||
(require ',name-symbol)
|
||||
(dolist (hook (cdr (assq ',name-symbol doom--deferred-packages-alist)))
|
||||
(if (functionp hook)
|
||||
(advice-remove hook #',fn)
|
||||
(remove-hook hook #',fn)))
|
||||
(map-delete doom--deferred-packages-alist ',name-symbol)
|
||||
(fmakunbound ',fn))))
|
||||
(cl-mapcan (lambda (hook)
|
||||
(if (functionp hook)
|
||||
`((advice-add #',hook :before #',fn))
|
||||
`((add-hook ',hook #',fn))))
|
||||
hooks)
|
||||
`((map-put doom--deferred-packages-alist
|
||||
',name-symbol
|
||||
'(,@hooks ,@(cdr (assq name-symbol doom--deferred-packages-alist)))))
|
||||
(use-package-process-keywords name rest state))))))
|
||||
|
||||
|
||||
;;
|
||||
|
@ -515,17 +548,7 @@ MODULES is an malformed plist of modules to load."
|
|||
(or (and (plist-member plist :if) (not (eval (plist-get plist :if) t)))
|
||||
(and (plist-member plist :when) (not (eval (plist-get plist :when) t)))
|
||||
(and (plist-member plist :unless) (eval (plist-get plist :unless) t))))
|
||||
`(progn
|
||||
;; TODO Replace with custom use-package keyword
|
||||
,(when-let* ((defer (plist-get plist :defer))
|
||||
(value (or (car-safe defer) defer)))
|
||||
(setq plist (plist-put plist :defer (or (cdr-safe defer) t)))
|
||||
(unless (or (memq value '(t nil))
|
||||
(number-or-marker-p value))
|
||||
`(add-transient-hook! ',value
|
||||
,(intern (format "load-%s" name))
|
||||
(require ',name))))
|
||||
(use-package ,name ,@plist))))
|
||||
`(use-package ,name ,@plist)))
|
||||
|
||||
(defmacro def-package-hook! (package when &rest body)
|
||||
"Reconfigures a package's `def-package!' block.
|
||||
|
|
|
@ -290,13 +290,13 @@ DEFAULT is non-nil, set the default mode-line for all buffers."
|
|||
|
||||
;; undo/redo changes to Emacs' window layout
|
||||
(def-package! winner
|
||||
:defer doom-before-switch-window-hook
|
||||
:after-call doom-before-switch-window-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 doom-before-switch-buffer-hook
|
||||
:after-call doom-before-switch-buffer-hook
|
||||
:config
|
||||
(setq show-paren-delay 0.1
|
||||
show-paren-highlight-openparen t
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue