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
|
;; revert buffers for changed files
|
||||||
(def-package! autorevert
|
(def-package! autorevert
|
||||||
:defer doom-before-switch-buffer-hook
|
:after-call doom-before-switch-buffer-hook
|
||||||
:config
|
:config
|
||||||
(setq auto-revert-verbose nil)
|
(setq auto-revert-verbose nil)
|
||||||
(global-auto-revert-mode +1))
|
(global-auto-revert-mode +1))
|
||||||
|
|
||||||
;; persist variables across sessions
|
;; persist variables across sessions
|
||||||
(def-package! savehist
|
(def-package! savehist
|
||||||
:defer (pre-command-hook . 1)
|
:defer 1
|
||||||
|
:after-call post-command-hook
|
||||||
:config
|
:config
|
||||||
(setq savehist-file (concat doom-cache-dir "savehist")
|
(setq savehist-file (concat doom-cache-dir "savehist")
|
||||||
savehist-save-minibuffer-history t
|
savehist-save-minibuffer-history t
|
||||||
|
@ -100,7 +101,7 @@ fundamental-mode) for performance sake."
|
||||||
|
|
||||||
;; persistent point location in buffers
|
;; persistent point location in buffers
|
||||||
(def-package! saveplace
|
(def-package! saveplace
|
||||||
:defer doom-before-switch-buffer-hook
|
:after-call doom-before-switch-buffer-hook
|
||||||
:config
|
:config
|
||||||
(setq save-place-file (concat doom-cache-dir "saveplace"))
|
(setq save-place-file (concat doom-cache-dir "saveplace"))
|
||||||
(defun doom*recenter-on-load-saveplace (&rest _)
|
(defun doom*recenter-on-load-saveplace (&rest _)
|
||||||
|
@ -112,7 +113,8 @@ fundamental-mode) for performance sake."
|
||||||
|
|
||||||
;; Keep track of recently opened files
|
;; Keep track of recently opened files
|
||||||
(def-package! recentf
|
(def-package! recentf
|
||||||
:defer (pre-command-hook . 1)
|
:defer 1
|
||||||
|
:after-call find-file-hook
|
||||||
:commands recentf-open-files
|
:commands recentf-open-files
|
||||||
:config
|
:config
|
||||||
(setq recentf-save-file (concat doom-cache-dir "recentf")
|
(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
|
;; Auto-close delimiters and blocks as you type
|
||||||
(def-package! smartparens
|
(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)
|
:commands (sp-pair sp-local-pair sp-with-modes)
|
||||||
:config
|
:config
|
||||||
(require 'smartparens-config)
|
(require 'smartparens-config)
|
||||||
|
@ -155,7 +157,7 @@ fundamental-mode) for performance sake."
|
||||||
|
|
||||||
;; Branching undo
|
;; Branching undo
|
||||||
(def-package! undo-tree
|
(def-package! undo-tree
|
||||||
:defer doom-before-switch-buffer-hook
|
:after-call doom-before-switch-buffer-hook
|
||||||
:config
|
:config
|
||||||
;; persistent undo history is known to cause undo history corruption, which
|
;; persistent undo history is known to cause undo history corruption, which
|
||||||
;; can be very destructive! So disable it!
|
;; 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))
|
command-log-mode-open-log-turns-on-mode t))
|
||||||
|
|
||||||
(def-package! dtrt-indent
|
(def-package! dtrt-indent
|
||||||
:defer t
|
:after-call doom-before-switch-buffer-hook
|
||||||
:config
|
:config
|
||||||
(setq dtrt-indent-verbosity (if doom-debug-mode 2 0))
|
(setq dtrt-indent-verbosity (if doom-debug-mode 2 0))
|
||||||
|
|
||||||
|
|
|
@ -459,11 +459,44 @@ added, if the file exists."
|
||||||
;; Use-package modifications
|
;; 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)
|
(after! use-package-core
|
||||||
;; TODO Make
|
(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)))
|
(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 :when) (not (eval (plist-get plist :when) t)))
|
||||||
(and (plist-member plist :unless) (eval (plist-get plist :unless) t))))
|
(and (plist-member plist :unless) (eval (plist-get plist :unless) t))))
|
||||||
`(progn
|
`(use-package ,name ,@plist)))
|
||||||
;; 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))))
|
|
||||||
|
|
||||||
(defmacro def-package-hook! (package when &rest body)
|
(defmacro def-package-hook! (package when &rest body)
|
||||||
"Reconfigures a package's `def-package!' block.
|
"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
|
;; undo/redo changes to Emacs' window layout
|
||||||
(def-package! winner
|
(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
|
:preface (defvar winner-dont-bind-my-keys t) ; I'll bind keys myself
|
||||||
:config (winner-mode +1))
|
:config (winner-mode +1))
|
||||||
|
|
||||||
;; highlight matching delimiters
|
;; highlight matching delimiters
|
||||||
(def-package! paren
|
(def-package! paren
|
||||||
:defer doom-before-switch-buffer-hook
|
:after-call doom-before-switch-buffer-hook
|
||||||
:config
|
:config
|
||||||
(setq show-paren-delay 0.1
|
(setq show-paren-delay 0.1
|
||||||
show-paren-highlight-openparen t
|
show-paren-highlight-openparen t
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue