Я предпочитаю использовать в своем рабочем процессе простые форматы, такие как plain-text файлы, Markdown, org-mode и т.д. Считаю org-mode образцовым инструментом для самого широкого спектра задач. Для меня это инструмент боллее универсальный, чем электронные таблицы или latex. Org-mode настолько крут, что он даже поддерживается в github, наряду с markdown. Но сейчас я расскажу не про org-mode, а про TaskPaper, который является его очень минималистичным аналогом.
Кстати, если кто-то хочет познакомиться с org-mode, предлагаю почитать вот эту конфигурацию для представления о возможностях этого пакета: Bernt Hansen org-mode setup. Настоятельно рекомендую этот невероятной крутости сетап всем, кто хоть немного интересуется Emacs и org-mode.
Приятно познакомиться, TaskPaper
TaskPaper преследует ту же самую идею, что и Markdown. Это простой текстовый формат для списков задач. Его удобно парсить, его удобно редактировать в любом текстовом редакторе, для него легко писать различные скрипты, его можно распечатать без какой-либо дополнительной обработки.
Но TaskPaper может быть использован не только для списков задач, но и как простой аутлайнер.
Вот пример обычного TaskPaper документа:
Проект A:
- Задача проекта A
- Вторая задача проекта A
- Вложенная задача
- Ещё вложенная задача
Заметка ко второй задаче
Заметка к проекту
Ещё заметка к проекту
Вложенный проект:
- Задача вложенного проекта
- Задача вложенного проекта 2
- Ещё задача
И заметка
Проект Б:
- Задача с высоким приоритетом @priority(100500)
- Завершенная задача @done(2013-09-24)
- Задача, запланированная на сегодня @today
- Задача, которая будет выполняться следующей @na @today
- Задача с примерами тегов @home @remind(2013-09-25 11:50) @ответственный(Вася)
При этом выглядеть такой документ в программе TaskPaper будет вот так:
Сама программа TaskPaper стоит дорого и я пока не решился её покупать. Но TaskPaper — это не только одноименная программа, но и сам формат описания списков задач простым текстом. Кроме того, сама программа TaskPaper мне не показалась удобной (нет того удобства, какое было в Emacs для файлов формата org-mode).
Альтернативные программы
В официальной wiki есть список программ и расширений для работы с TaskPaper файлами. Среди прочих, там есть и TextMate Bundle, и Taskpaper.el для Emacs.
Я решил попробовать работать с TaskPaper используя только TextMate 2 и различные скрипты. Первая проблема, с которой я столкнулся: TextMate bundle не полностью поддерживает формат: он не поддерживает теги. Вплоть до того, что в этом бандле используется другой способ отметить задачу как выполненную. Скорее всего, я буду дорабатывать этот bundle. И в первую очередь — поддержку тегов.
Выглядит предыдущий пример в TextMate вот так:
Кроме того, т.к. это plain text, то TaskPaper-файлы можно хранить в Dropbox, искать по ним в nvAlt, Spotlight, grep и т.д.
Т.к. я только начал использовать TaskPaper, у меня пока нет большой коллекции трюков для него. Но пару вещей я покажу уже сейчас.
Скрипты и трюки
Первое что я хотел бы показать, это скрипт next actions от евангелиста OS X Brett Terpstra.
Сам скрипт можно взять на github. Этот скрипт предназначен для работы с задачами, помеченными тегом @na. Этот тег означает next action из терминологии GTD. У каждого проекта или группы задач, одна задача должна быть выбрана как next action. Это та задача, которая будет выполняться, когда ты приступаешь к проекту. Но, на самом деле, никто не мешает отметить несколько задач этим тегом, чтобы выделить самые приоритетные задачи.
Функции этого скрипта:
- Без аргументов выводить na задачи из taskpaper файла в текущей директории.
- С аргументом -r выводить задачи рекурсивно (в скрипте задается количество уровней вложенности).
- С аргументом -a добавлять задачу в проект Inbox в файле todo.taskpaper в текущей директории.
- Выводить next actions из указанной директории, например: na Pro Blo выведет задачи из файла ./Projects/Blog/blog.taskpaper или любого другого со схожим путём к файлу.
Подробнее о том, как использовать скрипт, можно прочитать в readme.
И ещё одна вкусняшка: скрипт прописывается в PROMPT_COMMAND, таким образом он выводит все next задачи при переходе в директорию с taskpaper файлом. Получается что удобнее всего создавать отдельные для проектов taskpaper-файлы в директории проекта. Для этого в bash есть такой алиас:
alias tp='touch todo.taskpaper && open -a TextMate.app todo.taskpaper'
Он создает файл todo.taskpaper в текущей директории и открывает его в TextMate.
Alfred Workflow
Для того, чтобы быстро находить и открывать списки задач по проектам, ну и вообще не потеряться в куче taspaper-файлов, можно использовать Alfred. Для этого достаточно создать простой Workflow, который будет искать только по этим файлам. Мой вариант можно скачать здесь. Он позволяет видеть список всех файлов, фильтровать его и добавлять новые задачи. Я очень хочу сделать такой Workflow для Alfred, который позволит полноценно работать с задачами внутри списков — вывод, фильтрация, проставление тегов, добавление задач. Если я это сделаю, то обязательно опубликую Workflow в блоге. Но это задача, близкая к созданию альтернативы самому TaskPaper.
TaskPaper на iOS
TaskPaper есть и на iOS.