changelog shortlog graph tags branches changeset files file revisions raw help

Mercurial > core / annotate emacs/lib/inbox.el

changeset 641: 48bcbca019e6
parent: 6c0e4a44c082
child: f58f3b88c49e
author: Richard Westhaver <ellis@rwest.io>
date: Sun, 08 Sep 2024 20:11:35 -0400
permissions: -rw-r--r--
description: org-project-info dblock update
587
Richard Westhaver <ellis@rwest.io>
parents: 308
diff changeset
1
 ;;; lib/inbox.el --- Inbox API -*- lexical-binding: t -*-
33
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
2
 
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
3
 ;; Copyright (C) 2023  Richard Westhaver
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
4
 ;; Version: "0.2.0"
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
5
 ;; Keywords: maint, tools, outlines, extensions
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
6
 
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
7
 ;; This program is free software; you can redistribute it and/or modify
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
8
 ;; it under the terms of the GNU General Public License as published by
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
9
 ;; the Free Software Foundation, either version 3 of the License, or
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
10
 ;; (at your option) any later version.
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
11
 
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
12
 ;; This program is distributed in the hope that it will be useful,
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
13
 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
14
 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
15
 ;; GNU General Public License for more details.
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
16
 
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
17
 ;; You should have received a copy of the GNU General Public License
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
18
 ;; along with this program.  If not, see <https://www.gnu.org/licenses/>.
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
19
 
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
20
 ;;; Commentary:
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
21
 
604
74a55d5decce emacs org libraries and upgrades
Richard Westhaver <ellis@rwest.io>
parents: 587
diff changeset
22
 ;; This is the elisp interface to the CC Inbox system. The main
74a55d5decce emacs org libraries and upgrades
Richard Westhaver <ellis@rwest.io>
parents: 587
diff changeset
23
 ;; interface is the inbox.org file which manages personal tasks.
99
40d91ba5a115 rdb stuff
ellis <ellis@rwest.io>
parents: 44
diff changeset
24
 
40d91ba5a115 rdb stuff
ellis <ellis@rwest.io>
parents: 44
diff changeset
25
 ;; Users may use `org-capture' to insert tasks and notes into their
40d91ba5a115 rdb stuff
ellis <ellis@rwest.io>
parents: 44
diff changeset
26
 ;; own `org-inbox-file' and refactor them to a more sensible
40d91ba5a115 rdb stuff
ellis <ellis@rwest.io>
parents: 44
diff changeset
27
 ;; destination with `org-refile'.
40d91ba5a115 rdb stuff
ellis <ellis@rwest.io>
parents: 44
diff changeset
28
 
33
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
29
 ;;; Code:
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
30
 (require 'org)
604
74a55d5decce emacs org libraries and upgrades
Richard Westhaver <ellis@rwest.io>
parents: 587
diff changeset
31
 (require 'org-agenda)
99
40d91ba5a115 rdb stuff
ellis <ellis@rwest.io>
parents: 44
diff changeset
32
 (require 'default)
606
6fc04c4d465c emacs and rocksdb upgrades
Richard Westhaver <ellis@rwest.io>
parents: 605
diff changeset
33
 ;; (require 'uml-mode)
604
74a55d5decce emacs org libraries and upgrades
Richard Westhaver <ellis@rwest.io>
parents: 587
diff changeset
34
 (require 'org-expiry)
74a55d5decce emacs org libraries and upgrades
Richard Westhaver <ellis@rwest.io>
parents: 587
diff changeset
35
 
33
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
36
 (defgroup inbox nil
604
74a55d5decce emacs org libraries and upgrades
Richard Westhaver <ellis@rwest.io>
parents: 587
diff changeset
37
   "CC Inbox")
33
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
38
 
604
74a55d5decce emacs org libraries and upgrades
Richard Westhaver <ellis@rwest.io>
parents: 587
diff changeset
39
 ;;; Vars
33
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
40
 (defcustom org-inbox-file
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
41
   (concat (file-name-as-directory org-directory) "inbox.org")
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
42
   "Custom inbox file location."
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
43
   :type 'file
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
44
   :group 'inbox)
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
45
 
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
46
 (defcustom org-inbox-date-start-format "<%Y-%m-%d %a>"
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
47
   "Format of DATE_START property timestamp for week headings. See
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
48
 `org-time-stamp-formats' for accepted values."
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
49
   :type 'string
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
50
   :group 'inbox)
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
51
 
604
74a55d5decce emacs org libraries and upgrades
Richard Westhaver <ellis@rwest.io>
parents: 587
diff changeset
52
 (defvar org-inbox-buffer-name "*Inbox*"
74a55d5decce emacs org libraries and upgrades
Richard Westhaver <ellis@rwest.io>
parents: 587
diff changeset
53
   "The name of the org-inbox buffer.")
74a55d5decce emacs org libraries and upgrades
Richard Westhaver <ellis@rwest.io>
parents: 587
diff changeset
54
 
605
3734c596d103 rm babel, update org config
Richard Westhaver <ellis@rwest.io>
parents: 604
diff changeset
55
 (defvar org-inbox-config-buffer-name "*Inbox Config*"
3734c596d103 rm babel, update org config
Richard Westhaver <ellis@rwest.io>
parents: 604
diff changeset
56
   "Then name of the org-inbox configuration buffer.")
3734c596d103 rm babel, update org config
Richard Westhaver <ellis@rwest.io>
parents: 604
diff changeset
57
 
604
74a55d5decce emacs org libraries and upgrades
Richard Westhaver <ellis@rwest.io>
parents: 587
diff changeset
58
 (defvar org-inbox-properties
606
6fc04c4d465c emacs and rocksdb upgrades
Richard Westhaver <ellis@rwest.io>
parents: 605
diff changeset
59
   '("NEXT" "PREV" "FROM" "TO" "OWNER" "PROJECT" "BLOCKER" "VERSION"))
604
74a55d5decce emacs org libraries and upgrades
Richard Westhaver <ellis@rwest.io>
parents: 587
diff changeset
60
 
74a55d5decce emacs org libraries and upgrades
Richard Westhaver <ellis@rwest.io>
parents: 587
diff changeset
61
 (defvar org-inbox-db-schema
74a55d5decce emacs org libraries and upgrades
Richard Westhaver <ellis@rwest.io>
parents: 587
diff changeset
62
   '(id file node edge contents properties schedule))
606
6fc04c4d465c emacs and rocksdb upgrades
Richard Westhaver <ellis@rwest.io>
parents: 605
diff changeset
63
 
6fc04c4d465c emacs and rocksdb upgrades
Richard Westhaver <ellis@rwest.io>
parents: 605
diff changeset
64
 ;;; Capture
6fc04c4d465c emacs and rocksdb upgrades
Richard Westhaver <ellis@rwest.io>
parents: 605
diff changeset
65
 (setq org-id-link-to-org-use-id t
6fc04c4d465c emacs and rocksdb upgrades
Richard Westhaver <ellis@rwest.io>
parents: 605
diff changeset
66
       org-protocol-default-template-key "L")
6fc04c4d465c emacs and rocksdb upgrades
Richard Westhaver <ellis@rwest.io>
parents: 605
diff changeset
67
 
6fc04c4d465c emacs and rocksdb upgrades
Richard Westhaver <ellis@rwest.io>
parents: 605
diff changeset
68
 ;; capture templates
6fc04c4d465c emacs and rocksdb upgrades
Richard Westhaver <ellis@rwest.io>
parents: 605
diff changeset
69
 (setq org-capture-templates
6fc04c4d465c emacs and rocksdb upgrades
Richard Westhaver <ellis@rwest.io>
parents: 605
diff changeset
70
       `(("i" "inbox-item" entry (file ,org-inbox-file)
6fc04c4d465c emacs and rocksdb upgrades
Richard Westhaver <ellis@rwest.io>
parents: 605
diff changeset
71
          "* %?\n%i"
6fc04c4d465c emacs and rocksdb upgrades
Richard Westhaver <ellis@rwest.io>
parents: 605
diff changeset
72
          :empty-lines 1)
6fc04c4d465c emacs and rocksdb upgrades
Richard Westhaver <ellis@rwest.io>
parents: 605
diff changeset
73
         ("t" "inbox-task" entry (file ,org-inbox-file) "* TODO %^{item}\n")
6fc04c4d465c emacs and rocksdb upgrades
Richard Westhaver <ellis@rwest.io>
parents: 605
diff changeset
74
         ("n" "inbox-note" entry (file ,org-inbox-file) "* NOTE %^{item}\n%a")
6fc04c4d465c emacs and rocksdb upgrades
Richard Westhaver <ellis@rwest.io>
parents: 605
diff changeset
75
         ("l" "inbox-link" entry (file ,org-inbox-file)
6fc04c4d465c emacs and rocksdb upgrades
Richard Westhaver <ellis@rwest.io>
parents: 605
diff changeset
76
          "* LINK %l")
6fc04c4d465c emacs and rocksdb upgrades
Richard Westhaver <ellis@rwest.io>
parents: 605
diff changeset
77
         ("L" "inbox-protocol-link" entry (file ,org-inbox-file)
6fc04c4d465c emacs and rocksdb upgrades
Richard Westhaver <ellis@rwest.io>
parents: 605
diff changeset
78
          "* LINK [[%:link][%:description]]\n%:initial" :empty-lines 1)
6fc04c4d465c emacs and rocksdb upgrades
Richard Westhaver <ellis@rwest.io>
parents: 605
diff changeset
79
         ("w" "inbox-web-link" entry (file ,org-inbox-file)
6fc04c4d465c emacs and rocksdb upgrades
Richard Westhaver <ellis@rwest.io>
parents: 605
diff changeset
80
          "* LINK %?"
6fc04c4d465c emacs and rocksdb upgrades
Richard Westhaver <ellis@rwest.io>
parents: 605
diff changeset
81
          :hook (lambda ()
6fc04c4d465c emacs and rocksdb upgrades
Richard Westhaver <ellis@rwest.io>
parents: 605
diff changeset
82
                  (goto-char (pos-eol))
6fc04c4d465c emacs and rocksdb upgrades
Richard Westhaver <ellis@rwest.io>
parents: 605
diff changeset
83
                  (org-web-tools-insert-link-for-url (org-web-tools--get-first-url))))
6fc04c4d465c emacs and rocksdb upgrades
Richard Westhaver <ellis@rwest.io>
parents: 605
diff changeset
84
         ("1" "current-task-item" item (clock) "%i%?")
6fc04c4d465c emacs and rocksdb upgrades
Richard Westhaver <ellis@rwest.io>
parents: 605
diff changeset
85
         ("2" "current-task-checkbox" checkitem (clock) "%i%?")
6fc04c4d465c emacs and rocksdb upgrades
Richard Westhaver <ellis@rwest.io>
parents: 605
diff changeset
86
         ("3" "current-task-region" plain (clock) "%i" :immediate-finish t :empty-lines 1)
6fc04c4d465c emacs and rocksdb upgrades
Richard Westhaver <ellis@rwest.io>
parents: 605
diff changeset
87
         ("4" "current-task-kill" plain (clock) "%c" :immediate-finish t :empty-lines 1)
6fc04c4d465c emacs and rocksdb upgrades
Richard Westhaver <ellis@rwest.io>
parents: 605
diff changeset
88
         ("l" "log" item (file+headline "log.org" "log") "%U %?" :prepend t)
6fc04c4d465c emacs and rocksdb upgrades
Richard Westhaver <ellis@rwest.io>
parents: 605
diff changeset
89
         ("s" "secret" table-line (file+function "krypt" org-ask-location) "| %^{key} | %^{val} |" :immediate-finish t :kill-buffer t)
6fc04c4d465c emacs and rocksdb upgrades
Richard Westhaver <ellis@rwest.io>
parents: 605
diff changeset
90
         ("N" "note-item" plain (file+function "notes.org" org-ask-location) "%?")))
6fc04c4d465c emacs and rocksdb upgrades
Richard Westhaver <ellis@rwest.io>
parents: 605
diff changeset
91
 
620
671f87e36e07 capf work
Richard Westhaver <ellis@rwest.io>
parents: 606
diff changeset
92
 (add-hook 'org-after-todo-state-change-hook #'org-id-get-create)
671f87e36e07 capf work
Richard Westhaver <ellis@rwest.io>
parents: 606
diff changeset
93
 (add-hook 'org-after-todo-state-change-hook #'org-expiry-insert-created)
671f87e36e07 capf work
Richard Westhaver <ellis@rwest.io>
parents: 606
diff changeset
94
 
606
6fc04c4d465c emacs and rocksdb upgrades
Richard Westhaver <ellis@rwest.io>
parents: 605
diff changeset
95
 (setq org-default-notes-file (join-paths org-directory "inbox.org")
631
0b82a2893d26 inbox compaction
Richard Westhaver <ellis@rwest.io>
parents: 620
diff changeset
96
       org-capture-use-agenda-date t
0b82a2893d26 inbox compaction
Richard Westhaver <ellis@rwest.io>
parents: 620
diff changeset
97
       org-archive-location "archive.org::")
606
6fc04c4d465c emacs and rocksdb upgrades
Richard Westhaver <ellis@rwest.io>
parents: 605
diff changeset
98
 
604
74a55d5decce emacs org libraries and upgrades
Richard Westhaver <ellis@rwest.io>
parents: 587
diff changeset
99
 ;;; Utils
33
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
100
 ;; `org-archive-all-done' doesn't work the way we want. This function
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
101
 ;; will archive all done tasks in the current subtree, or the whole file
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
102
 ;; if prefix arg is given.
308
e912dc076208 refactor lisp apps
Richard Westhaver <ellis@rwest.io>
parents: 99
diff changeset
103
 (defun org-archive-done (&optional scope)
e912dc076208 refactor lisp apps
Richard Westhaver <ellis@rwest.io>
parents: 99
diff changeset
104
   "archive all tasks with todo-state of 'DONE' or 'NOPE'."
33
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
105
   (interactive "P")
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
106
   (org-map-entries
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
107
    (lambda ()
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
108
      (org-archive-subtree)
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
109
      (setq org-map-continue-from (org-element-property :begin (org-element-at-point))))
308
e912dc076208 refactor lisp apps
Richard Westhaver <ellis@rwest.io>
parents: 99
diff changeset
110
    "/+DONE|NOPE" scope))
33
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
111
 
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
112
 (defun org-children-done ()
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
113
   "Mark all sub-tasks in this heading as 'DONE'."
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
114
   (interactive)
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
115
   (org-map-entries
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
116
    (lambda ()
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
117
      (unless (= (org-current-level) 1)
638
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
118
        (org-todo "DONE"))
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
119
      nil 'tree)))
33
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
120
 
631
0b82a2893d26 inbox compaction
Richard Westhaver <ellis@rwest.io>
parents: 620
diff changeset
121
 (defmacro with-inbox-buffer (&rest body)
0b82a2893d26 inbox compaction
Richard Westhaver <ellis@rwest.io>
parents: 620
diff changeset
122
   `(save-excursion
0b82a2893d26 inbox compaction
Richard Westhaver <ellis@rwest.io>
parents: 620
diff changeset
123
      (with-current-buffer (find-file org-inbox-file)
0b82a2893d26 inbox compaction
Richard Westhaver <ellis@rwest.io>
parents: 620
diff changeset
124
        ,@body)))
33
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
125
 
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
126
 (defun org-sort-todo-priority ()
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
127
   "Sorting function used by `org-sort' to sort by todo order
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
128
     followed by priority. Returns a pair of numbers (TODO . PRIO)."
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
129
   (let* ((elt (cadr (org-element-at-point)))
631
0b82a2893d26 inbox compaction
Richard Westhaver <ellis@rwest.io>
parents: 620
diff changeset
130
          (todo (when-let ((kw (plist-get elt :todo-keyword)))
0b82a2893d26 inbox compaction
Richard Westhaver <ellis@rwest.io>
parents: 620
diff changeset
131
                  (when (stringp kw)
0b82a2893d26 inbox compaction
Richard Westhaver <ellis@rwest.io>
parents: 620
diff changeset
132
                    (substring-no-properties kw))))
0b82a2893d26 inbox compaction
Richard Westhaver <ellis@rwest.io>
parents: 620
diff changeset
133
          (prio (pcase (plist-get elt :priority)
0b82a2893d26 inbox compaction
Richard Westhaver <ellis@rwest.io>
parents: 620
diff changeset
134
                  ("A" 1)
0b82a2893d26 inbox compaction
Richard Westhaver <ellis@rwest.io>
parents: 620
diff changeset
135
                  ("B" 2)
0b82a2893d26 inbox compaction
Richard Westhaver <ellis@rwest.io>
parents: 620
diff changeset
136
                  ("C" 3)
0b82a2893d26 inbox compaction
Richard Westhaver <ellis@rwest.io>
parents: 620
diff changeset
137
                  (t 2)))
33
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
138
          (res))
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
139
     ;; FIXME todo states shouldn't be hardcoded
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
140
     (cond
631
0b82a2893d26 inbox compaction
Richard Westhaver <ellis@rwest.io>
parents: 620
diff changeset
141
      ((null todo) (setq res (cons 3 prio)))
0b82a2893d26 inbox compaction
Richard Westhaver <ellis@rwest.io>
parents: 620
diff changeset
142
      ((string= todo "WATCH") (setq res (cons 3 prio)))
0b82a2893d26 inbox compaction
Richard Westhaver <ellis@rwest.io>
parents: 620
diff changeset
143
      ((string= todo "WAIT") (setq res (cons 1 prio)))
0b82a2893d26 inbox compaction
Richard Westhaver <ellis@rwest.io>
parents: 620
diff changeset
144
      ((string= todo "HOLD") (setq res (cons 1 prio)))
0b82a2893d26 inbox compaction
Richard Westhaver <ellis@rwest.io>
parents: 620
diff changeset
145
      ((string= todo "WIP") (setq res (cons 1 prio)))
0b82a2893d26 inbox compaction
Richard Westhaver <ellis@rwest.io>
parents: 620
diff changeset
146
      ((string= todo "GOTO") (setq res (cons 2 prio)))
33
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
147
      ((string= todo "TODO") (setq res (cons 2 prio)))
631
0b82a2893d26 inbox compaction
Richard Westhaver <ellis@rwest.io>
parents: 620
diff changeset
148
      ((string= todo "RESEARCH") (setq res (cons 3 prio)))
0b82a2893d26 inbox compaction
Richard Westhaver <ellis@rwest.io>
parents: 620
diff changeset
149
      ((string= todo "DONE") (setq res (cons 4 prio)))
0b82a2893d26 inbox compaction
Richard Westhaver <ellis@rwest.io>
parents: 620
diff changeset
150
      ((string= todo "NOPE") (setq res (cons 4 prio))))
33
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
151
     (unless res (setq res (cons 0 prio)))
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
152
     res))
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
153
 
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
154
 (defun org-sort-compare-todo-priority (a b)
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
155
   "Given two cons consisting of (TODO . PRIO), return t if A
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
156
   should come before B."
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
157
   (message "a: %S b: %S" a b)
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
158
   (cond
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
159
    ((< (car a) (car b)) t)
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
160
    ((> (car a) (car b)) nil)
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
161
    ((= (car a) (car b))
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
162
     (cond
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
163
      ((< (cdr a) (cdr b)) t)
631
0b82a2893d26 inbox compaction
Richard Westhaver <ellis@rwest.io>
parents: 620
diff changeset
164
      ((> (cdr a) (cdr b)) nil)))))
638
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
165
 
605
3734c596d103 rm babel, update org config
Richard Westhaver <ellis@rwest.io>
parents: 604
diff changeset
166
 
308
e912dc076208 refactor lisp apps
Richard Westhaver <ellis@rwest.io>
parents: 99
diff changeset
167
 (defun org-inbox-sort ()
33
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
168
   "Sort the current heading by todo order followed by priority."
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
169
   (interactive)
631
0b82a2893d26 inbox compaction
Richard Westhaver <ellis@rwest.io>
parents: 620
diff changeset
170
   (with-inbox-buffer
0b82a2893d26 inbox compaction
Richard Westhaver <ellis@rwest.io>
parents: 620
diff changeset
171
    (org-sort-entries nil ?f #'org-sort-todo-priority #'org-sort-compare-todo-priority)))
0b82a2893d26 inbox compaction
Richard Westhaver <ellis@rwest.io>
parents: 620
diff changeset
172
 
0b82a2893d26 inbox compaction
Richard Westhaver <ellis@rwest.io>
parents: 620
diff changeset
173
 (defun org-inbox-compact ()
0b82a2893d26 inbox compaction
Richard Westhaver <ellis@rwest.io>
parents: 620
diff changeset
174
   "Assign missing IDs and creation dates, archive DONE tasks."
0b82a2893d26 inbox compaction
Richard Westhaver <ellis@rwest.io>
parents: 620
diff changeset
175
   (interactive)
0b82a2893d26 inbox compaction
Richard Westhaver <ellis@rwest.io>
parents: 620
diff changeset
176
   (with-inbox-buffer
0b82a2893d26 inbox compaction
Richard Westhaver <ellis@rwest.io>
parents: 620
diff changeset
177
    (org-id-update-id-locations)
0b82a2893d26 inbox compaction
Richard Westhaver <ellis@rwest.io>
parents: 620
diff changeset
178
    (org-id-add-to-headlines-in-file)
0b82a2893d26 inbox compaction
Richard Westhaver <ellis@rwest.io>
parents: 620
diff changeset
179
    (org-archive-done)
0b82a2893d26 inbox compaction
Richard Westhaver <ellis@rwest.io>
parents: 620
diff changeset
180
    (org-map-entries #'org-expiry-insert-created)
0b82a2893d26 inbox compaction
Richard Westhaver <ellis@rwest.io>
parents: 620
diff changeset
181
    (org-inbox-sort)))
33
e3b0ec661dfa added inbox.el, more emacs config
ellis <ellis@rwest.io>
parents:
diff changeset
182
 
604
74a55d5decce emacs org libraries and upgrades
Richard Westhaver <ellis@rwest.io>
parents: 587
diff changeset
183
 (defun org-inbox-open ()
74a55d5decce emacs org libraries and upgrades
Richard Westhaver <ellis@rwest.io>
parents: 587
diff changeset
184
   "Open `org-inbox-file' or switch to its buffer if already open."
74a55d5decce emacs org libraries and upgrades
Richard Westhaver <ellis@rwest.io>
parents: 587
diff changeset
185
   (interactive)
74a55d5decce emacs org libraries and upgrades
Richard Westhaver <ellis@rwest.io>
parents: 587
diff changeset
186
   (if-let ((inbox (get-buffer org-inbox-buffer-name)))
74a55d5decce emacs org libraries and upgrades
Richard Westhaver <ellis@rwest.io>
parents: 587
diff changeset
187
       (switch-to-buffer inbox)
74a55d5decce emacs org libraries and upgrades
Richard Westhaver <ellis@rwest.io>
parents: 587
diff changeset
188
     (find-file org-inbox-file)
74a55d5decce emacs org libraries and upgrades
Richard Westhaver <ellis@rwest.io>
parents: 587
diff changeset
189
     (rename-buffer org-inbox-buffer-name)))
74a55d5decce emacs org libraries and upgrades
Richard Westhaver <ellis@rwest.io>
parents: 587
diff changeset
190
 
74a55d5decce emacs org libraries and upgrades
Richard Westhaver <ellis@rwest.io>
parents: 587
diff changeset
191
 (defun org-inbox-close ()
74a55d5decce emacs org libraries and upgrades
Richard Westhaver <ellis@rwest.io>
parents: 587
diff changeset
192
   "Close the org-inbox and associated buffers."
74a55d5decce emacs org libraries and upgrades
Richard Westhaver <ellis@rwest.io>
parents: 587
diff changeset
193
   (interactive)
74a55d5decce emacs org libraries and upgrades
Richard Westhaver <ellis@rwest.io>
parents: 587
diff changeset
194
   (when-let ((inbox (get-buffer org-inbox-buffer-name)))
74a55d5decce emacs org libraries and upgrades
Richard Westhaver <ellis@rwest.io>
parents: 587
diff changeset
195
     (kill-buffer inbox)))
74a55d5decce emacs org libraries and upgrades
Richard Westhaver <ellis@rwest.io>
parents: 587
diff changeset
196
 
605
3734c596d103 rm babel, update org config
Richard Westhaver <ellis@rwest.io>
parents: 604
diff changeset
197
 ;;; dblocks
638
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
198
 
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
199
 ;; summary
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
200
 (defun org-dblock-write:summary (params)
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
201
   "Generate a file or heading summary section.")
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
202
 
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
203
 (defun org-summary ()
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
204
   "Insert or update a summary section.")
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
205
 
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
206
 ;; project-info
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
207
 (defcustom org-project-info-order '(details status churn log files)
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
208
   "Order in which sections of the 'project-info' dblock will appear."
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
209
   :type 'list
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
210
   :group 'inbox)
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
211
 
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
212
 (defun org-dblock-write:project-info (params)
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
213
   "Generate a project-info section.
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
214
 
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
215
 The following keyword parameters can be passed to the info dynamic block:
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
216
 
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
217
 :location Set or override the project location which is inferred by
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
218
           checking for a LOCATION property in the current tree, followed
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
219
           by the value of the `project-current' function.
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
220
 
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
221
 :branch Set or override the project branch to display info for. Default
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
222
         branch name is 'default'.
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
223
 
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
224
 :files When nil don't include the files table.
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
225
 :churn When nil don't include the vc churn report.
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
226
 :log when nil don't include the vc log.
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
227
 :status when nil don't include vc status.
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
228
 :details When nil don't include the project details section."
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
229
   (let ((location (or (when-let ((param (plist-get params :location)))
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
230
                         (cl-coerce param 'string))
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
231
                       (org-entry-get (point) "LOCATION")
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
232
                       (when-let ((kw (org-collect-keywords '("LOCATION"))))
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
233
                         (cadar kw))
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
234
                       (project-root (project-current))))
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
235
         (point (point))
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
236
         (files (if-let ((val (plist-member params :files)))
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
237
                    (cadr val)
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
238
                  t))
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
239
         (churn (if-let ((val (plist-member params :churn)))
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
240
                    (cadr val)
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
241
                  t))
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
242
         (status (if-let ((val (plist-member params :log)))
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
243
                     (cadr val)
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
244
                   t))
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
245
         (log (if-let ((val (plist-member params :status)))
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
246
                  (cadr val)
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
247
                t))
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
248
         (details (if-let ((val (plist-member params :details)))
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
249
                      (cadr val)
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
250
                    t)))
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
251
     (message "Generating info for project: %s" location)
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
252
     (let* ((project (project-current nil location))
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
253
            (project-name (project-name project))
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
254
            (project-root (project-root project)))
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
255
       (dolist (i org-project-info-order)
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
256
         (pcase i
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
257
           ('details (when details
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
258
                       (message "building project details...")
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
259
                       (insert "#+CALL: project-details() :dir " project-root "\n")
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
260
                       (org-babel-execute-maybe)
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
261
                       (org-table-align)))
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
262
           ('status (when status
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
263
                      (message "building project status...")
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
264
                      (insert "#+CALL: hg-status() :dir " project-root "\n")))
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
265
           ('churn (when churn
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
266
                     (message "building project vc churn...")
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
267
                     (insert "#+CALL: hg-churn() :dir " project-root "\n")))
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
268
           ('log (when log
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
269
                   (message "building project vc log...")))
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
270
           ('files (when files
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
271
                     (message "building project file table...")
641
48bcbca019e6 org-project-info dblock update
Richard Westhaver <ellis@rwest.io>
parents: 638
diff changeset
272
                     (insert "#+CALL: project-files() :dir " project-root "\n")))))
638
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
273
       (org-babel-execute-region point (point)))))
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
274
 
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
275
 (defun org-project-info ()
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
276
   "Insert or update a project-info dblock."
641
48bcbca019e6 org-project-info dblock update
Richard Westhaver <ellis@rwest.io>
parents: 638
diff changeset
277
   (interactive)
48bcbca019e6 org-project-info dblock update
Richard Westhaver <ellis@rwest.io>
parents: 638
diff changeset
278
   (if (re-search-forward (rx bol "#+BEGIN:" (+ space) "project-info") nil t)
48bcbca019e6 org-project-info dblock update
Richard Westhaver <ellis@rwest.io>
parents: 638
diff changeset
279
       (progn
48bcbca019e6 org-project-info dblock update
Richard Westhaver <ellis@rwest.io>
parents: 638
diff changeset
280
         (if (fboundp 'org-fold-show-entry)
48bcbca019e6 org-project-info dblock update
Richard Westhaver <ellis@rwest.io>
parents: 638
diff changeset
281
             (org-fold-show-entry)
48bcbca019e6 org-project-info dblock update
Richard Westhaver <ellis@rwest.io>
parents: 638
diff changeset
282
           (with-no-warnings (org-show-entry)))
48bcbca019e6 org-project-info dblock update
Richard Westhaver <ellis@rwest.io>
parents: 638
diff changeset
283
         (beginning-of-line))        
48bcbca019e6 org-project-info dblock update
Richard Westhaver <ellis@rwest.io>
parents: 638
diff changeset
284
     (org-create-dblock (list :name "project-info")))
48bcbca019e6 org-project-info dblock update
Richard Westhaver <ellis@rwest.io>
parents: 638
diff changeset
285
   (org-update-dblock))
605
3734c596d103 rm babel, update org config
Richard Westhaver <ellis@rwest.io>
parents: 604
diff changeset
286
 
606
6fc04c4d465c emacs and rocksdb upgrades
Richard Westhaver <ellis@rwest.io>
parents: 605
diff changeset
287
 (defun org-inbox-configure-dblock ()
6fc04c4d465c emacs and rocksdb upgrades
Richard Westhaver <ellis@rwest.io>
parents: 605
diff changeset
288
   "Configure the current org-inbox-dblock at point."
6fc04c4d465c emacs and rocksdb upgrades
Richard Westhaver <ellis@rwest.io>
parents: 605
diff changeset
289
   (interactive)
6fc04c4d465c emacs and rocksdb upgrades
Richard Westhaver <ellis@rwest.io>
parents: 605
diff changeset
290
   (with-demoted-errors "Error: %S"
6fc04c4d465c emacs and rocksdb upgrades
Richard Westhaver <ellis@rwest.io>
parents: 605
diff changeset
291
     (let* ((beginning (org-beginning-of-dblock))
6fc04c4d465c emacs and rocksdb upgrades
Richard Westhaver <ellis@rwest.io>
parents: 605
diff changeset
292
            (parameters (org-prepare-dblock)))
6fc04c4d465c emacs and rocksdb upgrades
Richard Westhaver <ellis@rwest.io>
parents: 605
diff changeset
293
       (org-inbox-show-config-buffer (current-buffer) beginning parameters))))
6fc04c4d465c emacs and rocksdb upgrades
Richard Westhaver <ellis@rwest.io>
parents: 605
diff changeset
294
 
6fc04c4d465c emacs and rocksdb upgrades
Richard Westhaver <ellis@rwest.io>
parents: 605
diff changeset
295
 ;;; ui
605
3734c596d103 rm babel, update org config
Richard Westhaver <ellis@rwest.io>
parents: 604
diff changeset
296
 (defun org-inbox-show-config (&optional buffer position parameters)
3734c596d103 rm babel, update org config
Richard Westhaver <ellis@rwest.io>
parents: 604
diff changeset
297
   (interactive)
3734c596d103 rm babel, update org config
Richard Westhaver <ellis@rwest.io>
parents: 604
diff changeset
298
   (switch-to-buffer org-inbox-config-buffer-name)
3734c596d103 rm babel, update org config
Richard Westhaver <ellis@rwest.io>
parents: 604
diff changeset
299
   (erase-buffer)
3734c596d103 rm babel, update org config
Richard Westhaver <ellis@rwest.io>
parents: 604
diff changeset
300
   (remove-overlays)
3734c596d103 rm babel, update org config
Richard Westhaver <ellis@rwest.io>
parents: 604
diff changeset
301
   (widget-insert "\n\n")
638
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
302
   (widget-create 'push-button
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
303
                  :notify (lambda(_widget &rest _ignore)
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
304
                            (with-current-buffer buffer
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
305
                              (goto-char position)
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
306
                              )
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
307
                            (kill-buffer)
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
308
                            (org-ctrl-c-ctrl-c))
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
309
                  (propertize "Apply" 'face 'font-lock-comment-face))
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
310
   (widget-insert " ")
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
311
   (widget-create 'push-button
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
312
                  :notify (lambda (_widget &rest _ignore)
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
313
                            (kill-buffer))
6c0e4a44c082 dblocks
Richard Westhaver <ellis@rwest.io>
parents: 631
diff changeset
314
                  (propertize "Cancel" 'face 'font-lock-string-face))
605
3734c596d103 rm babel, update org config
Richard Westhaver <ellis@rwest.io>
parents: 604
diff changeset
315
   (use-local-map widget-keymap)
3734c596d103 rm babel, update org config
Richard Westhaver <ellis@rwest.io>
parents: 604
diff changeset
316
   (widget-setup))
3734c596d103 rm babel, update org config
Richard Westhaver <ellis@rwest.io>
parents: 604
diff changeset
317
 
44
cc85ab013035 added slime-cape, config stuff
ellis <ellis@rwest.io>
parents: 33
diff changeset
318
 (provide 'inbox)
cc85ab013035 added slime-cape, config stuff
ellis <ellis@rwest.io>
parents: 33
diff changeset
319
 ;; inbox.el ends here