Proper project management with Taskwarrior in vim.
Find a file
2015-08-14 22:28:15 +02:00
after/syntax taskwiki: Add taskwiki_disable variable check that allows for a quick flexible taskwiki turnoff 2015-04-22 20:16:56 +02:00
doc docs: Fix typo in command reference 2015-08-06 12:39:48 +02:00
extra Add script to generate tags, taken from vimwiki/utils 2015-04-02 07:17:32 +02:00
ftplugin taskwiki: Add TaskWikiSort command 2015-08-13 23:14:48 +02:00
taskwiki cache: Remove redundant guards for None, cache no longer retains None values 2015-08-13 23:14:56 +02:00
tests tests: Fix broken import 2015-08-13 23:15:03 +02:00
.coveragerc coverage: Do not include __init__ in the coverage 2015-03-28 00:47:16 +01:00
.gitignore gitignore: Add .coverage file to .gitignore 2015-03-28 10:56:59 +01:00
.travis.yml travis: Test on TaskWarrior's 2.4.5 development branch 2015-07-24 22:33:16 +02:00
LICENCE Licence: Update licence copyright and explicitly state MIT 2015-08-14 19:00:57 +02:00
README.md docs: Describe report splits in a greater detail 2015-08-14 22:28:15 +02:00

Taskwiki

Proper project management in vim. Standing on the shoulders of vimwiki and Taskwarrior

Travis build status Coverage Status Code Health

     a         |_   _|_ _ ___| | _\ \      / (_) | _(_)         a         ~
command-line     | |/ _` / __| |/ /\ \ /\ / /| | |/ / |   personal wiki   ~
 todo list       | | (_| \__ \   <  \ V  V / | |   <| |      for vim      ~
                 |_|\__,_|___/_|\_\  \_/\_/  |_|_|\_\_|                   ~

Installation

Make sure you satisfy the requirements

  • Vim 7.4 or newer, compiled with +python

  • Vimwiki (the dev branch)

      git clone https://github.com/vimwiki/vimwiki ~/.vim/bundle/ --branch dev
    
  • Taskwarrior (version 2.4.0 or newer)

  • Python library for Taskwarrior.

      sudo pip install --upgrade git+git://github.com/tbabej/tasklib@develop
    

Install taskwiki

Using pathogen (or similiar vim plugin manager), the taskwiki install is as simple as:

git clone https://github.com/tbabej/taskwiki ~/.vim/bundle/taskwiki

However, make sure your box satisfies the requirements stated above.

Optional enhancements

The following optional plugins enhance and integrate with TaskWiki. At very least,I'd recommend the AnsiEsc plugin - Taskwarrior charts are much more fun when they're colorful!

  • vim-plugin-AnsiEsc adds color support in charts.

      git clone https://github.com/powerman/vim-plugin-AnsiEsc ~/.vim/bundle/
    
  • tagbar provides taskwiki file navigation.

      git clone https://github.com/majutsushi/tagbar ~/.vim/bundle/
    
  • vim-taskwarrior enables grid view.

      git clone https://github.com/farseer90718/vim-taskwarrior ~/.vim/bundle/
    

How it works

Taskwiki enhances simple vimwiki task lists by storing the task metadata in Taskwarrior. Taskwarrior uses plaintext data files as a backend, and taskwiki uses Taskwarrior as a backend. This allows taskwiki to leverage its powerful features, such as filtering, recurrent tasks, user defined attributes or hooks.

Features

Individual tasks

* [ ] Install Taskwiki

Such tasks get synced to TaskWarrior when the file is saved. Additional metadata, as project, tags, priority, can be stored with this task.

Some of that metadata gets visually represented in vim, and is updated if the representation changes in vim.

* [ ] Install Taskwiki !!! (2015-08-23 19:00)

Task lists

Tasks can be grouped - simply written in one block. This has the advantage of any child tasks being marked as dependencies of the parent tasks.

* [ ] Get married
    * [ ] Find a girlfriend
    * [ ] Buy a ring
    * [ ] Propose

Viewports

Viewport is a header with a task query (filter) embedded, generating the corresponding task list. These tasks can be modified and changes will be synced back to task data. A simple viewport can look as follows:

== Home tasks | project:Home ==

Filter query is concealed.

Upon saving, this will generate the list of matching tasks, in a tree-like fashion (respecting dependencies).

== Home tasks | project:Home ==
* [ ] Feed the dog (2015-08-08)
* [ ] Tidy up the house !!
  * [ ] Wash the dishes
  * [ ] Declare war on the cobwebs

Tasks added (written) to the task list under the viewport inherit the defaults from its filter.

== Home tasks | project:Home ==
* [ ] Feed the dog
* [ ] Tidy up the house !!
  * [ ] Wash the dishes
  * [ ] Declare war on the cobwebs
* [ ] Call the landlord about rent payment (2015-08-23)
      ^ the task above will have project:Home set automatically

For some more complex filters, defaults cannot be automatically derived. In such case, you can specify the defaults explicitly:

== Urgent tasks | +OVERDUE or +urgent | +urgent ==
                                         ^ defaults definition

Viewports can be inspected by hitting [CR] with cursor above them.

Report splits

Taskwiki can provide additional information reports on a task list (selected, or part of a viewport) and on individial tasks as well. These reports are shown in dynamic temporary splits.

* [ ] Tidy up the house !! (2015-08-23 00:00)

For example, hitting [CR] on the above task runs :TaskWikiInfo and displays:

Name          Value
------------- ---------------------------------------------------------
ID            6
Description   Tidy up the house
                2015-08-22 21:29:35 Tip: Use roomba for vacuum-cleaning
Status        Pending
Project       Home
Entered       2015-08-22 21:27:26 (2 minutes)
Due           2015-08-23 00:00:00
Last modified 2015-08-22 21:30:21 (1 second)
Virtual tags  ANNOTATED MONTH PENDING READY UNBLOCKED YEAR
UUID          448c2fa9-6a06-454e-a2bc-b0c8ae91994f
Urgency       9.895
Priority      H

Date                Modification
------------------- ------------------------------------------------------------
2015-08-14 21:29:35 Annotation of 'Tip: Use roomba for vacuum-cleaning' added.
2015-08-14 21:30:11 Due set to '2015-08-23 00:00:00'.

Running the :TaskWikiSummary can produce side-split like this:

Project            Remaining Avg age  Complete 0%                        100%
------------------ --------- -------- -------- ------------------------------
Work                      18  4 weeks      74% ======================
  Designs
    Feature X              3  4 weeks      89% ==========================
    Feature Y              7  2 weeks      47% =========
  Tickets                  5  3 weeks      79% ======================
  Blog                     1 4 months      50% ===============

There are many more reports (burndown, calendar, history, projects, stats, summary, tags,..), but for the sake of brevity, they will not be described here. They work in a similiar fashion.

Advanced

  • Grid view: the TaskWikiGrid command will open a new buffer with a grid view of task details, of the nearest ViewPort (using vim-taskwarrior)

  • Back-links: The command TaskWikiLink will add an annotation to the selected task(s) with the ~/path/to/file.wiki

  • Tests: TaskWiki is well tested in development to ensure data integrity. DISCLAIMER This is free software, it comes with absolutely NO warranty and no promise of fitness for any purpose! (back up your data!)

Commands

  • TaskWikiBurndown(Daily, Monthly, Weekly)
  • TaskWikiCalendar
  • TaskWikiChooseProject
  • TaskWikiChooseTag
  • TaskWikiDelete
  • TaskWikiGhistory(Annual, Monthly)
  • TaskWikiHistory(Annual, Monthly)
  • TaskWikiInfo
  • TaskWikiInspect
  • TaskWikiLink
  • TaskWikiMod
  • TaskWikiProjects
  • TaskWikiProjectsSummary
  • TaskWikiStart
  • TaskWikiStats
  • TaskWikiStop
  • TaskWikiTags

see more in doc/taskwiki.txt. After installing, run :helptags and then :he taskwiki

Credits

Authored by Tomas Babej

Inspired by vimwiki-tasks plugin.

Contributing

Clone, fork, contribute and learn more at https://github.com/tbabej/taskwiki

Good ideas, well formed bug reports and thoughtful pull-requests welcome.