Comprehensive TaskPaper support in Emacs


#1

First I have to admit that I love TaskPaper (both, the file format and the macOS app)! And because I love it so much and wanted to use my TaskPaper files on Windows and Linux machines at work, I created TaskPaper mode for Emacs, my editor of choice. The project is still in its early stages, but I consider it now to be quite stable and very useful, at least for me, working on different platforms other than macOS desktop.

screencast_01

screencast_02

Outstanding features include:

  • Incremental and non-incremental searching

    In incremental searching mode query results are updated instantly as you type, creating a sparse tree with all matches. Non-incremental searching requires you to type the entire query string before searching begins. This form of static, one-time querying (as opposed to incremental, on-the-fly querying) may be preferable in some situations, such as over slow network connections.

  • Fast selection interface for tags and search queries

    Fast selection interface allows you to save your commonly used tags and search queries and later select them with just a single key press.

  • Selective archiving under internal archive project or in external file

    The archiving behavior can be flexibly configured. The default archive location is a file in the same directory as the current file, with the name derived from the current file name. You can also choose what item to file archived items under.

  • Inline images

    You can toggle the inline display of linked images.

  • Multi-document support!

    For querying a collection of TaskPaper files, TaskPaper mode includes a powerful agenda mode. In this mode items from different TaskPaper files can be collected based on search queries and displayed in an organized way in a special agenda view, which can be further searched, inspected, and saved as a new TaskPaper document.

  • API for scripting and automation (Emacs Lisp)

    Users can automate and extend the functionality of TaskPaper mode using predefined hooks and API functions.

Full documentation and source code available on GitHub. Any comments, suggestions and improvements are welcome. Finally I would thank Jesse Grosjean for writing TaskPaper app, whose functionality and sleekness I wanted to bring to Emacs.

Update: The package is available on MELPA MELPA


Search and Sort
Scripts to set priority, and sort a project by priority
#2

Thanks for sharing this! If you have a moment I think you should add a link to your project to the TaskPaper Extensions Wiki Page:


#3

I haven’t actually tried this mode yet as I’m not much of an emac user, but I have looked through the git repo a bit… and wow, you’ve put a lot of work into this! :slight_smile:

It may be to late now, or not possible, but is emacs able to run JavaScript? I ask because if possible you might be able to use https://github.com/jessegrosjean/birch-outline to save yourself some code.


#4

Thank you @jessegrosjean, I do appreciate your feedback.

I am well aware of the open-source TaskPaper model layer, which allready gaves me some valuable implementation insights, and as far as I know, there is a number of ways to integrate Emacs with JavaScript subprocesses (i.e., using Node.js), but I actually wanted to keep things simple and avoid external dependencies.

Besides, in my case I can not really separate the editor part from the runtime model (maybe I’m wrong), so I have to implement the most functionality in Emacs Lisp anyway.


#5

Added a screencast showing the date/time prompt with live interpretation to the original post.