Git Product home page Git Product logo

vscode-todo-plus's Introduction

Todo+

Logo

Manage todo lists with ease. Powerful, easy to use and customizable. View the demo.

Features

  • Easy to use: you're just a few shortcuts away from becoming a master
  • Portable: being a plain text format you can read and edit it using any editor
  • Custom symbols: you can replace the default symbols with any of the supported ones
    • Box: - [] [ ]
    • Done: + [x] [X] [+]
    • Cancelled: x X [-]
  • Custom colors: all colors can be customized
  • Custom special tags: special tags' names and their colors can be customized
  • Archive: you can move finished todos to a special "Archive" section with a shortcut
  • Formatting: you can format text in a markdown-like fashion, we support: bold, italic, strikethrough and code
  • Go To Symbol: you can easily move between projects by using the Go to Symbol in File... command
  • TaskPaper compatible: just set todo.symbols.box, todo.symbols.done and todo.symbols.cancelled to -
  • Timekeeping: you can mark todos as started and track elapsed time until completion
  • Timer: a timer can be displayed in the statusbar for started todos
  • Time estimates: you can estimate the time it will take to complete a todo by adding a tag to it that looks like this: @est(3 hours), @est(2h30m) or @2h30m. Then you can use the [est], [est-total], [est-finished] and [est-finished-percentage] tokens in statistics
  • Statistics: statistics about your entire file and/or project-level statistics about your individual projects
  • Embedded todos: it's common to have //TODO or //FIXME comments in our code, this extension can find those as well
  • Activity bar views: you can view your todo file and your embedded todos from a custom activity bar section

Install

Follow the instructions in the Marketplace, or run the following in the command palette:

ext install fabiospampinato.vscode-todo-plus

Usage

It adds 11 commands to the command palette:

'Todo: Open' // Open or create your project's todo file
'Todo: Open Embedded' // Open embedded todos
'Todo: Toggle Box' // Toggle todo's box symbol
'Todo: Toggle Done' // Toggle todo's done symbol
'Todo: Toggle Cancelled' // Toggle todo's cancelled symbol
'Todo: Toggle Start' // Toggle a todo as started
'Todo: Toggle Timer' // Toggle the timer
'Todo: Archive' // Archive finished todos
'Todo: Embedded View - Filter' // Filter the embedded todos view
'Todo: Embedded View - Clear Filter' // Clear the filter in the embedded todos view
'Todo: Embedded View - Toggle View All Files' // Toggle between viewing all files or only the current one

It adds 6 shortcuts when editing a Todo file:

'Cmd/Ctrl+Enter' // Triggers `Todo: Toggle Box`
'Alt+Enter' // Triggers `Todo: Toggle Box`
'Alt+D' // Triggers `Todo: Toggle Done`
'Alt+C' // Triggers `Todo: Toggle Cancelled`
'Alt+S' // Triggers `Todo: Toggle Start`
'Cmd/Ctrl+Shift+A' // Triggers  `Todo: Archive`

Settings

{
  "todo.file.name": "TODO", // Todo file name. Other supported names are: `*.todo`, `*.todos`, `*.task`, `*.tasks`, `*.taskpaper` and `todolist.txt`
  "todo.file.defaultContent": "\nTodo:\n  ☐ Item\n", // New todo files default content
  "todo.file.include": ["**/TODO", ...], // Globs to use for including files
  "todo.file.exclude": ["**/.!(todo|todos|task|tasks)/**", ...], // Globs to use for excluding files
  "todo.file.view.expanded": true, // Start the tree in an expanded state
  "todo.indentation": "  ", // String used for indentation
  "todo.symbols.box": "☐", // Box symbol
  "todo.symbols.done": "✔", // Done symbol
  "todo.symbols.cancelled": "✘", // Cancelled symbol
  "todo.colors.done": "#a6e22e", // Done todo color
  "todo.colors.cancelled": "#f92672", // Cancelled todo color
  "todo.colors.code": "#fd971f", // Code color
  "todo.colors.comment": "#75715e", // Comment color
  "todo.colors.project": "#66d9ef", // Project color
  "todo.colors.projectStatistics": "#4694a3", // Project statistics color
  "todo.colors.tag": "#e6db74", // Tag color
  "todo.colors.tags.background": ["#e54545", "#e59f45", "#e5d145", "#ae81ff"], // Special tags' background colors
  "todo.colors.tags.foreground": ["#000000", "#000000", "#000000", "#000000"], // Special tags' foreground colors
  "todo.colors.types": { "TODO": "#ffcc00", "FIXME": "#cc0000" ... }, // Object mapping todo types to their color
  "todo.colors.dark": { /* "done": "white", ... */ }, // Colors for dark themes
  "todo.colors.light": { /* "done": "black", ... */ }, // Colors for light themes
  "todo.tags.names": ["critical", "high", "low", "today"], // Special tags' names
  "todo.tags.namesInference": true, // Infer commonly used tags' names
  "todo.archive.name": "Archive", // Name of the special "Archive" section
  "todo.archive.remove.emptyProjects": true, // Remove projects without todos
  "todo.archive.remove.emptyLines": 1, // Remove extra empty lines, keeping no more than `emptyLinesThreshold` consecutive empty lines
  "todo.archive.project.enabled": true, // Enable the @project tag
  "todo.archive.project.separator": ".", // String used for joining multiple projects
  "todo.archive.sortByDate": false, // Sort lines by finished date
  "todo.formatting.enabled": true, // Enable markdown-like formatting
  "todo.timekeeping.created.enabled": false, // Enable the @created tag
  "todo.timekeeping.created.time": true, // Insert the time inside the @created tag
  "todo.timekeeping.created.format": "YY-MM-DD HH:mm", // Format used for displaying time inside @created
  "todo.timekeeping.started.time": true, // Insert the time inside the @started tag
  "todo.timekeeping.started.format": "YY-MM-DD HH:mm", // Format used for displaying time inside @started
  "todo.timekeeping.finished.enabled": true, // Enable the @done/cancelled tag. It's always enabled if you explicitly start a todo or if you use only 1 symbol
  "todo.timekeeping.finished.time": true, // Insert the time inside the @done/cancelled tag
  "todo.timekeeping.finished.format": "YY-MM-DD HH:mm", // Format used for displaying time inside @done/cancelled
  "todo.timekeeping.elapsed.enabled": true, // Enable the @lasted/wasted tag
  "todo.timekeeping.elapsed.format": "short-compact", // Format used for displaying time diff inside @lasted/waster
  "todo.timekeeping.estimate.format": "short-compact", // Format used for the `[est]`, `[est-total]`, `[est-finished]` and `[est-finished-percentage]` tokens
  "todo.timer.statusbar.enabled": true, // Show a timer for started todos in the statusbar
  "todo.timer.statusbar.alignment": "left", // Should the item be placed to the left or right?
  "todo.timer.statusbar.color": "", // The foreground color for this item
  "todo.timer.statusbar.priority": -10, // The priority of this item. Higher value means the item should be shown more to the left
  "todo.statistics.project.enabled": "global.projects < 100", // Show statistics next to a project, boolean or JS expression
  "todo.statistics.project.text": "([pending]) [est]", // Template used for rendering the text
  "todo.statistics.statusbar.enabled": "global.projects < 100 && project.all > 0", // Show statistics in the statusbar, boolean or JS expression
  "todo.statistics.statusbar.ignoreArchive": true, // Ignore the archive when rendering statistics in the statusbar
  "todo.statistics.statusbar.alignment": "left", // Should the item be placed to the left or right?
  "todo.statistics.statusbar.color": "", // The foreground color for this item
  "todo.statistics.statusbar.command": "", // Command to execute on click
  "todo.statistics.statusbar.priority": -1, // The priority of this item. Higher value means the item should be shown more to the left
  "todo.statistics.statusbar.text": "$(check) [finished]/[all] ([percentage]%)", // Template used for rendering the text
  "todo.statistics.statusbar.tooltip": "[pending] Pending - [done] Done - [cancelled] Cancelled", // Template used for rendering the tooltip
  "todo.embedded.regex": "(?:<!-- *)?(?:#|// @|//|/\\*+|<!--|--|\\* @|\\{!|\\{\\{!--|\\{\\{!) *(TODO|FIXME|FIX|BUG|UGLY|HACK|NOTE|IDEA|REVIEW|DEBUG|OPTIMIZE)(?:\\s*\\([^)]+\\))?:?(?!\\w)(?: *-->| *\\*/| *!}| *--}}| *}}|(?= *(?:[^:]//|/\\*+|<!--|@|--|\\{!|\\{\\{!--|\\{\\{!))|((?: +[^\\n@]*?)(?= *(?:[^:]//|/\\*+|<!--|@|--(?!>)|\\{!|\\{\\{!--|\\{\\{!))|(?: +[^@\\n]+)?))", // Regex used for finding embedded todos, requires double escaping
  "todo.embedded.regexFlags": "gi", // Regex flags to use
  "todo.embedded.include": ["**/*"], // Globs to use for including files
  "todo.embedded.exclude": ["**/.*", "**/.*/**", ...], // Globs to use for excluding files
  "todo.embedded.provider": "", // The provider to use when searching for embedded todos
  "todo.embedded.providers.ag.regex": "(?:#|// @|//|/\\*+|<!--|--|\\* @|\\{!|\\{\\{!--|\\{\\{!) *(TODO|FIXME|FIX|BUG|UGLY|HACK|NOTE|IDEA|REVIEW|DEBUG|OPTIMIZE)", // Regex used by ag, requires double escaping
  "todo.embedded.providers.ag.args": ['--ignore-case'], // Extra arguments to pass to ag
  "todo.embedded.providers.rg.regex": "(?:#|// @|//|/\\*+|<!--|--|\\* @|\\{!|\\{\\{!--|\\{\\{!) *(TODO|FIXME|FIX|BUG|UGLY|HACK|NOTE|IDEA|REVIEW|DEBUG|OPTIMIZE)", // Regex used by rg, requires double escaping
  "todo.embedded.providers.rg.args": ['--ignore-case'], // Extra arguments to pass to rg
  "todo.embedded.file.wholeLine": true, // Show the whole line
  "todo.embedded.file.groupByRoot": true, // Group embedded todos by workspace root
  "todo.embedded.file.groupByType": true, // Group embedded todos by type
  "todo.embedded.file.groupByFile": true, // Group embedded todos by file
  "todo.embedded.view.wholeLine": false, // Show the whole line
  "todo.embedded.view.sortBy": "line", // Sort todos either by label or by source line
  "todo.embedded.view.groupByRoot": true, // Group embedded todos by workspace root
  "todo.embedded.view.groupByType": true, // Group embedded todos by type
  "todo.embedded.view.groupByFile": true, // Group embedded todos by file
  "todo.embedded.view.expanded": true, // Start the tree in an expanded state
  "todo.embedded.view.icons": true // Show icons next to todos and types"
}

Changing some settings (symbols, colors, providers...) requires a restart.

An actual regex will be generated from the value of the todo.embedded.regex setting. It uses 2 capturing groups, the first one captures the type of the todo (TODO, FIXME etc.) and the second one captures an optional description (TODO: description).

Dates are formatted using moment.

Embedded Todos Providers

This extension supports various providers for searching for embedded todos, it'll use the one you set via the todo.embedded.provider setting or the first one available between:

  1. ag / The Silver Searcher: About 50x faster than the javascript provider, it'll use the regex defined under todo.embedded.providers.ag.regex. It must be installed in your system.
  2. rg / ripgrep: About 50x faster than the javascript provider, it'll use the regex defined under todo.embedded.providers.rg.regex. It doesn't support lookaheads and lookbehinds. It must be installed in your system, or Visual Studio Code must include it.
  3. javascript: Works on every system, but it's quite slow. This is the fallback provider.

ag and rg will use their specific regexes for finding the lines containing embedded todos, then those lines will be searched in using the regex defined under todo.embedded.regex.

Statistics Tokens

The following tokens can be used in todo.statistics.project.text, todo.statistics.statusbar.text and todo.statistics.statusbar.tooltip, they will be replaced with the value they represent.

Token Value
[comments] Number of comments
[projects] Number of projects
[tags] Number of tags
[pending] Number of pending todos
[done] Number of done todos
[cancelled] Number of cancelled todos
[finished] Number of finished todos
[all] Number of todos
[percentage] Percentage of finished todos
[est] Estimated time left
[est-total] Total estimated time
[est-finished] Estimated time of finished todos
[est-finished-percentage] Percentage of estimated time in finished todos
[lasted] Time the task lasted
[wasted] Time wasted on task
[elapsed] Sum of [lasted] and [wasted]

Demo

Example todo file

Embedded todos

Embedded

Activity bar views

Activity bar views

Statistics

Statistics

Project Statistics

Project Statistics Advanced

Timekeeping & Timer

Timekeeping & Timer

Hints

  • Dark/Light Themes: if you switch between dark and light themes, remember that you can provide specific colors for them via the todo.colors.dark.* and todo.colors.light.* settings, which will override the default todo.colors.* settings.

  • Activity Bar: you can switch the focus to the Todo activity bar view by assigning a shortcut to the workbench.view.extension.todo command.

  • Icons: icons can be used in todo.statistics.statusbar.text. Here you can browse a list of supported icons. If for instance you click the first icon, you'll get a page with .octicon-alert written in it, to get the string to use simply remove the .octicon- part, so in this case the icon name would be alert.

  • CLI: you can view your embedded todos from the command line with the todo command if you install ag and add the following to your shell configuration file:

alias todo="ag --color-line-number '1;36' --color-path '1;36' --ignore-case --print-long-lines --silent '(?:<!-- *)?(?:#|//|/\*+|<!--|--) *(TODO|FIXME|FIX|BUG|UGLY|HACK|NOTE|IDEA|REVIEW|DEBUG|OPTIMIZE)(?:\([^(]+\))?:?(?!\w)(?: *-->| *\*/|(?= *(?:[^:]//|/\*+|<!--|@|--))|((?: +[^\n@]*?)(?= *(?:[^:]//|/\*+|<!--|@|--))|(?: +[^@\n]+)?))'"

Related

  • Highlight: I recommend using this extension for highlighting your embedded todos.

  • Markdown Todo: Manage todo lists inside markdown files with ease.

  • Projects+ Todo+: Bird's-eye view over your projects, view all your todo files aggregated into one.

  • Noty: Autosaving sticky note with support for multiple notes, find/replace, programmers shortcuts and more. It implements a subset of the functionalities provided by this extension.

  • Notable: The markdown-based note-taking app that doesn't suck.

Contributing

If you found a problem, or have a feature request, please open an issue about it.

If you want to make a pull request you can debug the extension using Debug Launcher.

License

MIT © Fabio Spampinato

vscode-todo-plus's People

Contributors

avelino avatar bastibuck avatar eapyl avatar exceltrader avatar fabiospampinato avatar fabysgames avatar fractalpixel avatar jods4 avatar pzmarzly avatar regs01 avatar squidfunk avatar therealpadster avatar tvanyo avatar vruyr avatar waseemx10 avatar yemreak avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

vscode-todo-plus's Issues

Feature: Could you add full support for the @file tag please?

Hi, I was looking at how you implemented the @file tag in the open embedded, but I can't make it work without putting the entire file path, which doesn't really works for different computers.
If it already exists could you please add some documentation on how to use it. Thanks 👍

Use current theme's colors

Would it be possible to add an option to disable any/all custom colour assignments and highlight based on the current syntax theme's keyword colours? I appreciate it's not easy to know how well a given theme's colours will map onto the to-do list context, but it would be a convenient alternative for users of light themes, and those who change theme often.

Thanks for the great extension!

Change folder.uri.path to folder.uri.fsPath

const rootPaths = workspaceFolders.map ( folder => folder.uri.path ),

I've got the same problem as in #6 and #5
But wanted to test the extension)
I'm not quite good enough in TS and JS but after some searching and debugging, found, that in the line

return sortedRootPaths.find ( rootPath => basePath.startsWith ( rootPath ) );
the result of basePath.startsWith ( rootPath ) is false.
For example if argument is basePath = c:\Users\User\Projects\ProjectName\README.md
then after sorting:
sortedRootPaths = _.sortBy ( rootPaths, [path => path.length] ).reverse (); // In order to get the closest root

the sortedRootPaths contains rootPath = /c:/Users/User/Projects/ProjectName, so startsWith returns false.
I don't know what was the cause to use uri.path instead uri.fsPath (maybe it case sensetive in other OS?) but when I changed path to fsPath it worked fine)

Dear, fabiospampinato, can you review and fix the issue, or improve it some other way?

Underlines in code segments

Hey, Fabio. Thank you for your work, this extension has really boosted my productivity.

To the issue. I like to reference code symbols in my todos like so:

[ ] Fix an issue
  Relevant method: SomeClass.method_to_fix

But unfortunately formatting makes symbols looks badly if there are underlines in them. In the example above, to would be formatted in italics in the middle of method name.

Could you, maybe, make underlines only format text if there's space adjacent to them?

[ ] Fix an issue
  some_method_to_fix() -- no italics
  This is _very_ important -- italics

As a side note I would like to propose code segments formatting with backticks (`). These segments could get slightly different background color and could have other formatting features (stars and underlines) disabled inside them. Though I'm not sure this feature would be useful for anybody but me 😃

Archive task's comments with parent task

Hi, I've noticed that, when I embed non-task text into a task, complete the task, and archive, the embedded text stays where it is, and becomes embedded under the task above the archived one. Any chance we could change the behavior from:

ex1

to:

ex2

or at least have an option? Thanks, and thanks for the great plugin!

[Enchancement] Filter tasks by tag

Hello,

I would like to make a suggestion.

Could you create a command, in which you would put for example filter> @done: 18-02-06 and that only the tasks completed for that day would appear?

What I'm saying is making a command filter by tag.

Archive groups

Hi,
nice plugin. I use it every day :)

Sorry for double post.

Please delete

Preserve the cursor position when editing the tags

Right now when the extension adds/removes tags the cursor gets always moved to the end of the line, this is not optimal. Example (| is the cursor):

  1. ☐ foo |
  2. Todo: Start
  3. ☐ foo @started(18-05-20 00:52)|

While the last step should actually be:

  1. ☐ foo |@started(18-05-20 00:52)

Maintain the project structure (indentation) after moving todos to Archived

AS IS:

Given a todo structure where you have:

Project 1:

  • Feature 1

    • Todo 1-1
    • Todo 1-2
    • Todo 1-3

When todos nested in the structure are archived they become "flat", like in the image bellow

This means that it's hard to keep the proper context of done todos.

TO BE:

Todos when archived still maintain their structure, by also copying the project name, and parent todo if possible, like in the image bellow:

Issues:

  1. What to do in the situations where the parent todo is not marked and done, but the child is?

Perhaps would be nice to tint the parent todo to a slightly faded grey in the "archive" project, to show that it is not yet done, and when it's done show it in full normal color.

Archive destroys the "format"

It would be nice if the line could by hided as is now, but marked with a special icon instead of moved of line...

I propose for example: ⌨ as icon?

Maybe ☺ ☻ ▦ ▧ ▨ ▩ or something so it is not confused with other icons

Or keep the format of the things.... but in the cancelled section... so to interleave the projects and append at end of archived task... (but I think the first option is best, because you can mantain it in a git repo or something... well if needed)

ISO 8601 Date support

I would love ISO 8601 date support.

✔ Add support for ISO 8601 in Todo+ @done(2017-11-14 13:54)

todo file color option may be good

If the color of todo file is light or other color which is different with our source code files, that will be good.

Will this be hard to achieve it?

A tag for time estimates

Hi, I got an idea for a feature. It's not a small one, but I thought it doesn't hurt to suggest it.

So, I think it would be useful if a user could add a tag with an estimated duration to a task. Those estimates could then be automatically added up next to the encapsulating project title.

For example, if we have a todo-list like this:

Add that thing to project:
 ☐ plan it  
 ☐ implement it
 ☐ test it

then the user could add time estimates like this:

Add that thing to project:
 ☐ plan it @est 30m
 ☐ implement it @est 3h
 ☐ test it @est 1h30m

And when that's done, the user calls a VSCode action "Todo: update estimated times" and that would add up the estimates in the project title like this:

Add that thing to project (est: 5h):
 ☐ plan it @est 30m
 ☐ implement it @est 3h
 ☐ test it @est 1h30m

For nested projects, it would have to add up all item and child project estimates:

So when we start with these estimates:

My project:
  ☐ write documentation @est 2h
  That one feature:
	☐ item 1.1 @est 1h30m    
	☐ item 1.2 @est 45m    
  That other feature:
	☐ item 2.1 @est 1h
	☐ item 2.2 @est 10m   

the "update"-action would result in this:

My project (est: 5h25m)
  ☐ write documentation @est 2h
  That one feature (est: 2h15m):
	☐ item 1.1 @est 1h30m    
	☐ item 1.2 @est 45m    
  That other feature (est: 1h10m):
	☐ item 2.1 @est 1h
	☐ item 2.2 @est 10m    

because it adds up the "write doc"-item and the two sub-project titles.

If it's too much work, out of scope or just not doable, just close this, but I think this could be really useful.

In any case: Thanks a lot for this addon!

Archive only if sub-tasks are completed

When I press archive, I only want top level tasks with no incomplete nested tasks to be sent to the archive section with indentation preserved.

For example:

When archive is pressed, I should see the following

Archive:

On hold status

I often find myself the need to put some task on hold as I'm waiting for someone else to do something before I can proceed on that task. As for know i just put a comment below to remind myself but it would be great if you could put another status with colouring to distinguis it from other tasks that I haven't done yet.

Box does not get removed in 1.11.0 for intended tasks

Hi,

For Example:

☐ Archiving 
  ☐ Sort entries by finished time if possible @created(2018-05-20 06:13)
  ☐ Setting for adding the project as suffix to entries
  ☐ Move also entries' comments

After setting an intended ToDo (e.g. Sort entries...) to done, the box stays in place.
You get following output:

image

If you set it to Done again (removing it) you get an extra box at the beginning:
image

I think it is caused by 565b42e (Reverting it fixes it for me).

Format code sections with backticks (`)

Proposal to implement code sections formatting in the todo text with backticks (as in markdown).

These sections could be displayed with slightly different background color. Any other formatting features (bold and italics) inside code sections are disabled.

Suggested use case:

To reference or to sample source code.

Fix crashing on invalid user input:
  ☐ Find the reason of crashing
    Check `FormValidator`
    Line 32 `str.toLower()` does not expect null

[Feature Request] - Navigate via "Go to symbol"

Hi Fabio

any chance you will enable "go to symbol" (sh-cmd-O) using -for example- markdown header styles (#, ##, etcetera)?

Grazie for the work by the way, it is a major reason I migrated to vscode

Add @due(17-12-24)

It will be nice if possible to add a due date in green more than one week, red in date or after, yellow in the following 7 days... (or some like that)

Keystroke performance regression?

First off, thanks for the great extension!

Second, my installation updated to 1.17 today from a much older version (perhaps 1.10-ish? -- it's been a few weeks since I've restarted VS Code). What I noticed today on my existing todo file is that every keystroke has a CPU lag with it, which is really distracting.

I started a new empty todo file to see if that had the same issue. While it was unnamed, typing speed was fine. When I saved it as a todo+ file so the extension would kick in, it suddenly got laggy.

If you can point me to a guide on the internet for doing local vscode extension development, I can try to bisect the repository and see if I can locate what changed.

Improve scalability

The amount of work this extension performs scales with the number of lines, basically a file with 1000 lines will take 10 times more to decorate than a file with 100 lines.

At the moment, when the document changes, we trash all the previous decorations and start over, this will cause lags if the file is big enough.

Most of the times only one line or few lines change, usually there's no need to refresh the decorations for all the other lines.

Possible improvements:

  • Maybe deprecate multi-line code blocks (wrapped in ```), they make many things harder, including performance optimizations.
  • Cache untouched lines' decorations
  • Cache projects' tokens
  • Cache regexes results, right now "negative regexes" get run multiple times

Same symbols for normal/done/cancelled tasks

I wanted the symbol used for the every tasks, and done and cancelled tasks to be a - instead of ☐, ✔, and ✘.

I tried modifying "todo.symbols.done", "todo.symbols.cancel", and "todo.symbols.box", but it doesn't seem to be having any effect.

Multicursor support

Would it be possible to add multicursor support? An example of current behavior is shown below:

todoplus_multicursor

How can I copy the styles?

Hello, I'm not sure if it's possible; But I used an extension very similar to yours (by the way, excellent extension) that could copy all styles of the document. That is, the color.
Is it possible to do this too?

For example, I want to copy these tasks to the inbox of gmail.

Thank you.

More features need?

Previously i used SublimeText with plugin PlainTasks. Todo+ right now have no useful features, such add datetime stamp when task done/canceled, "archive" mode. Last feature really cool, it allow often not use scroll of screen to show all undone tasks, because all completed tasks you can send in "archive" by simple command or keys combination and keep you lists actual.

Extension doesn't work with VSCode 1.16

I have a standard release of VSCode open with my project folder loaded. There is a .vscode folder in the root, a node_modules folder and a number of other folders as per any standard JavaScript project.

When I try to use the command to open my todo file, I get an error saying that I need to have a project open in order to use the extension. What does this even mean? I do have a project open. Are you perhaps testing on the insiders build, which has the multiroot workspace stuff included? Or is there something else going on?

Extra Boxes Generated on Completed/Cancelled toggle

Just installed v1.10.3 and evaluating. I'm seeing unexpected behavior when I toggle a task completed or cancelled; instead of modifying the original box, it is adding boxes.

The settings I've modified are as follows:

…
    "todo.symbols.box": "[]",
    "todo.symbols.cancel": "[-]",
    "todo.symbols.done": "[x]",
    "todo.timekeeping.finished.format": "DD.MM.YY",
… 

If I start with this:
[] Some task
and hit ALT+D to "Complete" the task, I'm left with this:
[x] [] Some task @done(15.4.18)
Hitting ALT+D to "undo" the completion leaves me with:
[] [] Some task

I can repeat this ad nauseum. Seem like it is not checking for the existence of boxes.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.