May 19, 2018 at 11:37 AM by Dr. Drang
- Taskpaper – Plain Text To Do Lists 3 5 13
- Taskpaper – Plain Text To Do Lists 3 5 12
- Taskpaper – Plain Text To Do Lists 3 5 1/2
- Taskpaper – Plain Text To Do Lists 3 5 100
As I’ve written before, I use the TaskPaper plain-text format to keep track of my to-do lists. In particular, I have a main to-do list that I adjust every day, adding new projects and tasks as they come in and (I hope) marking older tasks as completed. At the beginning of every month, I make a new TaskPaper document, filling it with the uncompleted tasks from the previous month. In this way, the documents from the previous months are a record of what I was planning to do and what I finished.
On the Mac, I use Hog Bay Software’s TaskPaper app. Jesse Grosjean of Hog Bay created the TaskPaper format, and his app is still the best for creating and organizing TaskPaper documents. Unfortunately, Jesse stopped supporting his iOS TaskPaper app, and I haven’t thought much of replacements like Taskmator. As a result, I’ve been doing almost all of my TaskPaper tracking on the Mac, which isn’t the best way to keep on top of things, especially when I’m traveling.
Make lists and get organized. TaskPaper is a plain text to-do list that’s surprisingly adept. Thoroughly modernized. TaskPaper 3 is all new, while still retaining the same plain text design that’s been getting things done since 2006. Buy now to make lists and get organized! New in TaskPaper 3. All new app. More powerful searches. TaskPaper 3.8.6 – Jun 13, 2019 Download Fixed sidebar to display tag value lists such as @priority(1, 2, 3) Fixed crash when tag name matched another tag-value name. For example @a(a) and @a-a; TaskPaper 3.8.5 – May 5, 2019 Download TaskPaper is now notarized by Apple to increase security.
Make lists and get organized. TaskPaper is a plain text to-do list that’s surprisingly adept. Thoroughly modernized. TaskPaper 3 is all new, while still retaining the same plain text design that’s been getting things done since 2006. Buy now to make lists and get organized! - Key Features. P. TaskPaper is a plain text to-do list that’s surprisingly adept. Reminders is Apple’s built in (free) todo list. Watch this tutorial to learn how to send items back and forth between TaskPaper. TaskPaper is a plain-text to-do list that’s surprisingly adept. Thoroughly modernized. TaskPaper 3 is all new, while still retaining the same plain-text design that’s been getting things done since 2006. What's New: All new app; More powerful searches; Flexible and unique folding interface; More powerful text editor and outliner.
But with a little bit of work, Drafts 5 can become a great TaskPaper app. Out of the box, it understands the project and task syntax and formats them nicely, including a strikeout for tasks marked with the
@done
tag.I created an action group that lets me do common manipulations of TaskPaper lists in Drafts. Be warned: by “common” I mean “common to me.” TaskPaper is a very flexible format, and I know a lot of people do things with it that I don’t. The actions in the group I made are tuned to my use. If you’re a TaskPaper user, some of them will be useful to you and some of them won’t. But I hope that even the actions that aren’t immediately useful to you will help you develop your own.
Let’s start with actions that upload and download my current monthly task list. I need this because I still edit this list on my Mac, so having it exclusively in Drafts isn’t an option. The current month’s task list is saved in a file named
yyyy-mm.taskpaper
in the Elements/tasks
subfolder of my Dropbox folder,1 where yyyy
and mm
represent the current year and month.The Upload Dated action (which appears as just Upload in the keyboard row) has just a single Dropbox action, reflecting the file name and folder choices:
The file name is set using template tags for the current date, and the action overwrites whatever is in that file with the contents of the current draft.
The Reload Dated action (which appears as Reload in the keyboard row) does the opposite, opening the appropriate file from Dropbox and replacing the current draft with its contents. Drafts doesn’t have a handy-dandy action for opening from Dropbox, but it does have a library of JavaScript functions for dealing with Dropbox files. Here’s the script step for Reload Dated:
I think this is mostly self-explanatory. Icash 7 8 14. To me, the most interesting part is handling the month number in Lines 9 and 10. The
+ 1
in Line 9 is there because JavaScript counts months starting from zero. Line 10 uses the padStart
function to add a leading zero to single-digit months. I’m not sure when padStart
was added to JavaScript, but it wasn’t there the last time I decided it worth buying a JavaScript reference book.With the upload/download actions out of the way, let’s move on to the actions that manipulate the lists themselves.
We’ll start with New Item. When you’re adding a series of tasks to a project, Drafts helpfully inserts the tab-hyphen-space at the beginning of the line. but it doesn’t do that for the first task in a newly added project. The New Item action is a simple text insertion action that adds those three characters at the current insertion point. Nothing special, but it does help, especially when working with the software keyboard, which doesn’t have a Tab key.
Next is the Mark Done action, which adds a
@done
tag and the current date to the end of the current line or the end of all the selected lines if text is selected. Mark Done is smart enough to ignore project lines.Lines 4–10 get today’s date and use it to format the marker to appear at the ends of the lines. It looks like this:
The TaskPaper app for Mac has a setting for adding the date to
@done
tags, and I use it because I like to be able to look back to confirm when I finished something.Lines 12–13 get the selected lines (which is just the current line if there is no selection) and put the text from those lines into the variable
sel
. The trailing newline is omitted.Lines 17–23 split
sel
into an array of lines and loop through that array, adding the done marker to each task line. Task lines are distinguished from others by the tab-hyphen they start with.Lines 26–29 clean up by replacing the originally selected lines with the altered text from the previous step. The cursor is then placed at the end of the last selected line.
The Marked Waiting action is basically the same as Mark Done except it puts a
@waiting
tag at the end of each selected task line.Archive Done mimics another feature of the Mac TaskPaper app. It goes through the list, finds all the tasks marked
@done
and adds them to an Archive section at the bottom of the document. The archived tasks are marked with the name of the project they came from (in a @project
tag at the end of the line), and they are placed at the top of the Archive section. If there isn’t already an Archive section, one is created.Here’s how it works. Let’s go back to the task list I showed at the top of the post:
As you can see, there are a couple of done tasks in the Administration project. After running the Archive Done action, the draft looks like this:
Here’s the script step of Archive Done:
Lines 4–10 set up a bunch of variables for later use. Lines 13–20 find the Archive section and save all of its lines to the variable
archive
(which was initialized to an empty string). They also set the archStart
variable to the character index of the beginning of the Archive section. This will be used later to determine the end of the active (unarchived) tasks. If there is no Archive section, archive
remains blank and archStart
is the end of the document.Lines 24–42 are the heart of the script. They put the text of active section of the document into the
active
variable, turn it into an array of lines, and loop through the lines, looking for done tasks. Whenever a project header line is encountered (Lines 29–32), the project
variable is updated to keep track of the current project. Done tasks (found in Line 34) are extracted and marked with the current project name and added to the front of the archive
variable (Line 37)When the looping is done, the active and archive sections are concatenated and the draft is replaced with the result. The cursor is put at the top of the draft.
One last action. As you can see in the screenshots, it’s my habit to have no space between the projects. I think the formatting is sufficient to make the list readable without extra whitespace.2 This does, however, make rearranging projects difficult in Drafts. Drafts has a rearranging mode, but it won’t work on a project-by-project basis unless there’s a blank line between the projects.
The Un/Block action addresses this problem by adding or deleting blank lines between the projects. It toggles between the tightly spaced format I like and the blank-line-separated format needed to use Drafts’s block rearrangement. When I want to move a project to the top of the list to make it more prominent, I run Un/Block to add blank lines between the projects, use Drafts block rearranging to drag the projects into the order I want, and then run Un/Block again to get rid of the extra blank lines. Un/Block is smart enough to maintain the blank line above the Archive section.
Here’s the script step for Un/Block:
Lines 4–6 define a set of regular expressions used to find project headers under different conditions. Line 13 replaces all “tight” project headers with “loose” ones. If that replacement didn’t do anything (Line 16), the spacing must already be loose, so Lines 17–18 replace the loose spacing with tight (except for the extra line above the Archive section).
I’ve been using these actions for over a month, and I’m pretty happy with the way they work. The functionality has remained the same for the past few weeks, with most of the effort going into simplifying the actions to make them easier to understand and maintain. As I say in the Drafts Action Directory, these actions are idiosyncratic, but I hope they can be used by others to make actions that fit their TaskPapering needs.
- This subfolder choice is historical rather than rational, and reflects my long-ago use of the iOS plain text editor, Elements, which required an
Elements
folder. I suppose I should reorganize things, but I’ve never bothered. ↩ - The Archive section is set off from the rest by a blank line. This is something the Mac TaskPaper app does, and I mimic that behavior in Drafts. ↩
An opinionated todo-list plugin for Sublime Text editor (version 2 and 3)
Details
Installs
- Total178K
- Win92K
- Mac52K
- Linux34K
Oct 23 | Oct 22 | Oct 21 | Oct 20 | Oct 19 | Oct 18 | Oct 17 | Oct 16 | Oct 15 | Oct 14 | Oct 13 | Oct 12 | Oct 11 | Oct 10 | Oct 9 | Oct 8 | Oct 7 | Oct 6 | Oct 5 | Oct 4 | Oct 3 | Oct 2 | Oct 1 | Sep 30 | Sep 29 | Sep 28 | Sep 27 | Sep 26 | Sep 25 | Sep 24 | Sep 23 | Sep 22 | Sep 21 | Sep 20 | Sep 19 | Sep 18 | Sep 17 | Sep 16 | Sep 15 | Sep 14 | Sep 13 | Sep 12 | Sep 11 | Sep 10 | Sep 9 | Sep 8 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Windows | 8 | 24 | 21 | 24 | 14 | 9 | 12 | 10 | 17 | 14 | 24 | 14 | 9 | 11 | 24 | 23 | 19 | 20 | 18 | 10 | 12 | 16 | 11 | 20 | 17 | 27 | 12 | 8 | 15 | 18 | 26 | 20 | 21 | 8 | 5 | 19 | 16 | 11 | 18 | 17 | 9 | 11 | 19 | 25 | 15 | 25 |
Mac | 2 | 8 | 9 | 7 | 8 | 4 | 3 | 6 | 8 | 17 | 11 | 9 | 2 | 1 | 9 | 5 | 9 | 5 | 12 | 5 | 6 | 4 | 15 | 8 | 8 | 9 | 3 | 2 | 7 | 6 | 11 | 5 | 7 | 5 | 4 | 8 | 10 | 9 | 8 | 11 | 6 | 4 | 9 | 12 | 14 | 13 |
Linux | 5 | 12 | 9 | 3 | 10 | 3 | 3 | 5 | 7 | 10 | 5 | 8 | 4 | 7 | 8 | 7 | 12 | 8 | 9 | 6 | 1 | 8 | 5 | 9 | 6 | 12 | 6 | 4 | 6 | 4 | 9 | 4 | 8 | 3 | 4 | 6 | 4 | 6 | 9 | 9 | 4 | 4 | 5 | 9 | 4 | 10 |
Readme
- Source
- raw.githubusercontent.com
PlainTasks
An opinionated todo-list plugin for Sublime Text (2 & 3) editor
Installation
To install this plugin, you have two options:
- If you have Package Control installed, simply search for
PlainTasks
to install. - Clone source code to Sublime Text packages folder.
Start a new todo-list
Bring up the command palette (it’s ⌘ + shift + p in OS X and ctrl + shift + p in Windows) and type
task
and select Tasks: New document
command. NOTE: Save your todo files with
todo
, todolist
, tasks
or taskpaper
file extensions or just name them TODO
with no extension.For more portability you can use todolist.txt
either as a filename or as suffix for any arbitrary filename.Usage
NOTE: In Windows or Linux use ctrl instead of ⌘
☐ ⌘ + enter or ⌘ + i: new task
☐ ⌘ + d: toggle task as completed.
☐ ctrl + c: toggle task as cancelled on Mac. alt + c on Windows/Linux.
☐ ⌘ + shift + a will archive the done tasks, by removing them from your list and appending them to the bottom of the file under Archive project
☐ ⌘ + shift + o will archive in Org-Mode style, removing the entire subtree after cursor and appending it to new file next to original one, e.g. if original is
filename.TODO
then new would be filename_archive.TODO
☐ ⌘ + shift + u will open the url under the cursor in your default browser, other than http(s) schemes must be enclosed within
<>
, e.g. <skype:nickname>
☐ Anything with colon at the end of the line is a project title, you can also nest projects by indenting them.
☐ You can write plain text as notes or descriptions wherever you want. Use
_
or *
for italic and bold just like in Markdown.☐ You can add tags using
You can place cursors on tags, click right mouse button and Filter by tags under cursors:pending tasks with selected tags will remain visible (and their notes and projects they belong to), but everything else will be hidden/folded; to unfold all press ⌘+k, ⌘+j or ⌘+k, ⌘+0
@
signYou can place cursors on tags, click right mouse button and Filter by tags under cursors:pending tasks with selected tags will remain visible (and their notes and projects they belong to), but everything else will be hidden/folded; to unfold all press ⌘+k, ⌘+j or ⌘+k, ⌘+0
☐ You can navigate tags in current document via ⌘+shift+r.
☐ PlainTasks comes with a simple snippet for creating separators, if you feel that your task list is becoming too long you can split it into several sections (and fold some of them) using this snippet:
--
and then tab will give you this: --- ✄ -----------------------
☐ Completion rules (ctrl+space or alt+/ to see list of them):
- type
t
, press tab — it’ll become@today
— this one is highlighted differently than other tags; c
, tab —@critical
;h
, tab —@high
;l
, tab —@low
;s
, tab —@started
— press tab again and current date will be inserted, when you’ll complete or cancel a task with such tag, you’ll know how many time has passed since start; if you have to change done/cancelled/started time, then you can recalculate the time spent on task by pressing tab while cursor is placed on a tag;tg
, tab, tab work in the same manner ass
, but inserts@toggle(current date)
— so you can pause and resume to get more correct result when done/cancel; each toggle tag is either pause or resume depending on its place in sequence;cr
, tab, tab —@created(current date)
(⌘ + shift + enter creates a new task with this tag);d
, tab —@due( )
If you press tab again, it’ll insert current date, same for@due( 0)
.
You can type short date (similar to OrgMode’s date prompt, but not the same) and then press tab to expand it into default format.
Short date should be _@due(year-month-day hour:minute)
__
Dot can be used instead of hyphen, but should be consistent _year.month.day
- year, month, minute, hour can be omitted:
Notation Meaning @due(1)
1st day of next month always @due(--1)
1st day of current month always @due(5)
5th day of current month (or next month if current day is 5th or older) @due(2-3)
February 3rd of current year or next one @due(31 23:)
31st day of current/next month at 23 hours and minutes are equal to current moment @due(16.1.1 1:1)
January 1st of 2016 at 01:01 @due(16-01-01 01:01)
- relative period of time starts with a plus sign or two
__+[+][number][DdWw][h:m]
__ — number is optional as well as letterd
for days or letterw
for weeks.Notation Meaning @due(+)
tomorrow as well as @due( +1)
or@due( +1d)
@due(+w)
one week since current date, i.e. @due( +7)
@due(+3w)
3 weeks since current date, i.e. @due( +21d)
@due(++)
one day since @created(date)
if any, otherwise it is equal to@due(+)
@due(+2:)
two hours since current date @due(+:555)
555 minutes since current date @due(+2 12:)
2 days and 12 hours since current date
☐ You can create a link to a file within your project by prefixing the file name with a dot and (back)slash like:
The line and column can be specified by colons:
In SublimeText 3 you can specify a symbol inside that file by using > character like:
In SublimeText 2 you can specify a text inside that file by using inch characters like:
Pressing ctrl + o (alt + o on Windows/Linux) will open the file in Sublime and scroll to specific position if any.
Also in SublimeText 3 link may point to directory, open such link will add the directory to current project (sidebar).
In addition, Markdown and “wiki” (Org-Mode, NV, etc.) styles are supported as well, examples:
.filename
or ./another filename/
.The line and column can be specified by colons:
.filename:11:8
.In SublimeText 3 you can specify a symbol inside that file by using > character like:
.filename>symbol
.In SublimeText 2 you can specify a text inside that file by using inch characters like:
.filename'any text'
.Pressing ctrl + o (alt + o on Windows/Linux) will open the file in Sublime and scroll to specific position if any.
Also in SublimeText 3 link may point to directory, open such link will add the directory to current project (sidebar).
In addition, Markdown and “wiki” (Org-Mode, NV, etc.) styles are supported as well, examples:
☐ To convert current document to HTML, bring up the command palette ⌘ + shift + p and type
Tasks: View as HTML
— it will be opened in default webbrowser, so you can view and save it.Tasks: Save as HTML…
World time map. ask if you want to save and if yes, allow to choose directory and filename (but won’t open it in webbrowser).Editor Useful Tools:
☐ Use ⌘ + control + up/down (ctrl + shift + up/down on Windows) to move tasks up and down.
☐ Use ⌘ + r to see a list of projects and quickly jump between them Filmtag 1 4 0.
★ See the Tutorial for more detailed information.
Settings
PlainTasks is an opinionated plugin, which means that it is highly configured to look in a specific way, but this does not mean that you can not customize it. If you feel that something does not look right and you want to change it, you can easily do it in your user settings file.
Go to
Preferences → Package Settings → PlainTasks
and open Settings - User
, there you can override all the default settings, to get an idea you can take a look at Settings - Default
.Here is a list of PlainTasks’ specific settings:
Setting | Default | Options/Description |
---|---|---|
open_tasks_bullet | ☐ | - ❍ ❑ ■ □ ☐ ▪ ▫ – -- ≡ → › [ ] |
done_tasks_bullet | ✔ | ✓ ☑ + [x] |
cancelled_tasks_bullet | ✘ | x [-] |
date_format | (%y-%m-%d %H:%M) | See strfti.me for quick reference; detailed documentation: ST2, ST3 |
done_tag | true | Determines whether done tasks should gain a @done tag or not |
done_date | true | Determines whether done tasks should gain a date or not |
before_tasks_bullet_margin | 1 | Determines the number of spaces (default indent) before the task bullet |
project_tag | true | Postfix archived task with project tag, otherwise prefix |
archive_name | Archive: | Make sure it is the unique project name within your todo files |
new_on_top | true | How to sort archived tasks (done_tag=true and default date_format are required) |
header_to_task | false | If true, a project title line will be converted to a task on the certain keystroke |
decimal_minutes | false | If true, minutes in lasted/wasted tags will be percent of hour, e.g. 1.50 instead of 1:30 |
tasks_bullet_space | whitespace or tab | String to place after bullet, might be any character(s) |
highlight_past_due | true | If true, highlight past, soon, and invalid @due(something) |
highlight_due_soon | 24 | Hours as int, threshold to define which @due will be soon |
scope_past_due | string.other.tag.todo.critical | Any scope, define color for past @due |
scope_due_soon | string.other.tag.todo.high | Any scope, define color for @due will be soon |
scope_misformatted | string.other.tag.todo.low | Any scope, define color for @due mismatch date_format |
icon_past_due | 'circle' | Gutter icon¹ |
icon_due_soon | 'dot' | Gutter icon¹ |
icon_misformatted | ' | Gutter icon¹ |
icon_critical | ' | Gutter icon¹ |
icon_high | ' | Gutter icon¹ |
icon_low | ' | Gutter icon¹ |
icon_today | ' | Gutter icon¹ |
show_remain_due | false | In Sublime 3, show remain or overdue time under due tags |
show_calendar_on_tags | false | In Sublime 3, if true, automatically show date picker when cursor is on tag (you can get date picker any time via context menu) |
due_preview_offset | 0 | Place preview date outside of parens of @due() , 1 — within |
due_remain_format | '{time} remaining' | {time} will be replaced with actual value |
due_overdue_format | '{time} overdue' | {time} will be replaced with actual value |
¹ Icon value can be
'dot'
, 'circle'
, 'bookmark'
, 'cross'
, '
, or custom relative path to existing png file,e.g. 'Packages/User/my-icon.png'
.Changing color scheme
If you don't like colors used in bundled schemes just copy any
.hidden-tmTheme
from PlainTasks to your User directory, change colors and paste the code below in your user settings file:N.B., sometimes you have to restart Sublime Text to apply changes made in tmTheme file.
N.B.,
scope_past_due
, scope_due_soon
, and scope_misformatted
settings can assign any scopes defined in tmTheme file, e.g. you can set 'scope_past_due': 'my.own.super.expired.whatever'
and then just add style definition in tmTheme for this scope.Taskpaper Compatibility
If you need to keep your files compatible with Taskpaper, go to
Preferences → Package Settings → PlainTasks
and open Settings - User
, thenadd these settings to the json file:Spell check
It is build-in feature of Sublime, you can toggle spell check with F6.
For convinience, you may add bullets in list of ignored words into
For convinience, you may add bullets in list of ignored words into
Preferences → Settings - User
, e.g.[BONUS] Custom todo icon
PlainTasks comes with a custom todo icon that you can find in the
icons
folder. You can assign it to your todo files to give them a better look and distinguish them from other plain text files. Google and find out how to assign a custom icon to a file type in your operating system.Taskpaper – Plain Text To Do Lists 3 5 13
[BONUS] Custom Statistics
Statistics of current file are represented in status-bar, based on
stats_format
, which is '$n/$a done ($percent%) $progress Last task @done $last'
by default — as you can see it’s just a string containing special directives (see table bellow) and regular chars.Directive | Description |
---|---|
$o | Amount of pending tasks |
$d | Amount of completed tasks |
$c | Amount of cancelled tasks |
$n | Sum of completed and cancelled tasks |
$a | Sum of all tasks |
$percent | Ratio of $n to $a |
$progress | Percent as pseudo graphics (absents if less than 10%) |
$last | Date of lastly completed task |
{{..}} | Return pending/completed/cancelled tasks which matched by regex .. ;e.g. {{@tag}} — amounts of tasks with @tag ; or {{@a |
So you can customise it as you like, by adding to
Settings - User
, e.g.Copy statistics
Bring up the command palette and type
Tasks: Copy Statistics
.Additional settings for progress bar
Taskpaper – Plain Text To Do Lists 3 5 12
Introduction to PlainTasks Screencast
PlainTasks for other editors
NOTE: These are separate projects, maintained by some awesome developers other than us.- Atom: Tasks plugin- Vim: Plaintasks.vim- Visual Studio Code: To Do Tasks- Visual Studio Code: Todo+
Contributors
You can contribute on github
Taskpaper – Plain Text To Do Lists 3 5 1/2
Inspiration
- Thanks to Chagel for the iTodo plugin.
- Thanks to Taskmate for TextMate.
- Thanks to TaskPaper Mac application from hogbaysoftware.com
License
Taskpaper – Plain Text To Do Lists 3 5 100
Copyright 2012-2013 Allen Bargi. Licensed under the MIT License