- Displays tags, such as TODO and FIXME, in a sidebar.
- 18023 Installs
This extension is allowed to:
- Read Files
- Launch Subprocesses
TODO Extension for Panic's Nova Code Editor
Displays tags, such as TODO and FIXME, in a sidebar in Panic's macOS code editor, Nova.
Now Supports Remote Environments
The extension offers many configuration options that can be set both globally for all workspaces and overridden for individual workspaces. For example, the extension can be configured to find additional tags, such as BUG, NOTE and INFO. See the "Configuration" section below for more information.
Enable the extension in the extension library within Nova.
Using TODO in Different Environments
Local Workspace Environments
The TODO extension is fully functional in locally stored workspaces. Tags anywhere in the project that are not contained in an ignored file or location, will be added to the sidebar. Global and workspace configuration will be honored in these environments.
Local Non-Workspace Environments
These environments refer to those where a file or files have been opened in Nova without a defined workspace. In other words, Nova is being used as a text editor and not to manage a project. Only the files open will display tags in the extension sidebar. While global configurations will be honored, there are no workspace configurations for these environments.
As of version 3.0, the TODO extension supports remote environments. Similar to local non-workspace environments, Only the files open will display tags in the extension sidebar. TODO will also honor global configuration settings, but cannot use workspace configuration options.
Additionally: At the time of writing, the TODO extension cannot currently open a file in a remote environment by double-clicking on the tag or file in the sidebar. This is due to limitations in the Nova API. If this feature is important to you, please contact Panic and tell them you would like this functionality to be made available to extensions.
Global configuration preferences apply to all workspaces unless they are overridden by a workspace configuration. To make changes to the global configuration, go to the extension library in Nova, select the TODO extension in the left hand side panel, and click on "Preferences". Configurable options are described below.
- Global Tag Case Matching - Detect only upper case (only TODO) or both upper case and lower case tags (TODO and todo).
- Global Included Tags - TODO and FIXME tags are always matched by the extension. However, additional tags can also be detected, including BROKEN, BUG, DEBUG, DEPRECATED, EXAMPLE, ERROR, ERR, FAIL, FATAL, FIX, HACK, IDEA, INFO, NOTE, OPTIMIZE, QUESTION, REFACTOR, REMOVE, REVIEW, TASK, TRACE, UPDATE, WARN, and WARNING. Keep in mind that detecting a larger number of tags might cause slower performance in larger workspaces.
- Global Ignored File and Directory Names - Exclude file and directory names from being searched. This setting accepts a list of names that should not be surrounded by any form of quotation marks. File names must include the file extension. Several names are ignored by default, including node_modules, tmp, .git, vendor, .nova, env, venv, and .gitignore.
- Global Ignored File Extensions - Exclude specific file extensions from being searched. This setting accepts a list of extension names that should not be surrounded by any form of quotation marks. While the extension can be preceded by a period, it is not necessary.
Workspace configuration preferences only apply to the current workspace and do not work in local non-workspace and remote environments. In most cases these settings can override the global preferences. To make changes to the workspace configuration, go to the "Project" menu in Nova and select "Project Settings...". In the subsequent dialog window, click on "TODO" under the "Extensions" header in the left hand side panel. Configurable options are described below.
- Workspace Tag Case Matching - By default, this is set to the global preference.
- Workspace Included Tags - Select any additional tags to be detected in the current workspace and change the "Included Tags" setting to "Use Workspace Preferences". Additional tags will not be detected until this change is made.
- Workspace Ignored File and Directory Paths - Exclude file and directory paths in the workspace. This accepts a list of paths that should not be surrounded by any form of quotation marks. It is usually easiest to press the "Choose..." button and select the path from the input window.
- Workspace Ignored File and Directory Names - This setting does not override the global preferences, but adds additional file and directory names to be excluded. Please see global preference screenshots above for examples.
- Workspace Ignored File Extensions - This setting does not override the global preferences, but adds additional file extensions to be excluded.
Planned Future Features
- Add additional custom tags.
- Filtering of tags by name.
The following features may be added if the functionality is made available through the Nova API. * Navigating to tags in documents within remote environments. * Tag highlighting within the code. * Tag notification in the sidebar icon.
Report a Bug or Feature Request
To report a bug or request a feature, please add an issue to the GitHub repository. Thanks!
- Improved appearance of some extension icons. Thanks to Pete Schaffner for this contribution!
- Fixed internal error preventing extension submission.
- Added support for tag detection with whitespace in addition to the : or  characters. Many thanks to Seth Battis for this contribution!
- Added upstream tag.
- Added support in markdown files.
- Fixed improper detection of tags when preceded by an underscore.
- Added the tag count after the tag name when sorting by tag instead of filename.
- Dramatically improved performance with rewritten extension.
- Improved stability.
- Added support for remote server environments.
- Added env and venv as default ignored directories (Issue #21).
- Fixed issue causing configuration changes to not save (Issue #8).
- Updated extension documentation to clarify updating ignored file and folder name preferences.
- Added a minimum Nova 4.1 runtime requirement.
- Fixed issue opening files occurring when double clicking a TODO item in Nova 1.4.
- Fixed configuration issue preventing extension submission.
- Added additional screenshots.
- Overhauled the extension's preferences to provide global and workspace specific configurations.
- Added the "FIX" tag.
- Added a preference to match on upper case (default) or upper and lower case tags.
- Updated the README to better explain the configuration options available.
- Added exclusion for files without file extensions.
- Fixed issue causing the expansion icon to appear next to tag items in the sidebar.
- Fixed issue causing the sidebar to be blank, instead of a "monitoring workspace" message when no tag results were found.
- Updated extension to set the cursor position when opening a tag item.
- Added the ability to sort by file or tag.
- Added markdown files to the default exclusions.
- Improved the recognition of tag comments.
- Fixed incorrect recognition of the warn tag in some situations.
- Added tag count to the tree view for each file.
- Changed message displayed in the sidebar when no tags are found.
- Added global preference recognition in non-workspace environments.
- Polished extension icons.
- Added the ability to search for additional tags, such as ERROR, INFO, and NOTE, in preferences (Issue #4).
- Fixed issue causing extension to fail when in an environment without a workspace (Issue #6).
- Modified tree view to display file names alphabetically.
- Fixed double loading of tree view items occurring in some situations.
- Updated the file searching method to eliminate the number of files limitation.
- Fixed issue preventing tag elements from loading in the tree view.
- Fixed issue causing the tree view to fail to update after file and extension configuration changes.
- Added MIT license file.
- Increased the maximum number of files that can be processed to 300. Too many files currently cause the extension to temporarily stop responding.
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.