@@ -159,11 +159,7 @@ This is the date of the journal entry you are currently viewing."
159159 " Visit journal for DATE from sidebar context.
160160Opens the note in the main window, not the sidebar."
161161 (require 'vulpea-journal )
162- (let ((note (vulpea-journal-note date))
163- (main-win (vulpea-ui--get-main-window)))
164- (when main-win
165- (select-window main-win))
166- (vulpea-visit note)))
162+ (vulpea-ui-visit-note (vulpea-journal-note date)))
167163
168164(defun vulpea-journal-ui--strip-drawers (text )
169165 " Remove org drawers from TEXT."
@@ -513,6 +509,60 @@ ON-SELECT is callback to handle date selection."
513509 (format-time-string " %Y%m%d" (plist-get entry :date )))))))))
514510
515511
512+ ; ;; Sidebar Keybindings
513+
514+ (declare-function vulpea-journal " vulpea-journal" )
515+ (declare-function vulpea-journal-note-p " vulpea-journal" )
516+ (declare-function vulpea-journal-note-date " vulpea-journal" )
517+ (declare-function vulpea-journal--adjacent-date " vulpea-journal" )
518+ (declare-function vulpea-journal--read-date " vulpea-journal" )
519+
520+ (defun vulpea-journal-ui--sidebar-note ()
521+ " Get the current journal note from sidebar context.
522+ Works whether called from sidebar or main window."
523+ (or vulpea-ui--current-note
524+ (when-let ((main-win (vulpea-ui--get-main-window)))
525+ (with-current-buffer (window-buffer main-win)
526+ (when-let ((file (buffer-file-name )))
527+ (car (vulpea-db-query-by-file-path file 0 )))))))
528+
529+ (defun vulpea-journal-ui-previous ()
530+ " Navigate to the previous journal entry from sidebar."
531+ (interactive )
532+ (let ((note (vulpea-journal-ui--sidebar-note)))
533+ (if (not (vulpea-journal-note-p note))
534+ (user-error " Not viewing a journal note" )
535+ (if-let* ((current-date (vulpea-journal-note-date note))
536+ (prev-date (vulpea-journal--adjacent-date current-date 'prev )))
537+ (vulpea-journal-ui--visit-date prev-date)
538+ (message " No previous journal entry " )))))
539+
540+ (defun vulpea-journal-ui-next ()
541+ " Navigate to the next journal entry from sidebar."
542+ (interactive )
543+ (let ((note (vulpea-journal-ui--sidebar-note)))
544+ (if (not (vulpea-journal-note-p note))
545+ (user-error " Not viewing a journal note" )
546+ (if-let* ((current-date (vulpea-journal-note-date note))
547+ (next-date (vulpea-journal--adjacent-date current-date 'next )))
548+ (vulpea-journal-ui--visit-date next-date)
549+ (message " No next journal entry " )))))
550+
551+ (defun vulpea-journal-ui-today ()
552+ " Navigate to today's journal from sidebar."
553+ (interactive )
554+ (vulpea-journal-ui--visit-date (current-time )))
555+
556+ (defun vulpea-journal-ui-date (date )
557+ " Navigate to journal for DATE from sidebar."
558+ (interactive (list (vulpea-journal--read-date)))
559+ (vulpea-journal-ui--visit-date date))
560+
561+ (define-key vulpea-ui-sidebar-mode-map (kbd " [" ) #'vulpea-journal-ui-previous )
562+ (define-key vulpea-ui-sidebar-mode-map (kbd " ]" ) #'vulpea-journal-ui-next )
563+ (define-key vulpea-ui-sidebar-mode-map (kbd " t" ) #'vulpea-journal-ui-today )
564+ (define-key vulpea-ui-sidebar-mode-map (kbd " d" ) #'vulpea-journal-ui-date )
565+
516566; ;; Widget Registration
517567
518568(defun vulpea-journal-ui--get-order (widget )
0 commit comments