branch: elpa/gnosis
commit 175fd8257f702f34283371264a77f142a111a18f
Author: Thanos Apollo <pub...@thanosapollo.org>
Commit: Thanos Apollo <pub...@thanosapollo.org>

    dashboard: Use dashboard buffer if it exists.
---
 gnosis.el | 104 ++++++++++++++++++++++++++++++--------------------------------
 1 file changed, 51 insertions(+), 53 deletions(-)

diff --git a/gnosis.el b/gnosis.el
index 486f23d537..209becaa4f 100644
--- a/gnosis.el
+++ b/gnosis.el
@@ -2748,10 +2748,9 @@ When called with called with a prefix, unsuspend all 
notes of deck."
   (display-line-numbers-mode 0))
 
 (defun gnosis-dashboard-enable-mode ()
-  "Enable `gnosis-dashboard-mode'.
-
-This should only be enabled in a gnosis dashboard buffer."
-  (when (string= (buffer-name) gnosis-dashboard-buffer-name)
+  "Enable `gnosis-dashboard-mode'."
+  (when (and (string= (buffer-name) gnosis-dashboard-buffer-name)
+            (not (eq major-mode 'gnosis-dashboard-mode)))
     (gnosis-dashboard-mode)))
 
 (cl-defun gnosis-dashboard--search (&optional dashboard-type (note-ids nil))
@@ -2858,56 +2857,55 @@ DASHBOARD-TYPE: either Notes or Decks to display the 
respective dashboard."
 (defun gnosis-dashboard ()
   "Launch gnosis dashboard."
   (interactive)
-  (let* ((buffer-name gnosis-dashboard-buffer-name)
+  (let* ((buffer (get-buffer-create gnosis-dashboard-buffer-name))
         (due-log (gnosis-review-get--due-notes))
-        (due-note-ids (mapcar #'car due-log)))
-    (when (get-buffer buffer-name)
-      (kill-buffer buffer-name))  ;; Kill the existing buffer if it exists
-    (let ((buffer (get-buffer-create buffer-name)))
-      (with-current-buffer buffer
-        (insert "\n"
-               (gnosis-center-string
-                (format "%s" (propertize "Gnosis Dashboard" 'face
-                                         'gnosis-face-dashboard-header))))
-       (gnosis-insert-separator)
-       (insert (gnosis-center-string
-                (format "\nReviewed today: %s (New: %s)"
-                        (propertize
-                         (number-to-string (gnosis-get-date-total-notes))
-                         'face
-                         'font-lock-variable-use-face)
-                        (propertize
-                         (number-to-string (gnosis-get-date-new-notes))
-                         'face
-                         'font-lock-keyword-face))))
-       (insert "\n")
-       (insert (gnosis-center-string
-                (format "Due notes: %s (Overdue: %s)"
-                        (propertize
-                         (number-to-string (length due-note-ids))
-                         'face 'error)
-                        (propertize
-                         (number-to-string
-                          (length (gnosis-review-get-overdue-notes)))
-                         'face 'warning))))
-       (insert "\n\n")
-       (insert (gnosis-center-string
-                (format "Daily Average: %s"
-                        (propertize
-                         (gnosis-dashboard-output-average-rev)
-                         'face 'font-lock-type-face))))
-       (insert "\n")
-       (insert (gnosis-center-string
-                (format "Current streak: %s day(s)"
-                        (propertize
-                         (gnosis-dashboard--streak
-                          (gnosis-select 'date 'activity-log '(> 
reviewed-total 0) t))
-                         'face 'success))))
-       (insert "\n\n"))
-      (pop-to-buffer-same-window buffer)
-      (goto-char (point-min))
-      (gnosis-dashboard-enable-mode)
-      (gnosis-dashboard-menu))))
+        (due-note-ids (mapcar #'car due-log))
+        (inhibit-read-only t))
+    (with-current-buffer buffer
+      (erase-buffer)
+      (insert "\n"
+             (gnosis-center-string
+              (format "%s" (propertize "Gnosis Dashboard" 'face
+                                       'gnosis-face-dashboard-header))))
+      (gnosis-insert-separator)
+      (insert (gnosis-center-string
+              (format "\nReviewed today: %s (New: %s)"
+                      (propertize
+                       (number-to-string (gnosis-get-date-total-notes))
+                       'face
+                       'font-lock-variable-use-face)
+                      (propertize
+                       (number-to-string (gnosis-get-date-new-notes))
+                       'face
+                       'font-lock-keyword-face))))
+      (insert "\n")
+      (insert (gnosis-center-string
+              (format "Due notes: %s (Overdue: %s)"
+                      (propertize
+                       (number-to-string (length due-note-ids))
+                       'face 'error)
+                      (propertize
+                       (number-to-string
+                        (length (gnosis-review-get-overdue-notes)))
+                       'face 'warning))))
+      (insert "\n\n")
+      (insert (gnosis-center-string
+              (format "Daily Average: %s"
+                      (propertize
+                       (gnosis-dashboard-output-average-rev)
+                       'face 'font-lock-type-face))))
+      (insert "\n")
+      (insert (gnosis-center-string
+              (format "Current streak: %s day(s)"
+                      (propertize
+                       (gnosis-dashboard--streak
+                        (gnosis-select 'date 'activity-log '(> reviewed-total 
0) t))
+                       'face 'success))))
+      (insert "\n\n"))
+    (pop-to-buffer-same-window buffer)
+    (goto-char (point-min))
+    (gnosis-dashboard-enable-mode)
+    (gnosis-dashboard-menu)))
 
 ;; VC functions ;;
 ;;;;;;;;;;;;;;;;;;

Reply via email to