summary refs log tree commit diff
path: root/emacs.d
diff options
context:
space:
mode:
authorFranck Cuny <fcuny@twitter.com>2019-12-09 10:41:45 -0800
committerFranck Cuny <fcuny@twitter.com>2019-12-09 10:41:45 -0800
commit3acb681bc552d8c0f049595a261b9ded272d0c52 (patch)
treeaf6876497f7415d7c98bfcaa60f9b989a39a69dd /emacs.d
parent[emacs] don't hide directories info. (diff)
downloademacs.d-3acb681bc552d8c0f049595a261b9ded272d0c52.tar.gz
[org] Add functions to refile to datetree
I want to be able to refile some notes to a datetree. These new
functions do just that, and one of them is specific to the work
journal.
Diffstat (limited to 'emacs.d')
-rw-r--r--emacs.d/custom/fcuny-org.el46
1 files changed, 32 insertions, 14 deletions
diff --git a/emacs.d/custom/fcuny-org.el b/emacs.d/custom/fcuny-org.el
index 9825ca9..a4bd7a8 100644
--- a/emacs.d/custom/fcuny-org.el
+++ b/emacs.d/custom/fcuny-org.el
@@ -3,6 +3,15 @@
 (use-package dash
   :ensure t)
 
+(defvar org-directory (expand-file-name "~/Documents/notebooks"))
+(defvar org-default-tasks-file (concat org-directory "/tasks.org"))
+(defvar org-default-journal-file (concat org-directory "/journal.org"))
+(defvar org-default-notes-file (concat org-directory "/notes.org"))
+(defvar org-default-work-tasks-file (concat org-directory "/work-tasks.org"))
+(defvar org-default-work-journal-file (concat org-directory "/work-journal.org"))
+(defvar org-default-work-notes-file (concat org-directory "/work-notes.org"))
+(defvar org-default-inbox-file (concat org-directory "/inbox.org"))
+
 (use-package org
   :after (dash)
   :ensure t
@@ -53,20 +62,6 @@ _g n_: go to notes
   (org-lowest-priority ?D)
   (org-default-priority ?D) ;; Ensures unset tasks have low priority.
 
-  ;; files
-  (org-directory (expand-file-name "~/Documents/notebooks"))
-  ;; (org-archive-location "~/Documents/notebooks/journal.org::datetree/* Finished Tasks")
-
-  (org-default-tasks-file (concat org-directory "/tasks.org"))
-  (org-default-journal-file (concat org-directory "/journal.org"))
-  (org-default-notes-file (concat org-directory "/notes.org"))
-
-  (org-default-work-tasks-file (concat org-directory "/work-tasks.org"))
-  (org-default-work-journal-file (concat org-directory "/work-journal.org"))
-  (org-default-work-notes-file (concat org-directory "/work-notes.org"))
-
-  (org-default-inbox-file (concat org-directory "/inbox.org"))
-
   ;; how to manage tasks
   (org-todo-keywords '((sequence "TODO(t)" "STARTED(s)" "DELEGATED(D)" "|" "DONE(d)")
                        (sequence "SOMEDAY" "|" "CANCELED(c)")))
@@ -262,4 +257,27 @@ _g n_: go to notes
      ((< days 358) (format "%.1fM" (/ days 30.0)))
      (t            (format "%.1fY" (/ days 365.0))))))
 
+(defun fcuny/org-refile-to-datetree (&optional file)
+"Refile current subtree to a datetree in FILE corresponding to it's timestamp.
+The current time is used if the entry has no timestamp. If FILE
+is nil, refile in the current file."
+  (interactive)
+  (require 'org-datetree)
+  (let* ((file (cond
+                (file (find-file-noselect file))
+                (t (current-buffer))))
+         (datetree-date (or (org-entry-get nil "CREATED" t)
+                            (org-entry-get nil "TIMESTAMP_IA" t)
+                            (org-read-date t nil "now")))
+         (date (org-date-to-gregorian datetree-date)))
+    (org-refile nil nil (list nil (buffer-file-name file) nil
+                              (with-current-buffer file
+                                (save-excursion
+                                  (org-datetree-find-date-create date)
+                                  (point)))))))
+
+(defun fcuny/org-refile-to-work-journal ()
+  (interactive)
+  (fcuny/org-refile-to-datetree org-default-work-journal-file))
+
 (provide 'fcuny-org)