77 lines
2.3 KiB
EmacsLisp
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
|