;;; org/org-notebook/autoload.el -*- lexical-binding: t; -*-

(defun +org-notebook--explore-notes (dir)
  (unless (file-directory-p dir)
    (error "Directory doesn't exist: %s" dir))
  (if (fboundp '+evil/neotree)
      (neotree-dir dir)
    (let ((default-directory dir))
      (call-interactively (command-remapping 'find-file)))))

;;;###autoload
(defun +org-notebook/find-major-mode-notes ()
  "Browse org notes in `+org-notebook-code-dir' in neotree, ido, ivy or helm --
whichever is available."
  (interactive)
  (let ((dir (expand-file-name
              (concat (or (cdr (assq major-mode +org-notebook-code-alist))
                          (replace-regexp-in-string
                           "+" "p"
                           (string-remove-suffix "-mode" (symbol-name major-mode))
                           nil t))
                      "/")
              +org-notebook-code-dir)))
    (unless (file-in-directory-p dir +org-notebook-code-dir)
      (error "Invalid location for %s notes: %s"
             major-mode (abbreviate-file-name dir)))
    (unless (file-directory-p dir)
      (make-directory dir t))
    (+org-notebook--explore-notes dir)))

;;;###autoload
(defun +org-notebook/find-project-notes ()
  "Browse org notes in `+org-notebook-project-dir' in neotree, ido, ivy or helm --
whichever is available."
  (interactive)
  (+org-notebook--explore-notes +org-notebook-project-dir))