From 2811fcf997609e69b771d368637b26882e94eb49 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Thu, 19 Nov 2015 00:54:58 -0500 Subject: [PATCH] Place custom org defuns in lib/defuns-org-custom.el --- modules/lib/defuns-org-custom.el | 57 ++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 modules/lib/defuns-org-custom.el diff --git a/modules/lib/defuns-org-custom.el b/modules/lib/defuns-org-custom.el new file mode 100644 index 000000000..640397bab --- /dev/null +++ b/modules/lib/defuns-org-custom.el @@ -0,0 +1,57 @@ +;;; defuns-org-custom.el -- custom functions, links, etc. for Org-mode + +(progn ;; Custom links + (defun narf--org-id-to-file (id dir &optional pattern) + (let* ((glob (f-glob (format (concat "%s" (or pattern "%s-*.org")) dir id))) + (glob-len (length glob))) + (when (zerop glob-len) + (user-error "Could not find file with that ID")) + (car glob))) + +;;;###autoload + (defun narf/org-link-contact (id) + (org-open-file (narf--org-id-to-file id org-directory-contacts) t)) +;;;###autoload + (defun narf/org-link-project (id) + (org-open-file (narf--org-id-to-file id org-directory-projects) t)) +;;;###autoload + (defun narf/org-link-invoice (id) + (org-open-file (narf--org-id-to-file id org-directory-invoices "%s.org") t)) + + (defun narf-org-complete (type) + (let ((default-directory (symbol-value (intern (format "org-directory-%ss" type))))) + (let* ((file (org-iread-file-name ">>> ")) + (match (s-match "^\\([0-9]+\\)[-.]" (f-filename file)))) + (unless match + (user-error "Invalid file ID")) + (format "%s:%s" type (cadr match))))) + + (defun org-contact-complete-link () + (narf-org-complete "contact")) + (defun org-project-complete-link () + (narf-org-complete "project")) + (defun org-invoice-complete-link () + (narf-org-complete "invoice"))) + +(progn ;; Deft +;;;###autoload + (defun narf/deft-projects () + (interactive) + (require 'deft) + (let ((deft-directory org-directory-projects)) + (deft))) + +;;;###autoload + (defun narf/deft-contact () + (interactive) + (require 'deft) + (let ((deft-directory org-directory-contacts)) + (deft))) + +;;;###autoload + (defun narf/deft-invoices ()) +;;;###autoload + (defun narf/deft-writing ())) + +(provide 'defuns-org-custom) +;;; defuns-org-custom.el ends here