mirror of
https://github.com/pestctrl/emacs-config.git
synced 2026-02-16 16:24:18 +00:00
Though, this is more my style I think
This commit is contained in:
parent
c6d81e50ce
commit
189f8a1b34
2 changed files with 44 additions and 29 deletions
|
|
@ -78,22 +78,22 @@
|
|||
(slot . 6)
|
||||
(window-width . 80)))
|
||||
|
||||
(require 'org-capture)
|
||||
;; (require 'org-capture)
|
||||
|
||||
(defun my/is-org-capture-buffer (buffer &optional _rest)
|
||||
(with-current-buffer buffer
|
||||
(and (eq major-mode 'org-mode)
|
||||
org-capture-mode)))
|
||||
;; (defun my/is-org-capture-buffer (buffer &optional _rest)
|
||||
;; (with-current-buffer (get-buffer buffer)
|
||||
;; (and (eq major-mode 'org-mode)
|
||||
;; org-capture-mode)))
|
||||
|
||||
(add-to-list 'display-buffer-alist
|
||||
`(my/is-org-capture-buffer
|
||||
display-buffer-in-side-window
|
||||
(side . left)
|
||||
(select . t)
|
||||
(window-width . 85)
|
||||
(window-parameters
|
||||
. ((no-delete-other-windows . t)
|
||||
(dedicated . t)))))
|
||||
;; (add-to-list 'display-buffer-alist
|
||||
;; `(my/is-org-capture-buffer
|
||||
;; display-buffer-in-side-window
|
||||
;; (side . left)
|
||||
;; (select . t)
|
||||
;; (window-width . 85)
|
||||
;; (window-parameters
|
||||
;; . ((no-delete-other-windows . t)
|
||||
;; (dedicated . t)))))
|
||||
|
||||
;; (defun my/is-org-capture-buffer (buffer &optional _rest)
|
||||
;; (with-current-buffer buffer
|
||||
|
|
|
|||
|
|
@ -27,26 +27,41 @@
|
|||
(defun my/side-window-p (window)
|
||||
(window-parameter window 'window-side))
|
||||
|
||||
(defun my/org-capture-shouldnt-mess-windows (fun &rest args)
|
||||
(set-window-parameter (selected-window) 'window-side nil)
|
||||
(cl-letf* ((original-pop-to-buffer
|
||||
(symbol-function 'pop-to-buffer))
|
||||
(defun my/org-capture-display-use-side-window (buffer alist)
|
||||
;; I think the alist argument is never used
|
||||
(pop-to-buffer
|
||||
buffer
|
||||
|
||||
((symbol-function 'pop-to-buffer)
|
||||
(lambda (buffer &optional action norecord)
|
||||
(if (equal action '(org-display-buffer-split))
|
||||
(funcall original-pop-to-buffer buffer)
|
||||
(funcall original-pop-to-buffer buffer action norecord)))))
|
||||
(let ((window--sides-inhibit-check t))
|
||||
(apply fun args))))
|
||||
'(display-buffer-in-side-window
|
||||
(side . left)
|
||||
(window-width . 85)
|
||||
(window-parameters
|
||||
. ((no-delete-other-windows . t)
|
||||
;;(dedicated . t)
|
||||
)))))
|
||||
|
||||
(advice-add #'org-capture
|
||||
(advice-add #'org-display-buffer-split
|
||||
:override
|
||||
#'my/org-capture-display-use-side-window)
|
||||
|
||||
(defun my/window-dedicated-p (orig &optional window)
|
||||
;; Excuse me? Side windows are not dedicated.
|
||||
(or (and (not org-capture-mode)
|
||||
(funcall orig window))
|
||||
(eq (funcall orig window)
|
||||
t)))
|
||||
|
||||
(advice-add #'window-dedicated-p
|
||||
:around
|
||||
#'my/org-capture-shouldnt-mess-windows)
|
||||
#'my/window-dedicated-p)
|
||||
|
||||
(defun my/org-capture-finalize-shouldnt-mess-windows (orig &rest args)
|
||||
(cl-letf (((symbol-function 'set-window-configuration)
|
||||
#'ignore))
|
||||
(cl-letf* ((orig-set-window-configuration (symbol-function 'set-window-configuration))
|
||||
|
||||
((symbol-function 'set-window-configuration)
|
||||
#'(lambda (&rest args)
|
||||
(unless (equal (car args) (org-capture-get :return-to-wconf 'local))
|
||||
(apply orig-set-window-configuration args)))))
|
||||
(apply orig args)))
|
||||
|
||||
(advice-add #'org-capture-finalize
|
||||
|
|
|
|||
Loading…
Reference in a new issue