parent
383d7dbddb
commit
e595f20cd0
1 changed files with 29 additions and 19 deletions
|
@ -21,6 +21,8 @@
|
|||
(defvar +doom-dashboard--old-fringe-indicator fringe-indicator-alist)
|
||||
(defvar +doom-dashboard--old-modeline nil)
|
||||
|
||||
(setq doom-fallback-buffer +doom-dashboard-name)
|
||||
|
||||
|
||||
;;
|
||||
(map! :map +doom-dashboard-mode-map
|
||||
|
@ -62,22 +64,31 @@
|
|||
|
||||
|
||||
;;
|
||||
(setq doom-fallback-buffer +doom-dashboard-name)
|
||||
(defun +doom-dashboard|init ()
|
||||
"Initialize doom-dashboard and set up its hooks; possibly open the dashboard
|
||||
if in a GUI/non-daemon session."
|
||||
(add-hook 'window-configuration-change-hook #'+doom-dashboard-reload)
|
||||
(add-hook 'kill-buffer-query-functions #'+doom-dashboard|kill-buffer-query-fn)
|
||||
(when (and (display-graphic-p) (not (daemonp)))
|
||||
(+doom-dashboard/open (selected-frame))))
|
||||
|
||||
(defun +doom-dashboard|kill-buffer-query-fn ()
|
||||
(or (not (+doom-dashboard-p))
|
||||
(ignore (ignore-errors (+doom-dashboard-reload))
|
||||
(bury-buffer))))
|
||||
|
||||
(defun +doom-dashboard|init (&rest _)
|
||||
(unless noninteractive
|
||||
(add-hook 'after-make-frame-functions #'+doom-dashboard-deferred-reload)
|
||||
(add-hook 'window-configuration-change-hook #'+doom-dashboard-reload)
|
||||
(add-hook 'kill-buffer-query-functions #'+doom-dashboard|kill-buffer-query-fn)
|
||||
(unless (daemonp)
|
||||
(+doom-dashboard/open t))))
|
||||
(defun +doom-dashboard|make-frame (frame)
|
||||
"Reload the dashboard after a brief pause. This is necessary for new frames,
|
||||
whose dimensions may not be fully initialized by the time this is run."
|
||||
(run-with-timer 0.1 nil #'+doom-dashboard/open frame))
|
||||
|
||||
(add-hook 'doom-post-init-hook #'+doom-dashboard|init)
|
||||
(add-hook 'window-setup-hook #'+doom-dashboard|init)
|
||||
(add-hook 'after-make-frame-functions #'+doom-dashboard|make-frame)
|
||||
|
||||
(defun +doom-dashboard|server-visit (&rest _)
|
||||
"Inhibit dashboard refresh when opening files via emacsclient."
|
||||
(setq +doom-dashboard-inhibit-refresh t))
|
||||
(add-hook 'server-visit-hook #'+doom-dashboard|server-visit)
|
||||
|
||||
;; Compatibility with `midnight-mode' and `clean-buffer-list'
|
||||
(after! midnight-mode
|
||||
|
@ -85,14 +96,13 @@
|
|||
(push "^\\s-*\\*doom.+" clean-buffer-list-kill-never-regexps))
|
||||
|
||||
;;
|
||||
(defun +doom-dashboard/open (&optional startup)
|
||||
"Open the dashboard buffer."
|
||||
(interactive)
|
||||
(when (or (not startup)
|
||||
(one-window-p t)
|
||||
(eq (buffer-name (window-buffer (car (window-list)))) "*scratch*"))
|
||||
(+doom-dashboard-reload)
|
||||
(switch-to-buffer (doom-fallback-buffer))))
|
||||
(defun +doom-dashboard/open (frame)
|
||||
(interactive (list (selected-frame)))
|
||||
(unless +doom-dashboard-inhibit-refresh
|
||||
(with-selected-frame frame
|
||||
(switch-to-buffer (doom-fallback-buffer))
|
||||
(+doom-dashboard-reload)))
|
||||
(setq +doom-dashboard-inhibit-refresh nil))
|
||||
|
||||
(defun +doom-dashboard-p (&optional buffer)
|
||||
"Returns t if BUFFER is the dashboard buffer."
|
||||
|
@ -112,8 +122,8 @@ whose dimensions may not be fully initialized by the time this is run."
|
|||
(defun +doom-dashboard-reload (&optional dir)
|
||||
"Update the DOOM scratch buffer (or create it, if it doesn't exist)."
|
||||
(when (and (not +doom-dashboard-inhibit-refresh)
|
||||
(not (minibuffer-window-active-p (minibuffer-window)))
|
||||
(get-buffer-window-list (doom-fallback-buffer)))
|
||||
(not (window-minibuffer-p (frame-selected-window)))
|
||||
(get-buffer-window (doom-fallback-buffer)))
|
||||
(unless +doom-dashboard-modeline
|
||||
(setq +doom-dashboard--old-modeline mode-line-format)
|
||||
(setq +doom-dashboard-modeline
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue