summaryrefslogtreecommitdiff
path: root/emacs/lisp
diff options
context:
space:
mode:
Diffstat (limited to 'emacs/lisp')
-rw-r--r--emacs/lisp/fcuny-org-custom.el33
1 files changed, 33 insertions, 0 deletions
diff --git a/emacs/lisp/fcuny-org-custom.el b/emacs/lisp/fcuny-org-custom.el
new file mode 100644
index 0000000..d1b30cd
--- /dev/null
+++ b/emacs/lisp/fcuny-org-custom.el
@@ -0,0 +1,33 @@
+(defun fcuny/org-new-datetree-at-point ()
+ (interactive)
+ (org-up-heading-safe)
+ (org-datetree-find-date-create
+ (calendar-gregorian-from-absolute (org-today))
+ 'subtree-at-point))
+
+(defun org-refile-to-datetree (&optional file)
+ "Refile a subtree to a datetree 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. A datetree within a subheading
+is possible if the heading has a property of DATE_TREE."
+ (interactive "f")
+ (let* ((datetree-date (or (org-entry-get nil "TIMESTAMP" t)
+ (org-read-date t nil "now")))
+ (date (org-date-to-gregorian datetree-date))
+ )
+ (save-excursion
+ (with-current-buffer (current-buffer)
+ (org-cut-subtree)
+ (if file (find-file file))
+ (widen)
+ (org-datetree-find-date-create date)
+ (org-narrow-to-subtree)
+ (show-subtree)
+ (org-end-of-subtree t)
+ (newline)
+ (goto-char (point-max))
+ (org-paste-subtree (+ org-datetree-base-level 3))
+ (widen)
+ ))))
+
+(provide 'fcuny-org-custom)