fix: Expand org-mode defadvice! calls
This commit is contained in:
@@ -261,70 +261,98 @@ the command buffer."
|
|||||||
|
|
||||||
|
|
||||||
(with-eval-after-load 'org
|
(with-eval-after-load 'org
|
||||||
(defadvice! doom-popup--suppress-delete-other-windows-a (fn &rest args)
|
(defun doom-popup--suppress-delete-other-windows-a (fn &rest args)
|
||||||
"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 can
|
kills all other windows just so it can monopolize the frame. No thanks. We can
|
||||||
do better."
|
do better."
|
||||||
:around #'org-add-log-note
|
|
||||||
:around #'org-capture-place-template
|
|
||||||
:around #'org-export--dispatch-ui
|
|
||||||
:around #'org-agenda-get-restriction-and-command
|
|
||||||
:around #'org-goto-location
|
|
||||||
:around #'org-fast-tag-selection
|
|
||||||
:around #'org-fast-todo-selection
|
|
||||||
(if doom-popup-mode
|
(if doom-popup-mode
|
||||||
(letf! ((#'delete-other-windows #'ignore)
|
(cl-letf (((symbol-function #'delete-other-windows) #'ignore))
|
||||||
(#'delete-window #'ignore))
|
(cl-letf
|
||||||
(apply fn args))
|
(((symbol-function #'delete-window) #'ignore))
|
||||||
|
(apply fn args)))
|
||||||
(apply fn args)))
|
(apply fn args)))
|
||||||
|
|
||||||
(defadvice! doom-popup--org-fix-goto-a (fn &rest args)
|
(dolist (target (list #'org-add-log-note
|
||||||
|
#'org-capture-place-template
|
||||||
|
#'org-export--dispatch-ui
|
||||||
|
#'org-agenda-get-restriction-and-command
|
||||||
|
#'org-goto-location
|
||||||
|
#'org-fast-tag-selection
|
||||||
|
#'org-fast-todo-selection))
|
||||||
|
(advice-add target
|
||||||
|
:around #'doom-popup--suppress-delete-other-windows-a))
|
||||||
|
|
||||||
|
(defun doom-popup--org-fix-goto-a (fn &rest args)
|
||||||
"`org-goto' uses `with-output-to-temp-buffer' to display its help buffer,
|
"`org-goto' uses `with-output-to-temp-buffer' to display its help buffer,
|
||||||
for some reason, which is very unconventional, and so requires these gymnastics
|
for some reason, which is very unconventional, and so requires these gymnastics
|
||||||
to tame (i.e. to get the popup manager to handle it)."
|
to tame (i.e. to get the popup manager to handle it)."
|
||||||
:around #'org-goto-location
|
|
||||||
(if doom-popup-mode
|
(if doom-popup-mode
|
||||||
(letf! (defun internal-temp-output-buffer-show (buffer)
|
(cl-letf ((internal-temp-output-buffer-show
|
||||||
|
(symbol-function #'internal-temp-output-buffer-show)))
|
||||||
|
(ignore internal-temp-output-buffer-show)
|
||||||
|
(cl-letf (((symbol-function #'internal-temp-output-buffer-show)
|
||||||
|
(lambda (buffer)
|
||||||
(let ((temp-buffer-show-function
|
(let ((temp-buffer-show-function
|
||||||
(lambda (&rest args)
|
(lambda (&rest args)
|
||||||
(apply #'doom-popup-display-buffer-stacked-side-window-fn
|
(apply
|
||||||
|
#'doom-popup-display-buffer-stacked-side-window-fn
|
||||||
nil args))))
|
nil args))))
|
||||||
(with-current-buffer buffer
|
(with-current-buffer buffer
|
||||||
(doom-popup-buffer-mode +1))
|
(doom-popup-buffer-mode 1))
|
||||||
(funcall internal-temp-output-buffer-show buffer)))
|
(funcall internal-temp-output-buffer-show buffer)))))
|
||||||
(apply fn args))
|
|
||||||
(apply fn args)))
|
(apply fn args)))
|
||||||
|
(apply fn args)))
|
||||||
|
(advice-add #'org-goto-location
|
||||||
|
:around #'doom-popup--org-fix-goto-a)
|
||||||
|
|
||||||
(defadvice! doom-popup--org-fix-popup-window-shrinking-a (fn &rest args)
|
(defun doom-popup--org-fix-popup-window-shrinking-a (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."
|
||||||
:around #'org-fast-tag-selection
|
|
||||||
:around #'org-fast-todo-selection
|
|
||||||
(if doom-popup-mode
|
(if doom-popup-mode
|
||||||
(letf! ((defun read-char-exclusive (&rest args)
|
(cl-letf ((read-char-exclusive
|
||||||
(message nil)
|
(symbol-function #'read-char-exclusive)))
|
||||||
(apply read-char-exclusive args))
|
(ignore read-char-exclusive)
|
||||||
(defun split-window-vertically (&optional _size)
|
(cl-letf (((symbol-function #'read-char-exclusive)
|
||||||
(funcall split-window-vertically (- 0 window-min-height 1)))
|
(lambda (&rest args) (message nil)
|
||||||
(defun org-fit-window-to-buffer (&optional window max-height min-height shrink-only)
|
(apply read-char-exclusive args))))
|
||||||
(when-let (buf (window-buffer window))
|
(cl-letf ((split-window-vertically
|
||||||
|
(symbol-function #'split-window-vertically)))
|
||||||
|
(ignore split-window-vertically)
|
||||||
|
(cl-letf (((symbol-function #'split-window-vertically)
|
||||||
|
(lambda (&optional _size)
|
||||||
|
(funcall split-window-vertically
|
||||||
|
(- 0 window-min-height 1)))))
|
||||||
|
(cl-letf ((org-fit-window-to-buffer
|
||||||
|
(symbol-function #'org-fit-window-to-buffer)))
|
||||||
|
(ignore org-fit-window-to-buffer)
|
||||||
|
(cl-letf (((symbol-function #'org-fit-window-to-buffer)
|
||||||
|
(lambda (&optional window max-height
|
||||||
|
min-height shrink-only)
|
||||||
|
(when-let* ((buf (window-buffer window)))
|
||||||
(with-current-buffer buf
|
(with-current-buffer buf
|
||||||
(doom-popup-buffer-mode)))
|
(doom-popup-buffer-mode)))
|
||||||
(when (> (window-buffer-height window)
|
(when (> (window-buffer-height window)
|
||||||
(window-height window))
|
(window-height window))
|
||||||
(fit-window-to-buffer window (window-buffer-height window)))))
|
(fit-window-to-buffer
|
||||||
(apply fn args))
|
window
|
||||||
|
(window-buffer-height window))))))
|
||||||
|
(apply fn args)))))))
|
||||||
(apply fn args)))
|
(apply fn args)))
|
||||||
|
(dolist (target (list #'org-fast-tag-selection
|
||||||
|
#'org-fast-todo-selection))
|
||||||
|
(advice-add target
|
||||||
|
:around #'doom-popup--org-fix-popup-window-shrinking-a))
|
||||||
|
|
||||||
(defadvice! doom-popup--org-edit-src-exit-a (fn &rest args)
|
(defun doom-popup--org-edit-src-exit-a (fn &rest args)
|
||||||
"If you switch workspaces or the src window is recreated..."
|
"If you switch workspaces or the src window is recreated..."
|
||||||
:around #'org-edit-src-exit
|
|
||||||
(let* ((window (selected-window))
|
(let* ((window (selected-window))
|
||||||
(popup-p (doom-popup-window-p window)))
|
(popup-p (doom-popup-window-p window)))
|
||||||
(prog1 (apply fn args)
|
(prog1 (apply fn args)
|
||||||
(when (and popup-p (window-live-p window))
|
(when (and popup-p (window-live-p window))
|
||||||
(delete-window window))))))
|
(delete-window window)))))
|
||||||
|
(advice-add #'org-edit-src-exit
|
||||||
|
:around #'doom-popup--org-edit-src-exit-a))
|
||||||
|
|
||||||
;;;###package org-journal
|
;;;###package org-journal
|
||||||
(with-eval-after-load 'org-journal
|
(with-eval-after-load 'org-journal
|
||||||
|
|||||||
Reference in New Issue
Block a user