diff options
author | Tom Willemse | 2015-05-25 19:26:51 +0200 |
---|---|---|
committer | Tom Willemse | 2015-05-25 19:26:51 +0200 |
commit | 3eb9eb45f32ad978e128f04c3911eb43af9b161c (patch) | |
tree | 1535869965b195d423a5e94888cc55eeddd2930c /emacs/.emacs.d/site-lisp/org-init.el | |
parent | d25cc62263beb8a87f4df6b41f57aa9876c91a72 (diff) | |
download | dotfiles-3eb9eb45f32ad978e128f04c3911eb43af9b161c.tar.gz dotfiles-3eb9eb45f32ad978e128f04c3911eb43af9b161c.zip |
Skip next steps in org todo lists
Projects can fill up the task list quite easily, though actually only
the immediately next task is of real interest.
Diffstat (limited to 'emacs/.emacs.d/site-lisp/org-init.el')
-rw-r--r-- | emacs/.emacs.d/site-lisp/org-init.el | 27 |
1 files changed, 21 insertions, 6 deletions
diff --git a/emacs/.emacs.d/site-lisp/org-init.el b/emacs/.emacs.d/site-lisp/org-init.el index ac2b3cc..edfc3e1 100644 --- a/emacs/.emacs.d/site-lisp/org-init.el +++ b/emacs/.emacs.d/site-lisp/org-init.el @@ -82,16 +82,31 @@ (setq outline-path (concat "[ " outline-path " ] "))) outline-path)) +(defun oni:org-heading-has-predecessor-p () + "Determine if a heading has a predecessor. + +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) + (let ((components (org-heading-components))) + (not (or (< (car components) 3) + (= point (point)) + (member (elt components 2) org-done-keywords))))))) + +(defun oni:next-heading-position () + (or (ignore-errors (org-forward-element) + (point)) + (point-max))) + (defun org-init-skip-tags () "Skip the \"ex\" and \"unconfirmed\" tags." (let ((tags (org-get-tags-at (point)))) (when (or (member "ex" tags) - (member "unconfirmed" tags)) - (save-excursion - (or - (ignore-errors (org-forward-element) - (point)) - (point-max)))))) + (member "unconfirmed" tags) + (oni:org-heading-has-predecessor-p)) + (oni:next-heading-position)))) (defun org-init-get-tag-name () "Get the name for a new tag for the currently loaded desktop." |