Skip any non-immediate tasks in projects
Focus should always be on the _next_ task in a project.
This commit is contained in:
parent
0754c6bf8f
commit
4975325497
1 changed files with 36 additions and 0 deletions
|
@ -38,6 +38,41 @@
|
|||
(set-face-attribute 'org-checkbox nil :family "Ionicons")
|
||||
(prettify-symbols-mode)))
|
||||
|
||||
(defun oni-org-init-heading-has-predecessor-p ()
|
||||
"Determine if the heading at point has any predecessors.
|
||||
Only tasks of a level greater than 3 are considered. A task has a
|
||||
predecessor if there is a non-DONE sibling defined before it."
|
||||
(let ((point (point)))
|
||||
(save-excursion
|
||||
(org-backward-heading-same-level 1)
|
||||
(seq-let [level _ keyword] (org-heading-components)
|
||||
(not (or (< level 3)
|
||||
(= point (point))
|
||||
(member keyword org-done-keywords)))))))
|
||||
|
||||
(defun oni-org-init-looking-for-tag-p (tag)
|
||||
"Return t if we're currently looking for TAG in an agenda."
|
||||
(and (eql 'org-tags-view (car org-agenda-redo-command))
|
||||
(string-match-p (rx-to-string `(and word-start ,tag word-end))
|
||||
org-agenda-query-string)))
|
||||
|
||||
(defun oni-org-init-next-heading-position ()
|
||||
"Get the position of the next Org heading."
|
||||
(or (ignore-errors
|
||||
(org-forward-element)
|
||||
(point))
|
||||
(point-max)))
|
||||
|
||||
(defun oni-org-init-skip-tasks ()
|
||||
"Skip over tasks I don't want to see right now.
|
||||
Tasks being skipped over include ones with the \"ex\" tag and
|
||||
ones that have a predecessor."
|
||||
(let ((tags (org-get-tags-at (point))))
|
||||
(when (or (and (not (oni-org-init-looking-for-tag-p "ex"))
|
||||
(member "ex" tags))
|
||||
(oni-org-init-heading-has-predecessor-p))
|
||||
(oni-org-init-next-heading-position))))
|
||||
|
||||
(setq org-default-notes-file "~/documents/gtd/inbox.org")
|
||||
(setq org-src-fontify-natively t)
|
||||
(setq org-return-follows-link t)
|
||||
|
@ -47,6 +82,7 @@
|
|||
(setq org-use-fast-todo-selection t)
|
||||
(setq org-log-into-drawer t)
|
||||
(setq org-agenda-todo-ignore-scheduled 'future)
|
||||
(setq org-agenda-skip-function-global #'oni-org-init-skip-tasks)
|
||||
|
||||
(setq org-agenda-files
|
||||
'("~/documents/gtd/todo.org"
|
||||
|
|
Loading…
Reference in a new issue