emacs/lisp/chd.el

77 lines
2.3 KiB
EmacsLisp

;;; chd.el --- CHD customizations -*- lexical-binding: t -*-
(require 'acdw-org)
(require 'org)
(defvar chd/dir (acdw/sync-dir "Click Here Digital/")
"Where Click Here stuff is stored.")
(defun chd/dir (file &optional make-directory)
"Expand FILE relative to variable `chd/dir'.
If MAKE-DIRECTORY is non-nil, ensure the file's
containing directory exists."
(let ((file-name (expand-file-name (convert-standard-filename file)
chd/dir)))
(when make-directory
(make-directory (file-name-directory file-name) :parents))
file-name))
(defun chd/narrow-to-task (&optional point)
"Narrow the buffer to the task POINT is in."
(interactive "d")
(when point (goto-char point))
(if (called-interactively-p 'interactive)
(save-excursion
(while (not (org-entry-is-todo-p))
(acdw/org-previous-heading-widen 1))
(org-narrow-to-subtree))
;; well this is dumb...
(while (not (org-entry-is-todo-p))
(acdw/org-previous-heading-widen 1))
(org-narrow-to-subtree)))
(defun chd/clock-in ()
"Clock in to the current task."
(save-excursion
(chd/narrow-to-task)
(org-clock-in)))
(defun chd/do-the-thing ()
"Copy the plain version of the current task and open its link."
(interactive)
(chd/narrow-to-task)
(save-excursion
;; Prepare buffer
(acdw/flyspell-correct-f7) ; This is defined... elsewhere.
;; Export the buffer and copy it
(pcase (org-entry-get (point-min) "EXPORTAS" t)
("html" (acdw/org-export-copy-html))
(_ (acdw/org-export-copy)))
;; Open the link to the doc
(org-back-to-heading)
(org-open-at-point)))
(defun chd/insert-client ()
"Insert the current client at point."
(interactive)
(if-let ((client (org-entry-get nil "CLIENT" :inherit)))
(insert client)
(beep)
(user-error "No client found in current subtree")))
;;; Click Bits!
(require 'acdw-autoinsert)
(require 'acdw)
(require 'private (acdw/sync-dir "private"))
(acdw/define-auto-insert '(:replace t)
(cons (chd/dir "Click Bits" t) "Click Bits!")
chd/click-bits-skeleton)
;;; NOTES
;; org-protocol: https://orgmode.org/worg/org-contrib/org-protocol.html
;; the bit i wanna pull from TaskIQ: 'document.getElementById("preview")
(provide 'chd)
;;; chd.el ends here