def-advice!->defadvice! & conform to new advice conventions

This commit does two things:

- Renames def-advice! to defadvice!, in the spirit of naming convenience
  macros after the function/macro they enhance or replace.
- Correct the names of advice functions to indicate visibility and
  intent. A public advice function like doom-set-jump-a is meant to be
  used elsewhere. A private one like +dired--cleanup-header-line-a
  shouldn't -- it likely won't work anywhere but the function(s) it was
  made to advise.
This commit is contained in:
Henrik Lissner 2019-07-23 17:24:56 +02:00
parent 8aa7772e4e
commit 82ae3a73f3
No known key found for this signature in database
GPG key ID: 5F6C0EA160557395
43 changed files with 126 additions and 121 deletions

View file

@ -168,7 +168,7 @@ successfully sets indent_style/indent_size.")
(setq save-place-file (concat doom-cache-dir "saveplace") (setq save-place-file (concat doom-cache-dir "saveplace")
save-place-forget-unreadable-files t save-place-forget-unreadable-files t
save-place-limit 200) save-place-limit 200)
(def-advice! doom--recenter-on-load-saveplace-a (&rest _) (defadvice! doom--recenter-on-load-saveplace-a (&rest _)
"Recenter on cursor when loading a saved place." "Recenter on cursor when loading a saved place."
:after-while #'save-place-find-file-hook :after-while #'save-place-find-file-hook
(if buffer-file-name (ignore-errors (recenter)))) (if buffer-file-name (ignore-errors (recenter))))
@ -199,14 +199,14 @@ successfully sets indent_style/indent_size.")
(better-jumper-mode +1) (better-jumper-mode +1)
(add-hook 'better-jumper-post-jump-hook #'recenter) (add-hook 'better-jumper-post-jump-hook #'recenter)
(defun doom-set-jump-a (orig-fn &rest args) (defadvice! doom-set-jump-a (orig-fn &rest args)
"Set a jump point and ensure ORIG-FN doesn't set any new jump points." "Set a jump point and ensure ORIG-FN doesn't set any new jump points."
(better-jumper-set-jump (if (markerp (car args)) (car args))) (better-jumper-set-jump (if (markerp (car args)) (car args)))
(let ((evil--jumps-jumping t) (let ((evil--jumps-jumping t)
(better-jumper--jumping t)) (better-jumper--jumping t))
(apply orig-fn args))) (apply orig-fn args)))
(defun doom-set-jump-maybe-a (orig-fn &rest args) (defadvice! doom-set-jump-maybe-a (orig-fn &rest args)
"Set a jump point if ORIG-FN returns non-nil." "Set a jump point if ORIG-FN returns non-nil."
(let ((origin (point-marker)) (let ((origin (point-marker))
(result (result
@ -257,7 +257,7 @@ successfully sets indent_style/indent_size.")
(push '(t tab-width) dtrt-indent-hook-generic-mapping-list) (push '(t tab-width) dtrt-indent-hook-generic-mapping-list)
(defvar dtrt-indent-run-after-smie) (defvar dtrt-indent-run-after-smie)
(def-advice! doom--fix-broken-smie-modes-a (orig-fn arg) (defadvice! doom--fix-broken-smie-modes-a (orig-fn arg)
"Some smie modes throw errors when trying to guess their indentation, like "Some smie modes throw errors when trying to guess their indentation, like
`nim-mode'. This prevents them from leaving Emacs in a broken state." `nim-mode'. This prevents them from leaving Emacs in a broken state."
:around #'dtrt-indent-mode :around #'dtrt-indent-mode
@ -381,11 +381,11 @@ successfully sets indent_style/indent_size.")
`(("." . ,(concat doom-cache-dir "undo-tree-hist/")))) `(("." . ,(concat doom-cache-dir "undo-tree-hist/"))))
(when (executable-find "zstd") (when (executable-find "zstd")
(def-advice! doom-undo-tree-make-history-save-file-name-a (file) (defadvice! doom--undo-tree-make-history-save-file-name-a (file)
:filter-return #'undo-tree-make-history-save-file-name :filter-return #'undo-tree-make-history-save-file-name
(concat file ".zst"))) (concat file ".zst")))
(def-advice! doom-undo-tree-strip-text-properties-a (&rest _) (defadvice! doom--undo-tree-strip-text-properties-a (&rest _)
:before #'undo-list-transfer-to-tree :before #'undo-list-transfer-to-tree
(dolist (item buffer-undo-list) (dolist (item buffer-undo-list)
(and (consp item) (and (consp item)

View file

@ -357,31 +357,6 @@ If N and M = 1, there's no benefit to using this macro over `remove-hook'.
(cl-loop for (_var _val hook fn) in (doom--setq-hook-fns hooks vars 'singles) (cl-loop for (_var _val hook fn) in (doom--setq-hook-fns hooks vars 'singles)
collect `(remove-hook ',hook #',fn)))) collect `(remove-hook ',hook #',fn))))
(defmacro def-advice! (symbol arglist docstring where places &rest body)
"Define an advice called NAME and add it to PLACES.
ARGLIST is as in `defun'. WHERE is a keyword as passed to `advice-add', and
PLACE is the function to which to add the advice, like in `advice-add'.
DOCSTRING and BODY are as in `defun'."
(declare (doc-string 3) (indent defun))
(unless (stringp docstring)
(push places body)
(setq places where
where docstring
docstring nil))
`(progn
(fset ',symbol (lambda ,arglist ,@body))
(put ',symbol 'function-documentation
(format "%sThis is %s advice for the following functions: %s"
,(if docstring (concat docstring "\n\n") "")
,where
(mapconcat (lambda (p) (format "`%s'" p))
(doom-enlist ,places) ", ")))
(dolist (target (doom-enlist ,places))
(if (eq ,where :remove)
(advice-remove target #',symbol)
(advice-add target ,where #',symbol)))))
(defmacro file-exists-p! (spec &optional directory) (defmacro file-exists-p! (spec &optional directory)
"Returns non-nil if the files in SPEC all exist. "Returns non-nil if the files in SPEC all exist.
@ -490,5 +465,33 @@ writes to `standard-output'."
(save-silently t)) (save-silently t))
(prog1 ,@forms (message "")))))) (prog1 ,@forms (message ""))))))
;;
;;; Definers
(define-obsolete-function-alias 'def-advice! 'defadvice!)
(defmacro defadvice! (symbol arglist &optional docstring &rest body)
"Define an advice called NAME and add it to PLACES.
ARGLIST is as in `defun'. WHERE is a keyword as passed to `advice-add', and
PLACE is the function to which to add the advice, like in `advice-add'.
DOCSTRING and BODY are as in `defun'.
\(fn SYMBOL ARGLIST &optional DOCSTRING &rest [WHERE PLACES...] BODY\)"
(declare (doc-string 3) (indent defun))
(unless (stringp docstring)
(push docstring body)
(setq docstring nil))
(let (where-alist)
(while (keywordp (car body))
(push `(cons ,(pop body) (doom-enlist ,(pop body)))
where-alist))
`(progn
(defun ,symbol ,arglist ,docstring ,@body)
,(when where-alist
`(dolist (targets (list ,@(nreverse where-alist)))
(dolist (target (cdr targets))
(advice-add target (car targets) #',symbol)))))))
(provide 'core-lib) (provide 'core-lib)
;;; core-lib.el ends here ;;; core-lib.el ends here

View file

@ -85,7 +85,7 @@ missing) and shouldn't be deleted.")
("org" . ,(concat proto "://orgmode.org/elpa/"))))) ("org" . ,(concat proto "://orgmode.org/elpa/")))))
;; Don't save `package-selected-packages' to `custom-file' ;; Don't save `package-selected-packages' to `custom-file'
(def-advice! doom--package-inhibit-custom-file-a (&optional value) (defadvice! doom--package-inhibit-custom-file-a (&optional value)
:override #'package--save-selected-packages :override #'package--save-selected-packages
(if value (setq package-selected-packages value))) (if value (setq package-selected-packages value)))
@ -111,7 +111,7 @@ missing) and shouldn't be deleted.")
autoload-compute-prefixes nil) autoload-compute-prefixes nil)
;; Straight is hardcoded to operate out of ~/.emacs.d/straight. Not on my watch! ;; Straight is hardcoded to operate out of ~/.emacs.d/straight. Not on my watch!
(def-advice! doom--straight-use-local-dir-a (orig-fn &rest args) (defadvice! doom--straight-use-local-dir-a (orig-fn &rest args)
:around #'straight--emacs-dir :around #'straight--emacs-dir
(let ((user-emacs-directory doom-local-dir)) (let ((user-emacs-directory doom-local-dir))
(apply orig-fn args))) (apply orig-fn args)))

View file

@ -118,7 +118,7 @@ c) are not valid projectile projects."
(unless (executable-find "tr") (unless (executable-find "tr")
(setq projectile-git-submodule-command nil)))) (setq projectile-git-submodule-command nil))))
(def-advice! doom--projectile-cache-timers-a () (defadvice! doom--projectile-cache-timers-a ()
"Persist `projectile-projects-cache-time' across sessions, so that "Persist `projectile-projects-cache-time' across sessions, so that
`projectile-files-cache-expire' checks won't reset when restarting Emacs." `projectile-files-cache-expire' checks won't reset when restarting Emacs."
:before #'projectile-serialize-cache :before #'projectile-serialize-cache
@ -128,7 +128,7 @@ c) are not valid projectile projects."
(setq projectile-projects-cache-time (setq projectile-projects-cache-time
(projectile-unserialize doom-projectile-cache-timer-file))) (projectile-unserialize doom-projectile-cache-timer-file)))
(def-advice! doom--projectile-default-generic-command-a (orig-fn &rest args) (defadvice! doom--projectile-default-generic-command-a (orig-fn &rest args)
"If projectile can't tell what kind of project you're in, it issues an error "If projectile can't tell what kind of project you're in, it issues an error
when using many of projectile's command, e.g. `projectile-compile-command', when using many of projectile's command, e.g. `projectile-compile-command',
`projectile-run-project', `projectile-test-project', and `projectile-run-project', `projectile-test-project', and
@ -142,7 +142,7 @@ the command instead."
;; Projectile root-searching functions can cause an infinite loop on TRAMP ;; Projectile root-searching functions can cause an infinite loop on TRAMP
;; connections, so disable them. ;; connections, so disable them.
;; TODO Is this still necessary? ;; TODO Is this still necessary?
(def-advice! doom--projectile-locate-dominating-file-a (orig-fn file name) (defadvice! doom--projectile-locate-dominating-file-a (orig-fn file name)
"Don't traverse the file system if on a remote connection." "Don't traverse the file system if on a remote connection."
:around #'projectile-locate-dominating-file :around #'projectile-locate-dominating-file
(when (and (stringp file) (when (and (stringp file)

View file

@ -217,7 +217,7 @@ read-only or not file-visiting."
(setq confirm-nonexistent-file-or-buffer t) (setq confirm-nonexistent-file-or-buffer t)
(def-advice! doom-switch-to-fallback-buffer-maybe-a (orig-fn) (defadvice! doom--switch-to-fallback-buffer-maybe-a (orig-fn)
"Switch to `doom-fallback-buffer' if on last real buffer. "Switch to `doom-fallback-buffer' if on last real buffer.
Advice for `kill-current-buffer'. If in a dedicated window, delete it. If there Advice for `kill-current-buffer'. If in a dedicated window, delete it. If there
@ -457,8 +457,8 @@ treat Emacs as a non-application window."
all-the-icons-material all-the-icons-material
all-the-icons-alltheicon) all-the-icons-alltheicon)
:init :init
(def-advice! doom--disable-all-the-icons-in-tty-a (orig-fn &rest args) (defadvice! doom--disable-all-the-icons-in-tty-a (orig-fn &rest args)
"all-the-icons doesn't work in the terminal, so we \"disable\" them." "Return a blank string in tty Emacs, which doesn't support multiple fonts."
:around '(all-the-icons-octicon all-the-icons-material :around '(all-the-icons-octicon all-the-icons-material
all-the-icons-faicon all-the-icons-fileicon all-the-icons-faicon all-the-icons-fileicon
all-the-icons-wicon all-the-icons-alltheicon) all-the-icons-wicon all-the-icons-alltheicon)
@ -620,14 +620,14 @@ Fonts are specified by `doom-font', `doom-variable-pitch-font',
(let ((doom--prefer-theme-elc t)) (let ((doom--prefer-theme-elc t))
(load-theme doom-theme t))))) (load-theme doom-theme t)))))
(def-advice! doom--run-load-theme-hooks-a (theme &optional _no-confirm no-enable) (defadvice! doom--run-load-theme-hooks-a (theme &optional _no-confirm no-enable)
"Set up `doom-load-theme-hook' to run after `load-theme' is called." "Set up `doom-load-theme-hook' to run after `load-theme' is called."
:after #'load-theme :after #'load-theme
(unless no-enable (unless no-enable
(setq doom-theme theme) (setq doom-theme theme)
(run-hooks 'doom-load-theme-hook))) (run-hooks 'doom-load-theme-hook)))
(def-advice! doom--prefer-compiled-theme-a (orig-fn &rest args) (defadvice! doom--prefer-compiled-theme-a (orig-fn &rest args)
"Make `load-theme' prioritize the byte-compiled theme for a moderate boost in "Make `load-theme' prioritize the byte-compiled theme for a moderate boost in
startup (or theme switch) time, so long as `doom--prefer-theme-elc' is non-nil." startup (or theme switch) time, so long as `doom--prefer-theme-elc' is non-nil."
:around #'load-theme :around #'load-theme

View file

@ -92,7 +92,8 @@ playback.")
(add-hook 'circe-channel-mode-hook #'turn-on-visual-line-mode) (add-hook 'circe-channel-mode-hook #'turn-on-visual-line-mode)
(def-advice! +irc-circe-disconnect-hook-a (&rest _) (defadvice! +irc--circe-run-disconnect-hook-a (&rest _)
"Runs `+irc-disconnect-hook' after circe disconnects."
:after #'circe--irc-conn-disconnected :after #'circe--irc-conn-disconnected
(run-hooks '+irc-disconnect-hook)) (run-hooks '+irc-disconnect-hook))

View file

@ -27,7 +27,7 @@
;; Allow users to switch between backends on the fly. E.g. C-x C-s followed ;; Allow users to switch between backends on the fly. E.g. C-x C-s followed
;; by C-x C-n, will switch from `company-yasnippet' to ;; by C-x C-n, will switch from `company-yasnippet' to
;; `company-dabbrev-code'. ;; `company-dabbrev-code'.
(def-advice! +company-abort-previous-a (&rest _) (defadvice! +company--abort-previous-a (&rest _)
:before #'company-begin-backend :before #'company-begin-backend
(company-abort))) (company-abort)))

View file

@ -83,7 +83,7 @@ be negative.")
:init :init
(when (and EMACS26+ (featurep! +childframe)) (when (and EMACS26+ (featurep! +childframe))
(setq helm-display-function #'+helm-posframe-display-fn) (setq helm-display-function #'+helm-posframe-display-fn)
(def-advice! +helm--fix-get-font-height-a (orig-fn position) (defadvice! +helm--fix-get-font-height-a (orig-fn position)
"Fix \"Specified window is not displaying the current buffer\" error." "Fix \"Specified window is not displaying the current buffer\" error."
:around #'posframe--get-font-height :around #'posframe--get-font-height
(ignore-errors (funcall orig-fn position)))) (ignore-errors (funcall orig-fn position))))

View file

@ -28,7 +28,7 @@
(insert "~/") (insert "~/")
(call-interactively #'self-insert-command)))) (call-interactively #'self-insert-command))))
(def-advice! +ido-sort-mtime-a () (defadvice! +ido--sort-mtime-a ()
"Sort ido filelist by mtime instead of alphabetically." "Sort ido filelist by mtime instead of alphabetically."
:override #'ido-sort-mtime :override #'ido-sort-mtime
(setq ido-temp-list (setq ido-temp-list

View file

@ -93,7 +93,7 @@ immediately runs it on the current candidate (ending the ivy session)."
(after! yasnippet (after! yasnippet
(add-to-list 'yas-prompt-functions #'+ivy-yas-prompt nil #'eq)) (add-to-list 'yas-prompt-functions #'+ivy-yas-prompt nil #'eq))
(def-advice! +ivy--inhibit-ivy-in-evil-ex-a (orig-fn &rest args) (defadvice! +ivy--inhibit-in-evil-ex-a (orig-fn &rest args)
"`ivy-completion-in-region' struggles with completing certain "`ivy-completion-in-region' struggles with completing certain
evil-ex-specific constructs, so we disable it solely in evil-ex." evil-ex-specific constructs, so we disable it solely in evil-ex."
:around #'evil-ex :around #'evil-ex

View file

@ -12,7 +12,7 @@
(use-package! expand-region (use-package! expand-region
:commands (er/contract-region er/mark-symbol er/mark-word) :commands (er/contract-region er/mark-symbol er/mark-word)
:config :config
(def-advice! doom--quit-expand-region-a () (defadvice! doom--quit-expand-region-a ()
"Properly abort an expand-region region." "Properly abort an expand-region region."
:before '(evil-escape doom/escape) :before '(evil-escape doom/escape)
(when (memq last-command '(er/expand-region er/contract-region)) (when (memq last-command '(er/expand-region er/contract-region))

View file

@ -8,7 +8,7 @@
doom-leader-key doom-localleader-key doom-leader-key doom-localleader-key
doom-leader-alt-key doom-localleader-alt-key)) doom-leader-alt-key doom-localleader-alt-key))
(def-advice! +default-evil-collection-disable-blacklist-a (orig-fn) (defadvice! +default-evil-collection-disable-blacklist-a (orig-fn)
:around #'evil-collection-vterm-toggle-send-escape ; allow binding to ESC :around #'evil-collection-vterm-toggle-send-escape ; allow binding to ESC
(let (evil-collection-key-blacklist) (let (evil-collection-key-blacklist)
(apply orig-fn))) (apply orig-fn)))

View file

@ -28,7 +28,7 @@
;; Nicer code-folding overlays (with fringe indicators) ;; Nicer code-folding overlays (with fringe indicators)
hs-set-up-overlay #'+fold-hideshow-set-up-overlay-fn) hs-set-up-overlay #'+fold-hideshow-set-up-overlay-fn)
(def-advice! +fold-hideshow-ensure-mode-a (&rest _) (defadvice! +fold--hideshow-ensure-mode-a (&rest _)
"Ensure `hs-minor-mode' is enabled." "Ensure `hs-minor-mode' is enabled."
:before '(hs-toggle-hiding hs-hide-block hs-hide-level hs-show-all hs-hide-all) :before '(hs-toggle-hiding hs-hide-block hs-hide-level hs-show-all hs-hide-all)
(unless (bound-and-true-p hs-minor-mode) (unless (bound-and-true-p hs-minor-mode)

View file

@ -107,7 +107,7 @@
;; When running edit-lines, point will return (position + 1) as a result of ;; When running edit-lines, point will return (position + 1) as a result of
;; how evil deals with regions ;; how evil deals with regions
(def-advice! +multiple-cursors-adjust-mark-for-evil-a (&rest _) (defadvice! +multiple--cursors-adjust-mark-for-evil-a (&rest _)
:before #'mc/edit-lines :before #'mc/edit-lines
(when (and (bound-and-true-p evil-mode) (when (and (bound-and-true-p evil-mode)
(not (memq evil-state '(insert emacs)))) (not (memq evil-state '(insert emacs))))

View file

@ -10,14 +10,14 @@
(defvar +objed--extra-face-remaps nil) (defvar +objed--extra-face-remaps nil)
(def-advice! +objed-add-face-remaps-a (&rest _) (defadvice! +objed--add-face-remaps-a (&rest _)
"Add extra face remaps when objed activates." "Add extra face remaps when objed activates."
:after 'objed--init :after 'objed--init
(when (memq 'objed-hl (assq 'hl-line face-remapping-alist)) (when (memq 'objed-hl (assq 'hl-line face-remapping-alist))
(push (face-remap-add-relative 'solaire-hl-line-face 'objed-hl) (push (face-remap-add-relative 'solaire-hl-line-face 'objed-hl)
+objed--extra-face-remaps))) +objed--extra-face-remaps)))
(def-advice! +objed-remove-face-remaps-a (&rest _) (defadvice! +objed--remove-face-remaps-a (&rest _)
"Remove extra face remaps when objed de-activates." "Remove extra face remaps when objed de-activates."
:after 'objed--reset :after 'objed--reset
(unless (memq 'objed-hl (assq 'hl-line face-remapping-alist)) (unless (memq 'objed-hl (assq 'hl-line face-remapping-alist))

View file

@ -75,7 +75,7 @@
:defer t :defer t
:init (setq aya-persist-snippets-dir (concat doom-etc-dir "auto-snippets/")) :init (setq aya-persist-snippets-dir (concat doom-etc-dir "auto-snippets/"))
:config :config
(def-advice! +snippets-inhibit-yas-global-mode (orig-fn &rest args) (defadvice! +snippets--inhibit-yas-global-mode (orig-fn &rest args)
"auto-yasnippet enables `yas-global-mode'. This is obnoxious for folks like "auto-yasnippet enables `yas-global-mode'. This is obnoxious for folks like
us who use yas-minor-mode and enable yasnippet more selectively. This advice us who use yas-minor-mode and enable yasnippet more selectively. This advice
swaps `yas-global-mode' with `yas-minor-mode'." swaps `yas-global-mode' with `yas-minor-mode'."

View file

@ -56,7 +56,7 @@
;; confusing than helpful. ;; confusing than helpful.
(advice-add #'dired-k--highlight-by-file-attribyte :override #'ignore) (advice-add #'dired-k--highlight-by-file-attribyte :override #'ignore)
(def-advice! +dired-interrupt-process-a (orig-fn &rest args) (defadvice! +dired--interrupt-process-a (orig-fn &rest args)
"Fixes dired-k killing git processes too abruptly, leaving behind disruptive "Fixes dired-k killing git processes too abruptly, leaving behind disruptive
.git/index.lock files." .git/index.lock files."
:around #'dired-k--start-git-status :around #'dired-k--start-git-status
@ -64,7 +64,7 @@
(symbol-function #'interrupt-process))) (symbol-function #'interrupt-process)))
(apply orig-fn args))) (apply orig-fn args)))
(def-advice! +dired-dired-k-highlight-a (orig-fn &rest args) (defadvice! +dired--dired-k-highlight-a (orig-fn &rest args)
"Butt out if the requested directory is remote (i.e. through tramp)." "Butt out if the requested directory is remote (i.e. through tramp)."
:around #'dired-k--highlight :around #'dired-k--highlight
(unless (file-remote-p default-directory) (unless (file-remote-p default-directory)
@ -84,7 +84,7 @@
(set-popup-rule! "^\\*ranger" :ignore t) (set-popup-rule! "^\\*ranger" :ignore t)
(def-advice! +dired-cleanup-header-line-a () (defadvice! +dired--cleanup-header-line-a ()
"Ranger fails to clean up `header-line-format' when it is closed, so..." "Ranger fails to clean up `header-line-format' when it is closed, so..."
:before #'ranger-revert :before #'ranger-revert
(dolist (buffer (buffer-list)) (dolist (buffer (buffer-list))
@ -93,7 +93,7 @@
(when (equal header-line-format '(:eval (ranger-header-line))) (when (equal header-line-format '(:eval (ranger-header-line)))
(setq header-line-format nil)))))) (setq header-line-format nil))))))
(def-advice! +dired-cleanup-mouse1-bind-a () (defadvice! +dired--cleanup-mouse1-bind-a ()
"Ranger binds an anonymous function to mouse-1 after previewing a buffer "Ranger binds an anonymous function to mouse-1 after previewing a buffer
that prevents the user from escaping the window with the mouse. This command is that prevents the user from escaping the window with the mouse. This command is
never cleaned up if the buffer already existed before ranger was initialized, so never cleaned up if the buffer already existed before ranger was initialized, so

View file

@ -10,7 +10,7 @@
(after! git-timemachine (after! git-timemachine
;; HACK Waiting for https://gitlab.com/pidu/git-timemachine/issues/77 ;; HACK Waiting for https://gitlab.com/pidu/git-timemachine/issues/77
(def-advice! +vc-git-timemachine-show-commit-a () (defadvice! +vc--git-timemachine-show-commit-a ()
"Fix `git-timemachine-show-commit'." "Fix `git-timemachine-show-commit'."
:override #'git-timemachine-show-commit :override #'git-timemachine-show-commit
(interactive) (interactive)

View file

@ -88,9 +88,8 @@
(let ((maildir (mu4e-message-field msg :maildir))) (let ((maildir (mu4e-message-field msg :maildir)))
(format "%s" (substring maildir 1 (string-match-p "/" maildir 1))))))) (format "%s" (substring maildir 1 (string-match-p "/" maildir 1)))))))
;; Refresh the current view after marks are executed (defadvice! +mu4e--refresh-current-view-a (&rest _)
(def-advice! +mu4e-refresh-a (&rest _) :after #'mu4e-mark-execute-all :after #'mu4e-mark-execute-all (mu4e-headers-rerun-search))
(mu4e-headers-rerun-search))
(when (featurep! :tools flyspell) (when (featurep! :tools flyspell)
(add-hook 'mu4e-compose-mode-hook #'flyspell-mode)) (add-hook 'mu4e-compose-mode-hook #'flyspell-mode))

View file

@ -31,7 +31,7 @@
;; ;;
;;; Hacks ;;; Hacks
(def-advice! +chinese-org-html-paragraph-a (paragraph contents info) (defadvice! +chinese--org-html-paragraph-a (paragraph contents info)
"Join consecutive Chinese lines into a single long line without unwanted space "Join consecutive Chinese lines into a single long line without unwanted space
when exporting org-mode to html." when exporting org-mode to html."
:filter-args #'org-html-paragraph :filter-args #'org-html-paragraph

View file

@ -41,7 +41,7 @@
;; ;;
;;; Hacks ;;; Hacks
(def-advice! +japanese-org-html-paragraph-a (paragraph contents info) (defadvice! +japanese--org-html-paragraph-a (paragraph contents info)
"Join consecutive Japanese lines into a single long line without unwanted space "Join consecutive Japanese lines into a single long line without unwanted space
when exporting org-mode to html." when exporting org-mode to html."
:filter-args #'org-html-paragraph :filter-args #'org-html-paragraph

View file

@ -114,7 +114,7 @@ This marks a foldable marker for `outline-minor-mode' in elisp buffers.")
(advice-add 'describe-function-1 :after #'elisp-demos-advice-describe-function-1) (advice-add 'describe-function-1 :after #'elisp-demos-advice-describe-function-1)
(advice-add 'helpful-update :after #'elisp-demos-advice-helpful-update) (advice-add 'helpful-update :after #'elisp-demos-advice-helpful-update)
:config :config
(def-advice! +emacs-lisp-elisp-demos--search-a (orig-fn symbol) (defadvice! +emacs-lisp--add-doom-elisp-demos-a (orig-fn symbol)
"Add Doom's own demos to help buffers." "Add Doom's own demos to help buffers."
:around #'elisp-demos--search :around #'elisp-demos--search
(or (funcall orig-fn symbol) (or (funcall orig-fn symbol)

View file

@ -19,15 +19,16 @@
(set-company-backend! 'dante-mode #'dante-company) (set-company-backend! 'dante-mode #'dante-company)
(defun +haskell*restore-modified-state (orig-fn &rest args) (defadvice! +haskell--restore-modified-state-a (orig-fn &rest args)
"Dante quietly saves the current buffer (without triggering save hooks) before "Marks the buffer as falsely modified.
Dante quietly saves the current buffer (without triggering save hooks) before
invoking flycheck, unexpectedly leaving the buffer in an unmodified state. This invoking flycheck, unexpectedly leaving the buffer in an unmodified state. This
is annoying if we depend on save hooks to do work on the buffer (like is annoying if we depend on save hooks to do work on the buffer (like
reformatting), so we restore a (false) modified state." reformatting)."
:around #'dante-async-load-current-buffer
(let ((modified-p (buffer-modified-p))) (let ((modified-p (buffer-modified-p)))
(apply orig-fn args) (apply orig-fn args)
(if modified-p (set-buffer-modified-p t)))) (if modified-p (set-buffer-modified-p t))))
(advice-add #'dante-async-load-current-buffer :around #'+haskell*restore-modified-state)
(when (featurep 'evil) (when (featurep 'evil)
(add-hook 'dante-mode-hook #'evil-normalize-keymaps)) (add-hook 'dante-mode-hook #'evil-normalize-keymaps))

View file

@ -12,7 +12,7 @@ nimsuggest isn't installed."
(when IS-WINDOWS (when IS-WINDOWS
;; TODO File PR/report upstream (https://github.com/nim-lang/nim-mode) ;; TODO File PR/report upstream (https://github.com/nim-lang/nim-mode)
(def-advice! +nim--suggest-get-dirty-dir-a () (defadvice! +nim--suggest-get-dirty-dir-a ()
"The original `nimsuggest--get-dirty-dir' incorrectly extracts the frame "The original `nimsuggest--get-dirty-dir' incorrectly extracts the frame
number from the string representation of `selected-frame', which can contain number from the string representation of `selected-frame', which can contain
characters that are illegal on Windows, causing invalid argument errors when characters that are illegal on Windows, causing invalid argument errors when
@ -24,7 +24,7 @@ characters that are illegal on Windows, causing invalid argument errors when
(file-name-as-directory (concat nimsuggest-dirty-directory frame-num-str)))) (file-name-as-directory (concat nimsuggest-dirty-directory frame-num-str))))
;; TODO File PR/report upstream (https://github.com/nim-lang/nim-mode) ;; TODO File PR/report upstream (https://github.com/nim-lang/nim-mode)
(def-advice! +nim--suggest-get-temp-file-name-a (path) (defadvice! +nim--suggest-get-temp-file-name-a (path)
"Removes invalid characters from the temp file path, including the unicode "Removes invalid characters from the temp file path, including the unicode
character that colon is replaced with, which is known to cause issues on character that colon is replaced with, which is known to cause issues on
windows." windows."

View file

@ -137,14 +137,14 @@ when executed.")
take one argument (the language specified in the src block, as a string). Stops take one argument (the language specified in the src block, as a string). Stops
at the first function to return non-nil.") at the first function to return non-nil.")
(def-advice! +org--src-lazy-load-library-a (lang) (defadvice! +org--src-lazy-load-library-a (lang)
"Lazy load a babel package to ensure syntax highlighting." "Lazy load a babel package to ensure syntax highlighting."
:before #'org-src--get-lang-mode :before #'org-src--get-lang-mode
(or (cdr (assoc lang org-src-lang-modes)) (or (cdr (assoc lang org-src-lang-modes))
(fboundp (intern-soft (format "%s-mode" lang))) (fboundp (intern-soft (format "%s-mode" lang)))
(require (intern-soft (format "ob-%s" lang)) nil t))) (require (intern-soft (format "ob-%s" lang)) nil t)))
(def-advice! +org--babel-lazy-load-library-a (info) (defadvice! +org--babel-lazy-load-library-a (info)
"Load babel libraries lazily when babel blocks are executed." "Load babel libraries lazily when babel blocks are executed."
:after-while #'org-babel-confirm-evaluate :after-while #'org-babel-confirm-evaluate
(let* ((lang (nth 0 info)) (let* ((lang (nth 0 info))
@ -218,7 +218,7 @@ Is relative to `org-directory', unless it is absolute. Is used in Doom's default
(file+headline +org-capture-project-notes-file "Unreleased") (file+headline +org-capture-project-notes-file "Unreleased")
"* TODO %?\n%i\n%a" :prepend t :kill-buffer t))) "* TODO %?\n%i\n%a" :prepend t :kill-buffer t)))
(def-advice! +org-capture-expand-variable-file-a (file) (defadvice! +org--capture-expand-variable-file-a (file)
"If a variable is used for a file path in `org-capture-template', it is used "If a variable is used for a file path in `org-capture-template', it is used
as is, and expanded relative to `default-directory'. This changes it to be as is, and expanded relative to `default-directory'. This changes it to be
relative to `org-directory', unless it is an absolute path." relative to `org-directory', unless it is an absolute path."
@ -227,7 +227,7 @@ relative to `org-directory', unless it is an absolute path."
(expand-file-name (symbol-value file) org-directory) (expand-file-name (symbol-value file) org-directory)
file)) file))
(def-advice! +org--prevent-save-prompts-when-refiling-a (&rest _) (defadvice! +org--prevent-save-prompts-when-refiling-a (&rest _)
"Fix #462: when refiling from org-capture, Emacs prompts to kill the "Fix #462: when refiling from org-capture, Emacs prompts to kill the
underlying, modified buffer. This fixes that." underlying, modified buffer. This fixes that."
:after 'org-refile :after 'org-refile
@ -314,7 +314,7 @@ path too.")
;; place, and I want to be able to refer back to old exports if needed. ;; place, and I want to be able to refer back to old exports if needed.
(setq +org-export-directory (expand-file-name +org-export-directory org-directory)) (setq +org-export-directory (expand-file-name +org-export-directory org-directory))
(def-advice! +org--export-output-file-name-a (args) (defadvice! +org--export-output-file-name-a (args)
"Return a centralized export location unless one is provided or the current "Return a centralized export location unless one is provided or the current
file isn't in `org-directory'." file isn't in `org-directory'."
:filter-args #'org-export-output-file-name :filter-args #'org-export-output-file-name
@ -445,7 +445,7 @@ file isn't in `org-directory'."
conditions where a window's buffer hasn't changed at the time this hook is run." conditions where a window's buffer hasn't changed at the time this hook is run."
(run-at-time 0.1 nil #'recenter))) (run-at-time 0.1 nil #'recenter)))
(def-advice! +org--strip-properties-from-outline-a (orig-fn path &optional width prefix separator) (defadvice! +org--strip-properties-from-outline-a (orig-fn path &optional width prefix separator)
"Remove link syntax and fix variable height text (e.g. org headings) in the "Remove link syntax and fix variable height text (e.g. org headings) in the
eldoc string." eldoc string."
:around #'org-format-outline-path :around #'org-format-outline-path
@ -471,7 +471,7 @@ the current workspace."
(get-current-persp) (get-current-persp)
nil))))) nil)))))
(def-advice! +org--exclude-agenda-buffers-from-recentf-a (orig-fn file) (defadvice! +org--exclude-agenda-buffers-from-recentf-a (orig-fn file)
"Prevent temporarily opened agenda buffers from polluting recentf." "Prevent temporarily opened agenda buffers from polluting recentf."
:around #'org-get-agenda-file-buffer :around #'org-get-agenda-file-buffer
(let ((recentf-exclude (list (lambda (_file) t)))) (let ((recentf-exclude (list (lambda (_file) t))))
@ -719,7 +719,7 @@ between the two."
browsers) can invoke specialized behavior from Emacs. Normally you'd simply browsers) can invoke specialized behavior from Emacs. Normally you'd simply
require `org-protocol' and use it, but the package loads all of org for no require `org-protocol' and use it, but the package loads all of org for no
compelling reason, so..." compelling reason, so..."
(def-advice! +org--server-visit-files-a (args) (defadvice! +org--server-visit-files-a (args)
"Advise `server-visit-flist' to invoke `org-protocol' lazily." "Advise `server-visit-flist' to invoke `org-protocol' lazily."
:filter-args #'server-visit-files :filter-args #'server-visit-files
(cl-destructuring-bind (files proc &optional nowait) args (cl-destructuring-bind (files proc &optional nowait) args
@ -853,7 +853,7 @@ compelling reason, so..."
;;; Packages ;;; Packages
(after! toc-org (after! toc-org
(setq toc-org-hrefify-default "gh") (setq toc-org-hrefify-default "gh")
(def-advice! +org-unfold-toc-a (&rest _) (defadvice! +org--unfold-toc-a (&rest _)
:before #'toc-org-insert-toc :before #'toc-org-insert-toc
(save-excursion (save-excursion
(when (re-search-forward toc-org-toc-org-regexp (point-max) t) (when (re-search-forward toc-org-toc-org-regexp (point-max) t)
@ -882,7 +882,8 @@ compelling reason, so..."
:commands org-clock-save :commands org-clock-save
:init :init
(setq org-clock-persist t) (setq org-clock-persist t)
(def-advice! +org-clock-load-a (&rest _) (defadvice! +org--clock-load-a (&rest _)
"Lazy load org-clock until its commands are used."
:before '(org-clock-in :before '(org-clock-in
org-clock-out org-clock-out
org-clock-in-last org-clock-in-last

View file

@ -22,7 +22,7 @@
;; Handle non-image files a little differently. Images should be inserted ;; Handle non-image files a little differently. Images should be inserted
;; as-is, as image previews. Other files, like pdfs or zips, should be linked ;; as-is, as image previews. Other files, like pdfs or zips, should be linked
;; to, with an icon indicating the type of file. ;; to, with an icon indicating the type of file.
(def-advice! +org-dragndrop-insert-link-a (_link filename) (defadvice! +org--dragndrop-insert-link-a (_link filename)
"Produces and inserts a link to FILENAME into the document. "Produces and inserts a link to FILENAME into the document.
If FILENAME is an image, produce an attach:%s path, otherwise use file:%s (with If FILENAME is an image, produce an attach:%s path, otherwise use file:%s (with
@ -50,7 +50,7 @@ an file icon produced by `+org-attach--icon')."
(file-name-nondirectory (directory-file-name filename))))))) (file-name-nondirectory (directory-file-name filename)))))))
(advice-add #'org-download--dir-2 :override #'ignore) (advice-add #'org-download--dir-2 :override #'ignore)
(def-advice! +org-dragndrop-download-fullname-a (path) (defadvice! +org--dragndrop-download-fullname-a (path)
"Write PATH relative to current file." "Write PATH relative to current file."
:filter-return #'org-download--fullname :filter-return #'org-download--fullname
(let ((dir (or (if buffer-file-name (file-name-directory buffer-file-name)) (let ((dir (or (if buffer-file-name (file-name-directory buffer-file-name))

View file

@ -54,7 +54,7 @@
;; `rustic-setup-rls' uses `package-installed-p' unnecessarily, which breaks ;; `rustic-setup-rls' uses `package-installed-p' unnecessarily, which breaks
;; because Doom lazy loads package.el. ;; because Doom lazy loads package.el.
(def-advice! +rust--disable-package-call-a (orig-fn &rest args) (defadvice! +rust--disable-package-call-a (orig-fn &rest args)
:around #'rustic-setup-rls :around #'rustic-setup-rls
(cl-letf (((symbol-function 'package-installed-p) (cl-letf (((symbol-function 'package-installed-p)
(symbol-function 'ignore))) (symbol-function 'ignore)))

View file

@ -69,7 +69,7 @@
(set-popup-rule! "^\\*\\(?:trepanjs:\\(?:g\\|zsh\\|bash\\)db\\|pdb \\)" (set-popup-rule! "^\\*\\(?:trepanjs:\\(?:g\\|zsh\\|bash\\)db\\|pdb \\)"
:size 20 :select nil :quit nil) :size 20 :select nil :quit nil)
(def-advice! +debugger-cleanup-after-realgud-a (&optional buf) (defadvice! +debugger--cleanup-after-realgud-a (&optional buf)
"Kill command buffer when debugging session ends (which closes its popup)." "Kill command buffer when debugging session ends (which closes its popup)."
:after #'realgud:terminate :after #'realgud:terminate
(when (stringp buf) (when (stringp buf)
@ -81,7 +81,7 @@
;; Monkey-patch `realgud:run-process' to run in a popup. ;; Monkey-patch `realgud:run-process' to run in a popup.
;; TODO Find a more elegant solution ;; TODO Find a more elegant solution
;; FIXME Causes realgud:cmd-* to focus popup on every invocation ;; FIXME Causes realgud:cmd-* to focus popup on every invocation
(def-advice! +debugger-realgud-run-process-a (defadvice! +debugger--realgud-open-in-other-window-a
(debugger-name script-filename cmd-args minibuffer-history-var &optional no-reset) (debugger-name script-filename cmd-args minibuffer-history-var &optional no-reset)
:override #'realgud:run-process :override #'realgud:run-process
(let* ((cmd-buf (apply #'realgud-exec-shell debugger-name script-filename (let* ((cmd-buf (apply #'realgud-exec-shell debugger-name script-filename

View file

@ -29,14 +29,14 @@ buffer/window/frame switch, which is less expensive."
nil `((,(regexp-opt +direnv--keywords 'symbols) nil `((,(regexp-opt +direnv--keywords 'symbols)
(0 font-lock-keyword-face)))))) (0 font-lock-keyword-face))))))
(def-advice! +direnv--update-a (&rest _) (defadvice! +direnv--update-a (&rest _)
"Update direnv. Useful to advise functions that may run "Update direnv. Useful to advise functions that may run
environment-sensitive logic like `flycheck-default-executable-find'. This fixes environment-sensitive logic like `flycheck-default-executable-find'. This fixes
flycheck issues with direnv and on nix." flycheck issues with direnv and on nix."
:before #'flycheck-default-executable-find :before #'flycheck-default-executable-find
(direnv--maybe-update-environment)) (direnv--maybe-update-environment))
(def-advice! +direnv--fail-gracefully-a (orig-fn) (defadvice! +direnv--fail-gracefully-a (orig-fn)
"Don't try to update direnv if the executable isn't present." "Don't try to update direnv if the executable isn't present."
:around #'direnv--maybe-update-environment :around #'direnv--maybe-update-environment
(if (executable-find "direnv") (if (executable-find "direnv")

View file

@ -20,7 +20,7 @@
(use-package! editorconfig (use-package! editorconfig
:after-call (doom-switch-buffer-hook after-find-file) :after-call (doom-switch-buffer-hook after-find-file)
:config :config
(def-advice! +editorconfig-smart-detection-a (orig-fn) (defadvice! +editorconfig--smart-detection-a (orig-fn)
"Retrieve the properties for the current file. If it doesn't have an "Retrieve the properties for the current file. If it doesn't have an
extension, try to guess one." extension, try to guess one."
:around #'editorconfig-call-editorconfig-exec :around #'editorconfig-call-editorconfig-exec

View file

@ -13,7 +13,7 @@
(set-popup-rule! "^\\*quickrun" :size 0.3 :ttl 0) (set-popup-rule! "^\\*quickrun" :size 0.3 :ttl 0)
(def-advice! +eval-quickrun-auto-close-a (&rest _) (defadvice! +eval--quickrun-auto-close-a (&rest _)
"Allows us to silently re-run quickrun from within the quickrun buffer." "Allows us to silently re-run quickrun from within the quickrun buffer."
:before '(quickrun quickrun-region) :before '(quickrun quickrun-region)
(when-let (win (get-buffer-window quickrun--buffer-name)) (when-let (win (get-buffer-window quickrun--buffer-name))
@ -22,7 +22,7 @@
(message "")) (message ""))
(delete-window win))) (delete-window win)))
(def-advice! +eval-quickrun--outputter-replace-region-a () (defadvice! +eval--quickrun-fix-evil-visual-region-a ()
"Make `quickrun-replace-region' recognize evil visual selections." "Make `quickrun-replace-region' recognize evil visual selections."
:override #'quickrun--outputter-replace-region :override #'quickrun--outputter-replace-region
(let ((output (buffer-substring-no-properties (point-min) (point-max)))) (let ((output (buffer-substring-no-properties (point-min) (point-max))))

View file

@ -9,7 +9,7 @@
(set-popup-rule! "^\\*gist-" :ignore t) (set-popup-rule! "^\\*gist-" :ignore t)
(def-advice! +gist-list-render-a (orig-fn &rest args) (defadvice! +gist--open-in-popup-a (orig-fn &rest args)
:around #'gist-list-render :around #'gist-list-render
(funcall orig-fn (car args) t) (funcall orig-fn (car args) t)
(unless (cadr args) (unless (cadr args)

View file

@ -108,7 +108,7 @@ this list.")
;; xref to be one too. ;; xref to be one too.
(remove-hook 'xref-backend-functions #'etags--xref-backend) (remove-hook 'xref-backend-functions #'etags--xref-backend)
;; ...however, it breaks `projectile-find-tag', unless we put it back. ;; ...however, it breaks `projectile-find-tag', unless we put it back.
(def-advice! +lookup-projectile-find-tag-a (orig-fn) (defadvice! +lookup--projectile-find-tag-a (orig-fn)
:around #'projectile-find-tag :around #'projectile-find-tag
(let ((xref-backend-functions '(etags--xref-backend t))) (let ((xref-backend-functions '(etags--xref-backend t)))
(funcall orig-fn))) (funcall orig-fn)))
@ -143,7 +143,7 @@ this list.")
;; Before `gnutls' is loaded, `gnutls-algorithm-priority' is treated as a ;; Before `gnutls' is loaded, `gnutls-algorithm-priority' is treated as a
;; lexical variable, which breaks `+lookup*fix-gnutls-error' ;; lexical variable, which breaks `+lookup*fix-gnutls-error'
(defvar gnutls-algorithm-priority) (defvar gnutls-algorithm-priority)
(def-advice! +lookup-fix-gnutls-error-a (orig-fn url) (defadvice! +lookup--fix-gnutls-error-a (orig-fn url)
"Fixes integer-or-marker-p errors emitted from Emacs' url library, "Fixes integer-or-marker-p errors emitted from Emacs' url library,
particularly, the `url-retrieve-synchronously' call in particularly, the `url-retrieve-synchronously' call in
`dash-docs-read-json-from-url'. This is part of a systemic issue with Emacs 26's `dash-docs-read-json-from-url'. This is part of a systemic issue with Emacs 26's

View file

@ -86,14 +86,14 @@ It is passed a user and repository name.")
(set-popup-rule! "^\\*?[0-9]+:\\(?:new-\\|[0-9]+$\\)" :size 0.45 :modeline t :ttl 0 :quit nil) (set-popup-rule! "^\\*?[0-9]+:\\(?:new-\\|[0-9]+$\\)" :size 0.45 :modeline t :ttl 0 :quit nil)
(set-popup-rule! "^\\*\\(?:[^/]+/[^ ]+ #[0-9]+\\*$\\|Issues\\|Pull-Requests\\|forge\\)" :ignore t) (set-popup-rule! "^\\*\\(?:[^/]+/[^ ]+ #[0-9]+\\*$\\|Issues\\|Pull-Requests\\|forge\\)" :ignore t)
(def-advice! +magit--forge-get-repository-lazily-a (&rest _) (defadvice! +magit--forge-get-repository-lazily-a (&rest _)
"Make `forge-get-repository' return nil if the binary isn't built yet. "Make `forge-get-repository' return nil if the binary isn't built yet.
This prevents emacsql getting compiled, which appears to come out of the blue This prevents emacsql getting compiled, which appears to come out of the blue
and blocks Emacs for a short while." and blocks Emacs for a short while."
:before-while #'forge-get-repository :before-while #'forge-get-repository
(file-executable-p emacsql-sqlite-executable)) (file-executable-p emacsql-sqlite-executable))
(def-advice! +magit--forge-build-binary-lazily-a (&rest _) (defadvice! +magit--forge-build-binary-lazily-a (&rest _)
"Make `forge-dispatch' only build emacsql if necessary. "Make `forge-dispatch' only build emacsql if necessary.
Annoyingly, the binary gets built as soon as Forge is loaded. Since we've Annoyingly, the binary gets built as soon as Forge is loaded. Since we've
disabled that in `+magit--forge-get-repository-lazily-a', we must manually disabled that in `+magit--forge-get-repository-lazily-a', we must manually

View file

@ -14,7 +14,7 @@
(setq password-store-password-length 12) (setq password-store-password-length 12)
;; Fix hard-coded password-store location; respect PASSWORD_STORE_DIR envvar ;; Fix hard-coded password-store location; respect PASSWORD_STORE_DIR envvar
(def-advice! +pass-read-entry-a (entry) (defadvice! +pass--respect-pass-dir-envvar-a (entry)
"Return a string with the file content of ENTRY." "Return a string with the file content of ENTRY."
:override #'auth-source-pass--read-entry :override #'auth-source-pass--read-entry
(with-temp-buffer (with-temp-buffer

View file

@ -3,7 +3,7 @@
(after! prodigy (after! prodigy
(set-evil-initial-state! 'prodigy-mode 'emacs) (set-evil-initial-state! 'prodigy-mode 'emacs)
(def-advice! +prodigy-services-a (orig-fn &rest args) (defadvice! +prodigy--add-project-property-a (orig-fn &rest args)
"Adds a new :project property to prodigy services, which hides the service "Adds a new :project property to prodigy services, which hides the service
unless invoked from the relevant project." unless invoked from the relevant project."
:around #'prodigy-services :around #'prodigy-services

View file

@ -55,7 +55,7 @@ open a file."
;; this is necessary in case the user opens emacs with file arguments ;; this is necessary in case the user opens emacs with file arguments
(advice-add 'after-find-file :before #'+wakatime-autostart-h)) (advice-add 'after-find-file :before #'+wakatime-autostart-h))
(def-advice! +wakatime-append-options-a (ret) (defadvice! +wakatime--append-options-a (ret)
"Modifies the wakatime command string so that `+wakatime-hide-filenames' and "Modifies the wakatime command string so that `+wakatime-hide-filenames' and
`+wakatime-home' are respected." `+wakatime-home' are respected."
:filter-return #'wakatime-client-command :filter-return #'wakatime-client-command

View file

@ -82,7 +82,7 @@
(defun +doom-disable-fringes-in-minibuffer-h (&rest _) (defun +doom-disable-fringes-in-minibuffer-h (&rest _)
(set-window-fringes (minibuffer-window) 0 0 nil))) (set-window-fringes (minibuffer-window) 0 0 nil)))
(def-advice! +doom--no-fringes-in-which-key-buffer-a (&rest _) (defadvice! +doom--no-fringes-in-which-key-buffer-a (&rest _)
:after 'which-key--show-buffer-side-window :after 'which-key--show-buffer-side-window
(+doom-disable-fringes-in-minibuffer-h) (+doom-disable-fringes-in-minibuffer-h)
(set-window-fringes (get-buffer-window which-key--buffer) 0 0 nil)) (set-window-fringes (get-buffer-window which-key--buffer) 0 0 nil))

View file

@ -59,7 +59,7 @@
;; Some functions modify the buffer, causing the modeline to show a false ;; Some functions modify the buffer, causing the modeline to show a false
;; modified state, so force them to behave. ;; modified state, so force them to behave.
(def-advice! +modeline--inhibit-modification-hooks-a (orig-fn &rest args) (defadvice! +modeline--inhibit-modification-hooks-a (orig-fn &rest args)
:around #'ws-butler-after-save :around #'ws-butler-after-save
(with-silent-modifications (apply orig-fn args)))) (with-silent-modifications (apply orig-fn args))))

View file

@ -49,7 +49,7 @@
(defun +neotree-fix-cursor-h (&rest _) (defun +neotree-fix-cursor-h (&rest _)
(with-current-buffer neo-global--buffer (with-current-buffer neo-global--buffer
(+neotree*indent-cursor)))) (+neotree*indent-cursor))))
(def-advice! +neotree-indent-cursor-a (&rest _) (defadvice! +neotree--indent-cursor-a (&rest _)
:after '(neotree-next-line neotree-previous-line) :after '(neotree-next-line neotree-previous-line)
(beginning-of-line) (beginning-of-line)
(skip-chars-forward " \t\r"))) (skip-chars-forward " \t\r")))

View file

@ -38,7 +38,7 @@
;;;###package company ;;;###package company
(def-advice! +popup--dont-select-me-a (orig-fn &rest args) (defadvice! +popup--dont-select-me-a (orig-fn &rest args)
:around #'company-show-doc-buffer :around #'company-show-doc-buffer
(let ((+popup--inhibit-select t)) (let ((+popup--inhibit-select t))
(apply orig-fn args))) (apply orig-fn args)))
@ -50,7 +50,7 @@
;; When eshell runs a visual command (see `eshell-visual-commands'), it spawns ;; When eshell runs a visual command (see `eshell-visual-commands'), it spawns
;; a term buffer to run it in, but where it spawns it is the problem... ;; a term buffer to run it in, but where it spawns it is the problem...
(def-advice! +popup--eshell-undedicate-popup (&rest _) (defadvice! +popup--eshell-undedicate-popup (&rest _)
"Force spawned term buffer to share with the eshell popup (if necessary)." "Force spawned term buffer to share with the eshell popup (if necessary)."
:before #'eshell-exec-visual :before #'eshell-exec-visual
(when (+popup-window-p) (when (+popup-window-p)
@ -62,7 +62,7 @@
;;;###package evil ;;;###package evil
(progn (progn
;; Make evil-mode cooperate with popups ;; Make evil-mode cooperate with popups
(def-advice! +popup--evil-command-window-a (hist cmd-key execute-fn) (defadvice! +popup--evil-command-window-a (hist cmd-key execute-fn)
"Monkey patch the evil command window to use `pop-to-buffer' instead of "Monkey patch the evil command window to use `pop-to-buffer' instead of
`switch-to-buffer', allowing the popup manager to handle it." `switch-to-buffer', allowing the popup manager to handle it."
:override #'evil-command-window :override #'evil-command-window
@ -81,7 +81,7 @@
(evil-command-window-mode) (evil-command-window-mode)
(evil-command-window-insert-commands hist))) (evil-command-window-insert-commands hist)))
(def-advice! +popup--evil-command-window-execute-a () (defadvice! +popup--evil-command-window-execute-a ()
"Execute the command under the cursor in the appropriate buffer, rather than "Execute the command under the cursor in the appropriate buffer, rather than
the command buffer." the command buffer."
:override #'evil-command-window-execute :override #'evil-command-window-execute
@ -150,7 +150,7 @@ the command buffer."
;;;###package helpful ;;;###package helpful
(def-advice! +popup--helpful-open-in-origin-window-a (button) (defadvice! +popup--helpful-open-in-origin-window-a (button)
"Open links in non-popup, originating window rather than helpful's window." "Open links in non-popup, originating window rather than helpful's window."
:override #'helpful--navigate :override #'helpful--navigate
(let ((path (substring-no-properties (button-get button 'path))) (let ((path (substring-no-properties (button-get button 'path)))
@ -172,7 +172,7 @@ the command buffer."
(setq helm-default-display-buffer-functions '(+popup-display-buffer-stacked-side-window-fn)) (setq helm-default-display-buffer-functions '(+popup-display-buffer-stacked-side-window-fn))
;; Fix #897: "cannot open side window" error when TAB-completing file links ;; Fix #897: "cannot open side window" error when TAB-completing file links
(def-advice! +popup--helm-hide-org-links-popup-a (orig-fn &rest args) (defadvice! +popup--helm-hide-org-links-popup-a (orig-fn &rest args)
:around #'org-insert-link :around #'org-insert-link
(cl-letf* ((old-org-completing-read (symbol-function 'org-completing-read)) (cl-letf* ((old-org-completing-read (symbol-function 'org-completing-read))
((symbol-function 'org-completing-read) ((symbol-function 'org-completing-read)
@ -191,7 +191,7 @@ the command buffer."
(apply orig-fn args))) (apply orig-fn args)))
;; Fix left-over popup window when closing persistent help for `helm-M-x' ;; Fix left-over popup window when closing persistent help for `helm-M-x'
(def-advice! +popup--helm-elisp--persistent-help-a (candidate _fun &optional _name) (defadvice! +popup--helm-elisp--persistent-help-a (candidate _fun &optional _name)
:before #'helm-elisp--persistent-help :before #'helm-elisp--persistent-help
(let (win) (let (win)
(when (and (helm-attr 'help-running-p) (when (and (helm-attr 'help-running-p)
@ -200,7 +200,7 @@ the command buffer."
(delete-window win)))) (delete-window win))))
;; `helm-ag' ;; `helm-ag'
(def-advice! +popup--helm-pop-to-buffer-a (orig-fn &rest args) (defadvice! +popup--helm-pop-to-buffer-a (orig-fn &rest args)
:around #'helm-ag--edit :around #'helm-ag--edit
(pop-to-buffer (pop-to-buffer
(save-window-excursion (apply orig-fn args) (save-window-excursion (apply orig-fn args)
@ -212,7 +212,7 @@ the command buffer."
;;;###package Info ;;;###package Info
(def-advice! +popup--switch-to-info-window-a (&rest _) (defadvice! +popup--switch-to-info-window-a (&rest _)
:after #'info-lookup-symbol :after #'info-lookup-symbol
(when-let (win (get-buffer-window "*info*")) (when-let (win (get-buffer-window "*info*"))
(when (+popup-window-p win) (when (+popup-window-p win)
@ -234,7 +234,7 @@ the command buffer."
;; Org has a scorched-earth window management policy I'm not fond of. i.e. it ;; Org has a scorched-earth window management policy I'm not fond of. i.e. it
;; kills all other windows just so it can monopolize the frame. No thanks. We ;; kills all other windows just so it can monopolize the frame. No thanks. We
;; can do better ourselves. ;; can do better ourselves.
(def-advice! +popup-suppress-delete-other-windows-a (orig-fn &rest args) (defadvice! +popup--suppress-delete-other-windows-a (orig-fn &rest args)
:around '(org-add-log-note :around '(org-add-log-note
org-capture-place-template org-capture-place-template
org-export--dispatch-ui org-export--dispatch-ui
@ -246,7 +246,7 @@ the command buffer."
(apply orig-fn args)) (apply orig-fn args))
(apply orig-fn args))) (apply orig-fn args)))
(def-advice! +popup--org-fix-tags-window-a (orig-fn &rest args) (defadvice! +popup--org-fix-tags-window-a (orig-fn &rest args)
"Hides the mode-line in *Org tags* buffer so you can actually see its "Hides the mode-line in *Org tags* buffer so you can actually see its
content and displays it in a side window without deleting all other windows. content and displays it in a side window without deleting all other windows.
Ugh, such an ugly hack." Ugh, such an ugly hack."
@ -265,7 +265,7 @@ Ugh, such an ugly hack."
(apply orig-fn args)) (apply orig-fn args))
(apply orig-fn args))) (apply orig-fn args)))
(def-advice! +popup-org-src-pop-to-buffer-a (orig-fn buffer context) (defadvice! +popup--org-src-pop-to-buffer-a (orig-fn buffer context)
"Hand off the src-block window to the popup system by using `display-buffer' "Hand off the src-block window to the popup system by using `display-buffer'
instead of switch-to-buffer-*." instead of switch-to-buffer-*."
:around #'org-src-switch-to-buffer :around #'org-src-switch-to-buffer
@ -276,7 +276,7 @@ instead of switch-to-buffer-*."
(setq org-src-window-setup 'popup-window) (setq org-src-window-setup 'popup-window)
;; Ensure todo, agenda, and other minor popups are delegated to the popup system. ;; Ensure todo, agenda, and other minor popups are delegated to the popup system.
(def-advice! +popup-org-pop-to-buffer-a (orig-fn buf &optional norecord) (defadvice! +popup--org-pop-to-buffer-a (orig-fn buf &optional norecord)
"Use `pop-to-buffer' instead of `switch-to-buffer' to open buffer.'" "Use `pop-to-buffer' instead of `switch-to-buffer' to open buffer.'"
:around #'org-switch-to-buffer-other-window :around #'org-switch-to-buffer-other-window
(if +popup-mode (if +popup-mode
@ -287,7 +287,7 @@ instead of switch-to-buffer-*."
(setq org-agenda-window-setup 'popup-window (setq org-agenda-window-setup 'popup-window
org-agenda-restore-windows-after-quit nil) org-agenda-restore-windows-after-quit nil)
;; Don't monopolize the frame! ;; Don't monopolize the frame!
(def-advice! +popup-org-agenda-suppress-delete-other-windows-a (orig-fn &rest args) (defadvice! +popup--org-agenda-suppress-delete-other-windows-a (orig-fn &rest args)
:around #'org-agenda-prepare-window :around #'org-agenda-prepare-window
(cond ((not +popup-mode) (cond ((not +popup-mode)
(apply orig-fn args)) (apply orig-fn args))
@ -307,7 +307,7 @@ instead of switch-to-buffer-*."
;;;###package persp-mode ;;;###package persp-mode
(def-advice! +popup--persp-mode-restore-popups-a (&rest _) (defadvice! +popup--persp-mode-restore-popups-a (&rest _)
"Restore popup windows when loading a perspective from file." "Restore popup windows when loading a perspective from file."
:after #'persp-load-state-from-file :after #'persp-load-state-from-file
(dolist (window (window-list)) (dolist (window (window-list))
@ -334,7 +334,7 @@ instead of switch-to-buffer-*."
;;;###package profiler ;;;###package profiler
(def-advice! +popup--profiler-report-find-entry-in-other-window-a (orig-fn function) (defadvice! +popup--profiler-report-find-entry-in-other-window-a (orig-fn function)
:around #'profiler-report-find-entry :around #'profiler-report-find-entry
(cl-letf (((symbol-function 'find-function) (cl-letf (((symbol-function 'find-function)
(symbol-function 'find-function-other-window))) (symbol-function 'find-function-other-window)))
@ -365,7 +365,7 @@ instead of switch-to-buffer-*."
;;;###package windmove ;;;###package windmove
;; Users should be able to hop into popups easily, but Elisp shouldn't. ;; Users should be able to hop into popups easily, but Elisp shouldn't.
(def-advice! doom--ignore-window-parameters-a (orig-fn &rest args) (defadvice! +popup--ignore-window-parameters-a (orig-fn &rest args)
"Allow *interactive* window moving commands to traverse popups." "Allow *interactive* window moving commands to traverse popups."
:around '(windmove-up windmove-down windmove-left windmove-right) :around '(windmove-up windmove-down windmove-left windmove-right)
(cl-letf (((symbol-function #'windmove-find-other-window) (cl-letf (((symbol-function #'windmove-find-other-window)

View file

@ -600,8 +600,8 @@ Accepts the same arguments as `display-buffer-in-side-window'. You must set
;; Emacs backwards compatibility ;; Emacs backwards compatibility
(unless EMACS27+ (unless EMACS27+
(def-advice! +popup-set-window-dedicated-a (window) (defadvice! +popup--set-window-dedicated-a (window)
"Ensure `window--dispaly-buffer' respects `display-buffer-mark-dedicated'. "Ensure `window--display-buffer' respects `display-buffer-mark-dedicated'.
This was not so until recent Emacs 27 builds, where it causes breaking errors. This was not so until recent Emacs 27 builds, where it causes breaking errors.
This advice ensures backwards compatibility for Emacs <= 26 users." This advice ensures backwards compatibility for Emacs <= 26 users."

View file

@ -118,7 +118,7 @@ stored in `persp-save-dir'.")
(add-to-list 'persp-add-buffer-on-after-change-major-mode-filter-functions (add-to-list 'persp-add-buffer-on-after-change-major-mode-filter-functions
#'doom-unreal-buffer-p) #'doom-unreal-buffer-p)
(def-advice! +workspaces-evil-alternate-buffer-a (&optional window) (defadvice! +workspaces--evil-alternate-buffer-a (&optional window)
"Make `evil-alternate-buffer' ignore buffers outside the current workspace." "Make `evil-alternate-buffer' ignore buffers outside the current workspace."
:override #'evil-alternate-buffer :override #'evil-alternate-buffer
(let* ((prev-buffers (let* ((prev-buffers