Track and sync your development todos with Todoist, right in VSCode!
Each command has a global user, workspace, and parameterized version. Both the global user and workspace commands will use the Todoist project set in your todoist.projectId
setting; if this is not set, then you will be prompted to choose or create a Todoist project. Parameterized commands, on the other hand, take the Todoist project as a parameter. Note that parameterized commands do not have a default keybinding, and instead require you to configure your own keybindings for them.
This VSCode extension adds several commands to the command palette:
Default Keybinding alt+t c.
Pop open an input box to capture a todo for your current project. If you have a text selection made when this is invoked, it will pre-populate the input field with a link to your current file and line number, for easy deep linking from the Todoist desktop app.
Default Keybinding alt+t t.
Shows all the incomplete todos in your current Todoist project. Selecting an item will toggle its completeness. Press Esc to dismiss the list.
Default Keybinding alt+t o.
If you have the Todoist desktop app installed, this will open or switch to the Todoist app and select your current project.
Default Keybinding alt+t C.
Pop open an input box to capture a todo for your global user project. If you have a text selection made when this is invoked, it will pre-populate the input field with a link to your current file and line number, for easy deep linking from the Todoist desktop app.
Default Keybinding alt+t T.
Shows all the incomplete todos in for your global user project. Selecting an item will toggle its completeness. Press Esc to dismiss the list.
Default Keybinding alt+t O.
If you have the Todoist desktop app installed, this will open or switch to the Todoist app and select your global user project.
No default keybinding.
Pop open an input box to capture a todo for the chosen Todoist project. If you have a text selection made when this is invoked, it will pre-populate the input field with a link to your current file and line number, for easy deep linking from the Todoist desktop app.
No default keybinding.
Shows all the incomplete todos in the chosen Todoist project. Selecting an item will toggle its completeness. Press Esc to dismiss the list.
No default keybinding.
If you have the Todoist desktop app installed, this will open or switch to the Todoist app and select your chosen project.
You can configure multiple shortcuts to help you open, list, and capture todos for your Todoist projects. To do this, you will need to add a keybinding for each shortcut you want to use. For example, to add a shortcut for a project with the id 123456789
, you would add the following to your keybindings.json
file:
{
"key": "ctrl+c+1",
"command": "extension.todoistCaptureId",
"args": "123456789" // here goes the project id
}
The commands you can use are:
extension.todoistCaptureId
extension.todoistTodosId
extension.todoistOpenId
For more information on how to configure keybindings, see the VSCode documentation.
Obviously this requires a Todoist account. To use "Todoist Open" and take advantage of the deep linking feature, you will also need the Todoist desktop app.
To install this extension, you can get it from VSCode store or open the command palette and enter:
ext install waymondo.todoist
Finally, run any extension command from the command palette and you will be prompted to enter your Todoist API token, which can be found here.
You may set todoist.projectId
in your user and workspaces settings manually or with the commands above.
-
Create a simple and lightweight method of capturing and organizing tasks on a per-project basis.
-
Leverage a well-featured todo app service instead of re-invent the wheel.
-
Todoist is a good candidate for such a service, since you can easily stay in touch with your todos on the go with their mobile apps.
-
Implement a way where the basic features can be used strictly from within VSCode.
I have not yet tested on any platforms other than macOS. Ideas for improvement and patches are welcome!