Commit f70e3ff42a46

Vincent Demeester <vincent@sbr.pm>
2026-07-03 23:12:21
feat(emacs): add org-agenda side-window display rules
Added display-buffer-alist rules so the agenda opens as a dedicated left side-window and org-agenda files reuse the other window instead of creating endless splits. Changed org-agenda-window-setup to other-window to work with display-buffer-alist.
1 parent a0bba1a
Changed files (1)
dots
config
emacs
dots/config/emacs/init.el
@@ -1834,7 +1834,7 @@ minibuffer, even without explicitly focusing it."
   (org-agenda-remove-tags t)
   (org-agenda-span 'day)
   (org-agenda-start-on-weekday 1)
-  (org-agenda-window-setup 'current-window)
+  (org-agenda-window-setup 'other-window)
   (org-agenda-sticky t)
   (org-agenda-sorting-strategy
    '((agenda deadline-up scheduled-up time-up todo-state-up priority-down)
@@ -1931,6 +1931,29 @@ minibuffer, even without explicitly focusing it."
 	("C-<down>" . org-shiftdown)
 	("C-c C-S-o" . vde/org-open-at-point-in-new-tab))
   :config
+  ;; Org Agenda display rules:
+  ;; - Agenda opens as a dedicated left side-window
+  ;; - Org files from agenda reuse the other (non-side) window
+  (defun vde/display-buffer-org-agenda-managed-p (buffer-name _action)
+    "Determine whether BUFFER-NAME is an org-agenda managed buffer."
+    (with-current-buffer buffer-name
+      (and (derived-mode-p 'org-mode)
+           (buffer-file-name)
+           (member (buffer-file-name) (org-agenda-files)))))
+
+  (add-to-list 'display-buffer-alist
+               '("\\*Org Agenda"
+                 (display-buffer-in-side-window)
+                 (side . left)
+                 (window-width . 0.4)
+                 (dedicated . side)
+                 (inhibit-same-window . t)))
+  (add-to-list 'display-buffer-alist
+               '(vde/display-buffer-org-agenda-managed-p
+                 (display-buffer-reuse-mode-window
+                  display-buffer-use-some-window)
+                 (inhibit-same-window . t)))
+
   ;; Unbind C-, to allow embark-act to work
   (unbind-key "C-," org-mode-map)