;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; inspiration for conditional capture template : https://storax.github.io/blog/2016/05/02/org-capture-tricks/

; helper functions
(defvar oc-capture-prmt-history nil
  "History of prompt answers for org capture.")
(defun oc/prmt (prompt variable)
  "PROMPT for string, save it to VARIABLE and insert it."
  (make-local-variable variable)
  (set variable (read-string (concat prompt ": ") nil oc-capture-prmt-history)))
(defun oc/inc (what text &rest fmtvars)
  "Ask user to include WHAT.  If user agrees return TEXT."
  (when (y-or-n-p (concat "Include " what "?"))
    (apply 'format text fmtvars)))
(defun oc/inc (what text &rest fmtvars)
  "Ask user to include WHAT.  If user agrees return TEXT."
  (when (y-or-n-p (concat "Include " what "?"))
    (apply 'format text fmtvars)))
(defun oc/inc_date (what prefix)
  "Ask user to include a date.  If user agrees prompt for date."
  (when (y-or-n-p (concat "Include " what "?"))
    (concat prefix (org-time-stamp nil))))

; orgmode capture templates
(setq org-capture-templates '(
    ("d" "TODO" entry
        (file+headline "~/org/_todo.org" "Active")
        (file "~/org/template_todo.org")
        :prepend t
        :immediate-finish "f"
        :jump-to-captured "t"
    )
    ("b" "Blog Post" entry
        (file+headline "~/org/blog/_blog.org" "Drafts")
        (file "~/org/template_blog.org")
    )
    ("g" "Gaming")
    ("gc" "To Do - Crafted Gun"
        entry (id "65a28e9e-e484-4722-8a25-4fbf0a8dea2c")
        (file "~/org/template_game_destiny_gun.org")
        :prepend t
        :immediate-finish "f"
        :jump-to-captured "t"
        :unnarrowed "t"
    )
    ("h" "Health")
    ("hm" "Mike")
    ("hml" "Log Entry"
        entry (file+datetree "~/org/health/health_mike.org" "Log")
        "* %^{Timestamp}U %^{Text} %^g\n%?"
        :time-prompt "t"
        :immediate-finish "f"
        :jump-to-captured "t"
        :unnarrowed "f"
    )
    ("hmd" "Appointment noteworthy developments / [time] in review"
        entry (file+headline "~/org/health/health_mike.org" "To Do")
        "** READY [#A] %^{Heading} :appointment:%^g\nDEADLINE: %^t\n%?"
        :immediate-finish "f"
        :jump-to-captured "t"
        :unnarrowed "t"
        :prepend "t"
    )
    ("hma" "Appointment Notes"
        entry (file+datetree "~/org/health/health_mike.org" "Appointment Notes")
        "* %^{AptTime} %^{Text} :appointment:%^g\n%?"
        :time-prompt "t"
        :immediate-finish "f"
        :jump-to-captured "t"
        :unnarrowed "t"
    )
    ("hmw" "Weight"
        entry (file+datetree "~/org/health/health_mike.org" "Log")
        "* %^{Timestamp}U %^{Weight} lbs %?:weight:"
        :time-prompt "t"
        :immediate-finish "t"
        :jump-to-captured "t"
        :unnarrowed "t"
    )
    ("hmx" "Anxiety Entry"
        entry (file+datetree "~/org/health/health_mike.org" "Log")
        "* %^{Timestamp}U %^{Text} :panic:\n** Level (0-10/none-strong): %^{Level}\n** What brought on your feelings of anxiety or panic?\n%?\n** Anxiety and Panic Responses\n*** Physical Sensations\nlist the physical sensations you felt during your anxiety response\ne.g. dizziness, shortness of breath, blushing, sweating, muscle tension. Indicate three that frighten you the most.\n*** Thoughts and Images\nlist the thoughts you had when anticipating or experiencing your anxiety response\ne.g. 'im having a heart attack', 'im losign control', 'something terrible will happen'\n*** Behaviors and Actions\nlist the behaviors you exhibited or actions you took as a result of your anxiety response\n"
        :time-prompt "t"
        :immediate-finish "f"
        :jump-to-captured "t"
        :unnarrowed "t"
    )
    ("hmj" "mmj")
    ("hmjc" "mmj - sugar cube"
        entry (file+datetree "~/org/health/health_mike.org" "Log")
        "* %^{Timestamp}U Sugar Cube :mmj:\n   :PROPERTIES:\n   :THC: %^{THC}\n   :CBD: %^{CBD}\n   :Quantity: %^{Quantity}\n   :END:"
        :time-prompt "t"
        :immediate-finish "t"
        :jump-to-captured "t"
        :unnarrowed "t"
    )
    ("hmjf" "mmj - flower"
        entry (file+datetree "~/org/health/health_mike.org" "Log")
        "* %^{Timestamp}U Flower :mmj:\n   :PROPERTIES:\n   :THC: %^{THC}\n   :CBD: %^{CBD}\n   :Quantity: %^{Quantity}\n   :END:"
        :time-prompt "t"
        :immediate-finish "t"
        :jump-to-captured "t"
        :unnarrowed "t"
    )
    ("hh" "Houdini")
    ("hhl" "Log Entry"
        entry (file+datetree "~/org/health/health_houdini.org" "Log")
        "* %^{Timestamp}U %^{Text} %^g\n%?"
        :time-prompt "t"
        :immediate-finish "t"
        :jump-to-captured "t"
        :unnarrowed "t"
    )
    ("hhf" "Food"
        entry (file+datetree "~/org/health/health_houdini.org" "Log")
        "* %^{Timestamp}U %^{Food} - %^{Amount} :food:%?"
        :time-prompt "t"
        :immediate-finish "t"
        :jump-to-captured "t"
        :unnarrowed "t"
    )
    ("hhm" "Medication"
        entry (file+datetree "~/org/health/health_houdini.org" "Log")
        "* %^{Timestamp}U %^{Medication} :medication:%?"
        :time-prompt "t"
        :immediate-finish "t"
        :jump-to-captured "t"
        :unnarrowed "t"
    )
    ("hhw" "Weight"
        entry (file+datetree "~/org/health/health_houdini.org" "Log")
        "* %^{Timestamp}U %^{Weight} lbs %?:weight:"
        :time-prompt "t"
        :immediate-finish "t"
        :jump-to-captured "t"
        :unnarrowed "t"
    )
    ("p" "Photography")
    ("pt" "Theme (Film)" entry
        (file+headline "~/org/photography/film.org" "Themes - Active")
        (file "~/org/photography/template_theme.org")
        :empty-lines-before 1
    )
    ("pi" "Theme (Instant Film)" entry
        (file+headline "~/org/photography/instant_film.org" "Themes - Active")
        (file "~/org/photography/template_instant_film_theme.org")
        :empty-lines-before 1
    )
    ("r" "Recipe")
    ("rs" "Standard" plain
        (file "~/org/culinary/_recipes.org")
        (file "~/org/culinary/template_recipe.org")
        :empty-lines-before 1
    )
    ("rb" "Budget Bytes" plain
        (file "~/org/culinary/_recipes.org")
        (file "~/org/culinary/template_budget_bytes.org")
        :empty-lines-before 1
    )
    ("t" "Trip" entry
        (file+headline "~/org/trips.org" "Planned")
        (file "~/org/template_trip.org")
        :empty-lines-before 1
    )
))
