summary refs log tree commit diff stats
path: root/lisp/chd.el
blob: e1d96cb1ac945d27b94f451bfeb830a5019f26d9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
;;; chd.el --- CHD customizations -*- lexical-binding: t -*-

(require 'acdw-org)
(require 'org)

(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/click-bits (date)
  "Create a new Click Bits org file, or edit the one for DATE."
  (interactive (list (progn
                       (require 'org)
                       (org-read-date))))
  ;; TODO: implement actual logic.
  (message "%s" date))

(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")))

;;; 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