Taskwiki

Taskwiki is a plugin to connect Vimwiki and Taskwarrior

Taskwiki enhances the default, simple Vimwiki checkboxes but turning them into tasks and placing them in a Taskwarrior backend. This adds a whole slew of new features like tracking tasks over time, adding due dates, tagging tasks, assigning tasks to projects, adding priorities, extra filtering functionality, and overall the ability to manage these tasks straight from the Taskwarrior CLI. Link to Github repo. Note: the tasks in this file relate my custom fork of the Taskwiki plugin. This fork adapts the plugin to be used directly with the Markdown filetype, and eliminates the Vimwiki plugin dependency.

TODO | proj:taskwiki

  • Implement some form of mobile TODOs (likely using Tasklib)
  • Add relevant task metadata to new task note files
  • Implement external calendar integration, view/create tasks from iCal
  • Implement methods for natively annotating tasks (e.g. as a separate, searchable file)

Usage

Taskwiki only processes tasks that are initialized in a list item using an *. All other checklists are ignored. The following is an example of multiple types of tasks USING NON ASTERISK so they don’t sync to my actual tasks:

  • Simple task
  • [o] Parent task
    • [.] Child task 1
    • [o] Child task 2

Viewports

Viewports are headers with task filters. They basically define an area for tasks that take on certain attributes, like +TODAY or are assigned to a particular project.

Example Project | project:testproject

Tasks written underneath a given header will take on those defaults defined by the header.

Reports

Taskwiki can show reports for individual tasks, or for task lists in a selection or part of a viewport.

  • Hitting <enter> on single task will open up a split window with relevant metadata for that task.
  • Running :TaskWikiSummary will produce a side split with a summary of the selected tasks (like vanilla Taskwarrior)
  • Can also run :TaskWikiCalendar, :TaskWikiBurndown, etc to see different Taskwarrior reports. See the docs for more.

Assigning Metadata

Tasks can be assigned metadata on creation in a number of ways, and will also display certain classes of metadata visually if it exists.

  • Status: The status of a task (pending, completed, deleted, started) will be indicated by the task checkbox itself. To activate these TW statuses, type <leader>t + the character mentioned:
    • Install Taskwiki | pending task (base creation task)
    • Install Taskwiki | completed task (press d for done)
    • [D] Install Taskwiki | deleted task (press D for delete)
    • [S] Install Taskwiki | started task (press + to start)
    • [S->’ ’] Install Taskwiki | stopped task (press - to stop)
  • Description: The task description i.e. the main text
  • Due date: The due date of a task. Will show up as a date or date with time in parantheses next to task description.
  • Priority: Task priority, indicated by 1, 2, or 3 exclamation marks for L, M, H priorities, respectively
  • Dependency: Dependency of a task on a parent task, task hierarchy. Indicated by indentation under parent task.

Note that each of these metadata fields can be specified in the way described upon creation, and the appropriate metadata will be entered into Taskwarrior. It is also the case that a task could be updated outside of Vimwiki (i.e. with Taskwarrior), and that metadata will update with the appropriate display when the page is refreshed.

Additional metadata can be set on task creation in Vimwiki using -- after the task description and/or any native metadata mentioned above. For example:

  • Task with project (and extra metadata for memes) – project:test, priority:H

When the file is saved, non-native task metadata will disappear, native metadata will appear appropriately, and a concealed task ID will be injected on the task line.

Drawbacks

As of right now, the plugin will throw errors when you have a | in a heading. This is fine (mostly), since this is the primary pattern for detecting viewports. However, I have often run into issues where I want to use a LaTeX equation as a header, and in Probability theory there are many | used in conditional probabilities. Here we can just use \vert instead as a simple work-around. Otherwise, there may need to be other options if this is not possible.