├── .editorconfig ├── .gitignore ├── .todo ├── .vscodeignore ├── changelog.md ├── license ├── package.json ├── readme.md ├── resources ├── demo │ ├── activity_bar_views.png │ ├── embedded.gif │ ├── project_statistics.png │ ├── project_statistics_adv.gif │ ├── statistics.png │ ├── syntax.png │ └── timer.gif ├── icons │ ├── activity_bar_logo.svg │ ├── clear_filter_dark.svg │ ├── clear_filter_light.svg │ ├── collapse_dark.svg │ ├── collapse_light.svg │ ├── expand_dark.svg │ ├── expand_light.svg │ ├── file_active_dark.svg │ ├── file_active_light.svg │ ├── files_dark.svg │ ├── files_light.svg │ ├── filter_dark.svg │ ├── filter_light.svg │ ├── open_file_dark.svg │ ├── open_file_light.svg │ └── tree_icon.svg ├── logo │ ├── logo-128x128.png │ ├── logo.png │ └── logo.psd ├── readme.todo └── test.todo ├── src ├── commands.ts ├── config.ts ├── consts.ts ├── extension.ts ├── providers │ ├── completion.ts │ └── symbols.ts ├── statusbars │ ├── statistics.ts │ └── timer.ts ├── todo │ ├── decorators │ │ ├── changes.ts │ │ ├── comment.ts │ │ ├── document.ts │ │ ├── formatted.ts │ │ ├── line.ts │ │ ├── project.ts │ │ ├── tag.ts │ │ ├── todo_cancelled.ts │ │ └── todo_done.ts │ ├── document.ts │ └── items │ │ ├── archive.ts │ │ ├── comment.ts │ │ ├── formatted.ts │ │ ├── index.ts │ │ ├── item.ts │ │ ├── line.ts │ │ ├── project.ts │ │ ├── tag.ts │ │ ├── todo.ts │ │ ├── todo_box.ts │ │ ├── todo_cancelled.ts │ │ ├── todo_done.ts │ │ └── todo_finished.ts ├── utils │ ├── ackmate.ts │ ├── archive.ts │ ├── ast.ts │ ├── command.ts │ ├── editor.ts │ ├── embedded │ │ ├── index.ts │ │ └── providers │ │ │ ├── abstract.ts │ │ │ ├── ag.ts │ │ │ ├── js.ts │ │ │ └── rg.ts │ ├── file.ts │ ├── files.ts │ ├── folder.ts │ ├── index.ts │ ├── init.ts │ ├── regex.ts │ ├── statistics.ts │ ├── statistics_tokens.ts │ ├── time.ts │ ├── todo.ts │ └── view.ts └── views │ ├── embedded.ts │ ├── files.ts │ ├── index.ts │ ├── items │ ├── file.ts │ ├── group.ts │ ├── item.ts │ ├── placeholder.ts │ └── todo.ts │ └── view.ts ├── syntax └── grammar.tmLanguage ├── tsconfig.json └── webpack.config.js /.editorconfig: -------------------------------------------------------------------------------- 1 | 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | end_of_line = lf 7 | indent_size = 2 8 | indent_style = space 9 | insert_final_newline = true 10 | trim_trailing_whitespace = true 11 | 12 | [*.md] 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *~ 2 | *.err 3 | *.log 4 | ._* 5 | .cache 6 | .fseventsd 7 | .DocumentRevisions* 8 | .DS_Store 9 | .TemporaryItems 10 | .Trashes 11 | Thumbs.db 12 | 13 | dist 14 | node_modules 15 | package-lock.json 16 | out 17 | -------------------------------------------------------------------------------- /.todo: -------------------------------------------------------------------------------- 1 | 2 | ☐ Moving projects up and down is buggy 3 | ☐ Due tag: @due(+timestamp) 4 | ☐ Add something in the gutter or the overview ruler to higlight them 5 | ☐ Formatting: 6 | ☐ Autocomplete these characters: *_~` 7 | ☐ Style/Code commands (cmd+b/i/s/`) 8 | ☐ https://github.com/neilsustc/vscode-markdown/blob/master/src/formatting.ts 9 | ☐ Maybe remove formatting in favor of `vscode-highlight` 10 | -------------------------------------------------------------------------------- /.vscodeignore: -------------------------------------------------------------------------------- 1 | **/*.map 2 | .gitignore 3 | .vscode-test/** 4 | .vscode/** 5 | out/test/** 6 | resources/*.gif 7 | resources/*.psd 8 | src/** 9 | test/** 10 | tsconfig.json 11 | webpack.config.js 12 | -------------------------------------------------------------------------------- /changelog.md: -------------------------------------------------------------------------------- 1 | ### Version 4.19.1 2 | - Fixed slow update of statistics decorations (fixes #210) (#367) (thanks to @squidfunk and @marvinhagemeister) 3 | - Minor code style tweaks 4 | 5 | ### Version 4.19.0 6 | - Added "todo.embedded.view.sortBy" setting 7 | 8 | ### Version 4.18.4 9 | - Ensuring ts-loader doesn’t prevent production builds to be made 10 | - Deleted repo-level github funding.yml 11 | - Added a dialog announcing the fundraising 12 | 13 | ### Version 4.18.3 14 | - Updated one regex matching projects to behave more predictably 15 | - Temporarily disabled support for AG and RG as embedded todos providers as a workaround 16 | 17 | ### Version 4.18.2 18 | - Improved support for project titles that contain a colon 19 | 20 | ### Version 4.18.1 21 | - Ensuring the only-active-file filter works 22 | 23 | ### Version 4.18.0 24 | - Added "venv" to the excluded paths 25 | - Added two new statistics tokens: `est-finished` and `est-finished-percentage` 26 | 27 | ### Version 4.17.1 28 | - Fixed some dependencies issues 29 | 30 | ### Version 4.17.0 31 | - Added the "est-total" statistics token 32 | - Minor style changes 33 | 34 | ### Version 4.16.0 35 | - Added built-in support for more filenames 36 | 37 | ### Version 4.15.0 38 | - Timekeeping: added support for the “hours” format 39 | 40 | ### Version 4.14.1 41 | - Hiding project-level statistics by default if a project doesn’t contain any todo 42 | 43 | ### Version 4.14.0 44 | - Ensuring that tags starting with a colon are supported too (e.g. `@:foo`) 45 | - Updated icons, using the new outline style 46 | - Embedded view: added support for filtering todos by file path 47 | - Embedded view: added a couple of standalone commands for filtering/unfiltering 48 | - Embedded view: added a button for viewing only the embedded todos of the active file 49 | - Added a “Todo: Embedded View - Toggle View All Files” command 50 | - Improved support for JSDoc-like comments 51 | 52 | ### Version 4.13.2 53 | - Always showing project statistics by default, even if all of its todos are completed 54 | 55 | ### Version 4.13.1 56 | - Statistics: removed tags limit 57 | 58 | ### Version 4.13.0 59 | - Embedded: excluding changelog files 60 | 61 | ### Version 4.12.0 62 | - Added Alt+Enter as an alias to Cmd/Ctrl+Enter 63 | 64 | ### Version 4.11.4 65 | - Ensuring curly braces in regexes are properly escaped 66 | 67 | ### Version 4.11.3 68 | - Avoiding using chokidar 69 | 70 | ### Version 4.11.2 71 | - Readme: added a link to Notable 72 | 73 | ### Version 4.11.1 74 | - Ignoring folders named `release` or `releases` 75 | 76 | ### Version 4.11.0 77 | - Fixed a regression regarding url-tags 78 | - Embedded: addded support for Dust.js 79 | - Embedded: added support for Mustache and Handlebars 80 | 81 | ### Version 4.10.1 82 | - Improved support for projects with tags 83 | 84 | ### Version 4.10.0 85 | - Added support for dark/light theme switching 86 | 87 | ### Version 4.9.4 88 | - Readme: using hi-res logo 89 | 90 | ### Version 4.9.3 91 | - Outputting modern code (es2017, faster) 92 | - Using "Debug Launcher" for debugging 93 | 94 | ### Version 4.9.2 95 | - Files view: ensuring external/global files outside of the home directory are supported 96 | 97 | ### Version 4.9.1 98 | - Files view: improved support for extarnal/global files 99 | 100 | ### Version 4.9.0 101 | - Smart indentation detection 102 | 103 | ### Version 4.8.6 104 | - Views: properly removing unnecessary groups 105 | 106 | ### Version 4.8.5 107 | - Fixed a regression caused by using WebPack 108 | 109 | ### Version 4.8.4 110 | - Lazily importing expensive dependencies 111 | 112 | ### Version 4.8.3 113 | - Fixed a regression 114 | 115 | ### Version 4.8.2 116 | - Bundling with webpack 117 | 118 | ### Version 4.8.1 119 | - Consts: faster initialization 120 | 121 | ### Version 4.8.0 122 | - Lazily inizialising the embedded provider 123 | - Refreshing the views automatically 124 | 125 | ### Version 4.7.0 126 | - Added single-cursor multi-line toggle support 127 | - Add `[lasted]`, `[wasted]` and `[elasped]` statistics tokens 128 | - Ensuring lazily evaluated tokens are only evaluated if they are actually needed 129 | - Computing expensive statistics tokens only if they are used 130 | 131 | ### Version 4.6.1 132 | - Embedded: add support for `//TODO (foo)` 133 | - Embedded: added support for JSDoc-style comments 134 | - Embedded view: ensuring the supported dot files are not excluded 135 | 136 | ### Version 4.6.0 137 | - Improved mouse support 138 | 139 | ### Version 4.5.2 140 | - Readme: added an option for jumping to the demo section 141 | 142 | ### Version 4.5.1 143 | - Added an `todo.archive.sortByDate` option 144 | - Archive: fixed a few bugs and improved performance 145 | 146 | ### Version 4.4.5 147 | - Fixed file-change detection 148 | - Files: excluding dot-directories by default 149 | - Simplified exclude globs 150 | 151 | ### Version 4.4.4 152 | - Excluding the “**/static” directory by default 153 | 154 | ### Version 4.4.3 155 | - Properly detecting the level of tab-indented todos 156 | 157 | ### Version 4.4.2 158 | - Ackmate: ensuring new line characters are matched 159 | 160 | ### Version 4.4.1 161 | - RG: normalizing paths under Windows 162 | 163 | ### Version 4.4.0 164 | - Added word-based suggestions 165 | 166 | ### Version 4.3.2 167 | - Embedded: updated regex 168 | 169 | ### Version 4.3.1 170 | - Added `todo.file.include` and `todo.file.exclude` settings 171 | - RG: finding the binary faster 172 | 173 | ### Version 4.3.0 174 | - Autocompletion: added support for tags inference 175 | 176 | ### Version 4.2.1 177 | - Updating the configuration dynamically 178 | - Embedded: updated exclude globs 179 | - Embedded: excluding the `vendor` directory 180 | - RG: properly checking if it’s included with VSC 181 | 182 | ### Version 4.2.0 183 | - Ensuring dot files are considered 184 | - Files view: added multi-root and multi-file support 185 | 186 | ### Version 4.1.2 187 | - Exclude directory `target`, used in Rust 188 | - Added an hint about the `todo` command 189 | - Improved support for `ag` and `rg` 190 | 191 | ### Version 4.1.1 192 | - ripgrep: checking if lookarounds are being used 193 | - Added a `todo.embedded.regexFlags` setting 194 | - File view: trimming labels 195 | - Embedded regex: improved description capturing 196 | - Embedded: added support for todos like `//TODO(bob)` 197 | - Embedded view: added a context menu option for opening files 198 | - AG/RG: added support for `include` and `exclude` patterns 199 | 200 | ### Version 4.1.0 201 | - Embedded: selecting the actual todo on click 202 | - Embedded: added support for The Silver Searcher and ripgrep 203 | 204 | ### Version 4.0.6 205 | - Checking if the configuration is valid 206 | 207 | ### Version 4.0.5 208 | - Normalizing paths under Windows 209 | 210 | ### Version 4.0.4 211 | - Embedded view: forcing types to be uppercase 212 | - Embedded view: added back filetype icons 213 | - Embedded view: fixed file labels under Windows 214 | 215 | ### Version 4.0.3 216 | - Views: showing a message in the absence of actual content 217 | - Embedded view: removed filetype icons in favor of more robust labels 218 | 219 | ### Version 4.0.0 220 | - Renamed `todo.file` setting to `todo.file.name` 221 | - Renamed `todo.defaultContent` setting to `todo.file.defaultContent` 222 | - Added a `File` activity bar view 223 | 224 | ### Version 3.0.0 225 | - Embedded: added a custom view to the activity bar 226 | - Embedded: added some settings for improved grouping customization 227 | - Embedded: ignoring binary files 228 | - Embedded: improved performance on subsequent queries 229 | 230 | ### Version 2.3.0 231 | - Added breadcrumb support 232 | - Embedded: fixed support for CRLF mode 233 | 234 | ### Version 2.2.1 235 | - Embedded: added support for AppleScript-like style comments 236 | 237 | ### Version 2.2.0 238 | - Added support for the new “Outline” view 239 | 240 | ### Version 2.1.4 241 | - Embedded: fixed support for folders and files names containing special characters 242 | 243 | ### Version 2.1.3 244 | - Fixed the `todo.statistics.statusbar.ignoreArchive` setting 245 | 246 | ### Version 2.1.2 247 | - Symbols: improved indentation 248 | - Statistics: ensuring all instances of each token get replaced 249 | 250 | ### Version 2.1.1 251 | - Readme: documented `Toggle Timer` command 252 | - Ensuring only non-preview editors get opened 253 | 254 | ### Version 2.1.0 255 | - Statistics: ensuring the statusbar item gets hidden when there are no files open 256 | - Replaced `Todo: Start` with `Todo: Toggle Start` 257 | - Estimate tag: improved regex 258 | - Added a timer for started todos 259 | - Added a `Todo: Toggle Timer` command 260 | 261 | ### Version 2.0.2 262 | - Embedded: removed todos counter in favor of project-level statistics 263 | - Statistics: fixed a typo 264 | 265 | ### Version 2.0.1 266 | - Statistics: added a `[tags]` token 267 | - Archive: avoiding creating it if there’s nothing to write in it 268 | - Improved support for tagging projects 269 | 270 | ### Version 2.0.0 271 | - Major refactoring 272 | - Substantial performance improvements 273 | - Removed support for triple-backticks code blocks 274 | - Removed support for tags inside code blocks 275 | - Symbols: showing also the parent symbol 276 | - Archive: added an option for removing empty projects 277 | - Archive: added an option for removing extra empty lines 278 | - Statistics: added support for a JS expression as the `enabled` condition 279 | - Statistics: added a `[comments]` token 280 | - Statistics: added a `[projects]` token 281 | - Statistics: improved support for `\t` as the indentation character 282 | - Settings: renamed `todo.symbols.cancel` to `todo.symbols.cancelled` 283 | - Settings: renamed `todo.colors.cancel` to `todo.colors.cancelled` 284 | - Commands: renamed `todo.toggleCancel` to `todo.toggleCancelled` 285 | 286 | ### Version 1.18.2 287 | - Project decorations: ensuring they get cleared when there are no more projects 288 | - Fixed a regression when removing tags 289 | 290 | ### Version 1.18.1 291 | - Supporting interacting with all support-but-not-setted symbols 292 | - Performance improvements 293 | 294 | ### Version 1.18.0 295 | - Readme: better separation between supported symbols 296 | - Readme: improved embedded todos description 297 | - Added some settings for disabling writing the time in `@created/started/done/cancelled` 298 | - Considering any todo with `@done` or `@cancelled` as finished 299 | - Project statistics: showing pending todos by default 300 | - Added support for using the same symbol for everything 301 | - Now compatible with TaskPaper 302 | 303 | ### Version 1.17.0 304 | - Using `RegExp#test` instead of `String#match` whenever possible 305 | - Added some date-diffing-related utilities 306 | - Added an option for setting the time format inside `@lasted/wasted` 307 | - Added support for time estimates 308 | 309 | ### Version 1.16.0 310 | - Added a couple of settings for customizing the `@project` tag 311 | - Added project-level statistics 312 | 313 | ### Version 1.15.0 314 | - Archive: added a `@project` tag 315 | 316 | ### Version 1.14.0 317 | - Archive: archiving comments too 318 | 319 | ### Version 1.13.1 320 | - Improved tag removal logic 321 | - Preserving cursors positions 322 | 323 | ### Version 1.13.0 324 | - Statistics: simplified tokens retrieval logic 325 | - Added a `Go to Symbol` provider 326 | 327 | ### Version 1.12.0 328 | - Added some statistics to the statusbar 329 | 330 | ### Version 1.11.1 331 | - Fixed a regression regarding toggling indented todos 332 | 333 | ### Version 1.11.0 334 | - Timekeeping: added support for a @created tag 335 | - Requiring a whitespace character after symbols 336 | 337 | ### Version 1.10.7 338 | - Removed `todo.embedded.limit` setting 339 | - Emebedded: filtering out `**/third_party` by default too 340 | 341 | ### Version 1.10.6 342 | - Embedded: showing a counter of todos under each type 343 | 344 | ### Version 1.10.5 345 | - Updated `todo.embedded.regex`, adding support for todos inside HTML-style comments 346 | 347 | ### Version 1.10.4 348 | - Added support for `[]` as a box symbol 349 | 350 | ### Version 1.10.3 351 | - Recommending the [Highlight](https://marketplace.visualstudio.com/items?itemName=fabiospampinato.vscode-highlight) extension 352 | - Embedded: improved support for things like “//TODO” 353 | 354 | ### Version 1.10.2 355 | - Readme: updated `todo.embedded.regex` 356 | - Updated `todo.file` description 357 | 358 | ### Version 1.10.1 359 | - Added support for embedded todos without a description 360 | - Embedded todos: fixed links to files in Windows 361 | 362 | ### Version 1.10.0 363 | - Recognizing a few more embedded todos 364 | 365 | ### Version 1.9.1 366 | - Updated readme 367 | 368 | ### Version 1.9.0 369 | - Tags: removed restriction for the `_` character 370 | - Added support for embedded todos 371 | 372 | ### Version 1.8.3 373 | - Added taskpaper to the keywords 374 | - Reordered keywords 375 | 376 | ### Version 1.8.1 377 | - README: specify plugin author on install command 378 | - Restricting single backtick codes to a single line 379 | - Added support for special tags with arguments 380 | 381 | ### Version 1.8.0 382 | - Added very basic support for TaskPaper 383 | 384 | ### Version 1.7.2 385 | - Updated readme 386 | 387 | ### Version 1.7.1 388 | - Properly getting the path of the currently active document 389 | 390 | ### Version 1.7.0 391 | - Added basic `Archive` functionalities 392 | - Added `Timekeeping` functionalities 393 | - Todo: fixed toggling of line containing only `☐` 394 | - Readme: linked `Demo` to the actual demo todo 395 | 396 | ### Version 1.6.1 397 | - Added support for comments starting with a double dash 398 | - Ensuring projects inside a code block don’t get decorated 399 | - Added triple backticks (```) code blocks supports 400 | 401 | ### Version 1.6.0 402 | - Added support for code blocks 403 | - Reduced probability that formatting is applied where not intended 404 | 405 | ### Version 1.5.3 406 | - Fixed multi-cursor support 407 | 408 | ### Version 1.5.2 409 | - Replaced `resourceLangId` with `editorLangId` 410 | 411 | ### Version 1.5.1 412 | - Ensuring most emails are not recognized as tags 413 | 414 | ### Version 1.5.0 415 | - Improved support for comments containing commas and tags 416 | - Added `X` and `[X]` to the supported symbols 417 | - Ensuring special tags are not confused with normal tags starting with the same characters 418 | - Added support for tags inside todos and comments 419 | - Fixed a Windows incompatibility 420 | 421 | ### Version 1.4.0 422 | - Added 3 commands to the command palette 423 | - Running keybindings only when editing a todo file 424 | - Fixed tags completion 425 | - Added an option for disabling markdown-like formatting 426 | 427 | ### Version 1.3.2 428 | - Updated readme 429 | 430 | ### Version 1.3.1 431 | - Fixed a regex 432 | 433 | ### Version 1.3.0 434 | - Added multi-root support 435 | 436 | ### Version 1.2.2 437 | - Added support for "⬜" as a box symbol 438 | 439 | ### Version 1.1.2 440 | - Added a link to Projects+ Todo+ 441 | 442 | ### Version 1.1.1 443 | - Minor code reorganization 444 | 445 | ### Version 1.0.1 446 | - Ensuring leading spaces won’t get decorated 447 | - Updated readme 448 | 449 | ### Version 1.0.0 450 | - Initial release 451 | -------------------------------------------------------------------------------- /license: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2017-present Fabio Spampinato 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a 6 | copy of this software and associated documentation files (the "Software"), 7 | to deal in the Software without restriction, including without limitation 8 | the rights to use, copy, modify, merge, publish, distribute, sublicense, 9 | and/or sell copies of the Software, and to permit persons to whom the 10 | Software is furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 20 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 21 | DEALINGS IN THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # Todo+ 2 | 3 |
4 |
5 |