Fix dashboard opening over files via emacsclient

Fixes #119
This commit is contained in:
Henrik Lissner 2017-06-25 01:59:58 +02:00
parent 383d7dbddb
commit e595f20cd0
No known key found for this signature in database
GPG key ID: 5F6C0EA160557395

View file

@ -21,6 +21,8 @@
(defvar +doom-dashboard--old-fringe-indicator fringe-indicator-alist) (defvar +doom-dashboard--old-fringe-indicator fringe-indicator-alist)
(defvar +doom-dashboard--old-modeline nil) (defvar +doom-dashboard--old-modeline nil)
(setq doom-fallback-buffer +doom-dashboard-name)
;; ;;
(map! :map +doom-dashboard-mode-map (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 () (defun +doom-dashboard|kill-buffer-query-fn ()
(or (not (+doom-dashboard-p)) (or (not (+doom-dashboard-p))
(ignore (ignore-errors (+doom-dashboard-reload)) (ignore (ignore-errors (+doom-dashboard-reload))
(bury-buffer)))) (bury-buffer))))
(defun +doom-dashboard|init (&rest _) (defun +doom-dashboard|make-frame (frame)
(unless noninteractive "Reload the dashboard after a brief pause. This is necessary for new frames,
(add-hook 'after-make-frame-functions #'+doom-dashboard-deferred-reload) whose dimensions may not be fully initialized by the time this is run."
(add-hook 'window-configuration-change-hook #'+doom-dashboard-reload) (run-with-timer 0.1 nil #'+doom-dashboard/open frame))
(add-hook 'kill-buffer-query-functions #'+doom-dashboard|kill-buffer-query-fn)
(unless (daemonp)
(+doom-dashboard/open t))))
(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' ;; Compatibility with `midnight-mode' and `clean-buffer-list'
(after! midnight-mode (after! midnight-mode
@ -85,14 +96,13 @@
(push "^\\s-*\\*doom.+" clean-buffer-list-kill-never-regexps)) (push "^\\s-*\\*doom.+" clean-buffer-list-kill-never-regexps))
;; ;;
(defun +doom-dashboard/open (&optional startup) (defun +doom-dashboard/open (frame)
"Open the dashboard buffer." (interactive (list (selected-frame)))
(interactive) (unless +doom-dashboard-inhibit-refresh
(when (or (not startup) (with-selected-frame frame
(one-window-p t) (switch-to-buffer (doom-fallback-buffer))
(eq (buffer-name (window-buffer (car (window-list)))) "*scratch*")) (+doom-dashboard-reload)))
(+doom-dashboard-reload) (setq +doom-dashboard-inhibit-refresh nil))
(switch-to-buffer (doom-fallback-buffer))))
(defun +doom-dashboard-p (&optional buffer) (defun +doom-dashboard-p (&optional buffer)
"Returns t if BUFFER is the dashboard 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) (defun +doom-dashboard-reload (&optional dir)
"Update the DOOM scratch buffer (or create it, if it doesn't exist)." "Update the DOOM scratch buffer (or create it, if it doesn't exist)."
(when (and (not +doom-dashboard-inhibit-refresh) (when (and (not +doom-dashboard-inhibit-refresh)
(not (minibuffer-window-active-p (minibuffer-window))) (not (window-minibuffer-p (frame-selected-window)))
(get-buffer-window-list (doom-fallback-buffer))) (get-buffer-window (doom-fallback-buffer)))
(unless +doom-dashboard-modeline (unless +doom-dashboard-modeline
(setq +doom-dashboard--old-modeline mode-line-format) (setq +doom-dashboard--old-modeline mode-line-format)
(setq +doom-dashboard-modeline (setq +doom-dashboard-modeline