aboutsummaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-06-15 21:48:10 -0500
committerCraig Jennings <c@cjennings.net>2026-06-15 21:48:10 -0500
commit12fad985f6e08b4544521844ba6968ee2c1b6526 (patch)
tree82a9455bfcb1ccfccda72f159803d8b82df64e81 /modules
parentde32ffbe0d501f9dc61bc3a8889df3e207459535 (diff)
downloaddotemacs-12fad985f6e08b4544521844ba6968ee2c1b6526.tar.gz
dotemacs-12fad985f6e08b4544521844ba6968ee2c1b6526.zip
feat(ui-navigation): C-x 2/3 show the dashboard in the new window
Splitting with C-x 2 or C-x 3 now shows *dashboard* in the freshly created window and keeps point in the original, instead of mirroring the current buffer. cj/--split-show-buffer does the placement; cj/--dashboard-buffer fetches or opens the dashboard without disturbing windows.
Diffstat (limited to 'modules')
-rw-r--r--modules/ui-navigation.el28
1 files changed, 28 insertions, 0 deletions
diff --git a/modules/ui-navigation.el b/modules/ui-navigation.el
index f2181d97e..fba9153c2 100644
--- a/modules/ui-navigation.el
+++ b/modules/ui-navigation.el
@@ -103,6 +103,34 @@ nudging until any other key. Bound to `C-; b <left>/<right>/<up>/<down>'."
(consult-buffer))
(keymap-global-set "M-S-h" #'cj/split-and-follow-below) ;; was M-H
+(defun cj/--dashboard-buffer ()
+ "Return the *dashboard* buffer, creating it if needed, without changing windows."
+ (or (get-buffer "*dashboard*")
+ (save-window-excursion
+ (when (fboundp 'dashboard-open) (dashboard-open))
+ (get-buffer "*dashboard*"))))
+
+(defun cj/--split-show-buffer (split-fn buffer)
+ "Split with SPLIT-FN, show BUFFER in the new window, keep point in the current
+window. Return the new window."
+ (let ((new (funcall split-fn)))
+ (when (and (window-live-p new) buffer)
+ (set-window-buffer new buffer))
+ new))
+
+(defun cj/split-below-with-dashboard ()
+ "Split below and show the dashboard in the new window; stay in this one."
+ (interactive)
+ (cj/--split-show-buffer #'split-window-below (cj/--dashboard-buffer)))
+
+(defun cj/split-right-with-dashboard ()
+ "Split right and show the dashboard in the new window; stay in this one."
+ (interactive)
+ (cj/--split-show-buffer #'split-window-right (cj/--dashboard-buffer)))
+
+(keymap-global-set "C-x 2" #'cj/split-below-with-dashboard)
+(keymap-global-set "C-x 3" #'cj/split-right-with-dashboard)
+
;; ------------------------- Split Window Reorientation ------------------------
(defun toggle-window-split ()