toshism / org-linker-edna

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

org-linker-edna

Create org-edna dependencies (:TRIGGER: and :BLOCKER: properties)

Basic example

Here is an example on the basic functionality of org-linker-edna.

Consider these two Org mode headings:

** STARTED Cleaning my desk

:

** Make my desk messy again

They do have a natural dependency: it is required to have a clean desk in order to be able to mess it up again.

Therefore, you can define a dependency such as cleaning up the desk is required to be set to DONE before being messy can be set to DONE.

With org-edna, you do have two possibilities that may be applied in this example: TRIGGER and BLOCKER properties. This would require manual effort from you to create the corresponding properties within the drawers. And this is what org-linker-edna is able to do for you on your fingertips.

By invoking M-x org-linker-edna (or binding it to a keyboard shortcut), you can get the following result:

** STARTED Cleaning my desk
:PROPERTIES:
:ID:       ac3da9ff-1069-40ee-8aba-74734a64b820
:TRIGGER:  ids(0f99de80-8592-4a5e-8cf8-5d27f23c1d8c) todo!(TODO) scheduled!("++1d")
:END:

:

** Make my desk messy again
:PROPERTIES:
:ID:       0f99de80-8592-4a5e-8cf8-5d27f23c1d8c
:BLOCKER:  ids(ac3da9ff-1069-40ee-8aba-74734a64b820)
:END:

As you can see, there are several things which were done for you. By selecting a followup-status (TODO) and a scheduled day (++1d for the next day), the “get messy again”-task now has its dependency defined:

  1. For referencing the headings, UUIDs were generated for both, source and destination.
  2. The cleaner task got extended by a property which sets the messy task to TODO and schedules it for the next day as soon as the clean-up task gets set to DONE (or CANCELLED).
  3. The “get back to my usual mess”-task gets a BLOCKER property set.
    • While this is somehow redundant, you get a bi-directional dependency with a “back-link”.
    • With this feature request, you will maybe get navigable Org mode links.

As you can see clearly, org-linker-edna helps you to minimize manual effort for creating dependencies.

Installation

Please do install org-linker beforehand because org-linker-edna is using its functionality.

Using quelpa makes it easy to install org-linker-edna. Example basic configuration including org-linker.

(use-package org-linker
  :quelpa (org-linker :repo "toshism/org-linker" :fetcher github))

(use-package org-linker-edna
  :quelpa (org-linker-edna :repo "toshism/org-linker-edna" :fetcher github)
  :bind (("C-c s e" . org-linker-edna)) ;; follows org-super-link binding patterns

Notes

This is still alpha at best. It works to some degree but is still in the experimental stage. Try it out and let me know what issues you have or what you would like to see here.

Related Resources

  • org-linker which is the general foundation of org-linker-edna
  • org-super-links an independent package to create Org mode links to headings with auto-backlinks
  • This blog article that drafts an example workflow for Org mode with advanced usage of dependencies
  • org-depend: a much simpler alternative to org-edna which does not have a corresponding tool like org-linker-edna (at least to my knowledge)

Credits

Thanks to Karl Voit for the idea and direction.

License

GPLv3

About

License:GNU General Public License v3.0


Languages

Language:Emacs Lisp 100.0%