summaryrefslogtreecommitdiff
path: root/dashboard.el
blob: a8f753f56e66f44e7a97df44862c150fc12dd70c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
;;; dashboard.el --- My daashboard -*- lexical-binding: t; -*-

;;;###autoload
(defvar dashboard-buffer-name "durand"
  "The name of the buffer for the dashboard.")

;;;###autoload
(defun dashboard ()
  "Create the dashboard buffer."
  (interactive)
  (let ((dashboard-exists-p (get-buffer dashboard-buffer-name))
        (dashboard (get-buffer-create dashboard-buffer-name)))
    (cond
     (dashboard-exists-p
      (switch-to-buffer dashboard))
     (t
      (with-current-buffer dashboard
        (let ((image (create-image "~/.doom.d/banners/default.png")))
          (insert
           (center-string-in-width
            (propertize " " 'display image 'rear-nonsticky '(display))
            (round (- (window-body-width)
                      (* (car (image-size image)) 0.6))))))
        (newline 5)
        (insert
         (center-string-in-width
          "Dashboard"
          (window-body-width)))
        (read-only-mode 1)
        (set 'mode-line-format
             '("%e" (:eval (modeline-format-dashboard)))))))
    dashboard))

(set 'initial-buffer-choice #'dashboard)

;;; Modify killing buffers

;;;###autoload
(defun dont-kill-dashboard-fn ()
  "Don't kill the dashboard buffer."
  (cond
   ((eq (current-buffer) (get-buffer dashboard-buffer-name))
    (message "Don't kill the dashboard buffer.")
    nil)
   (t)))

(add-hook 'kill-buffer-query-functions 'dont-kill-dashboard-fn)

(provide 'dashboard)
;;; dashboard.el ends here.