Dance 0.5.0 wishlist
See original GitHub issueIssue Description
Dance 0.5.0 is coming. It’s basically rewritten from scratch to be nicer to work on, and to add many more features that work well together.
It’s still very much a work in progress, but I’d like to know what features you’d like to see in this release, and more importantly what you’d like to do with the upcoming features.
At the source-code level, a new API is introduced, which is very easy to document and test. Having more tests will hopefully make Dance more stable in the long term. Also, the root commands
directory is removed, and instead all commands are defined directly in src/commands
using JSDoc
. Now, there is a single source of truth.
At the user level, a lot of things will change too:
- Status bar items are more useful.
- Most commands either take arguments or are implemented by passing arguments to existing commands.
- The “character” selection behavior is now designed to work with
"block"
cursor styles. It will no longer mess with your selections while you’re editing, so you won’t have single characters highlighted when navigating your code. It should also make it easier to work with for maintainers. - All modes are now custom. You can customize which mode is the default mode, as well as define your own modes that inherit from VS Code or from other custom modes. The default will still be the Kakoune-like
insert
/normal
modes, but I have other things modes in mind for the future. - A new command,
dance.run
, will be added. It will be able to run custom JavaScript code with access to the Dance API, allowing complex scripts (for instance, manipulating different selections individually).
The last thing I’d like to change is how keybindings are defined. I wanted to add a dance.defaultKeybindings
option / context value, but unfortunately even if we set this to false
the keybindings still appear in the command palette. As such I’d like to simple remove all default keybindings, and to add utilities in the Dance API for generating keybindings (that can then be pasted into keybindings.json
).
Another nice thing about this solution is that it would make supporting alternative keyboard layouts and Mac easier. Unfortunately, removing default keybindings may make it harder for new users to get started.
So, any feedback?
Issue Analytics
- State:
- Created 2 years ago
- Reactions:12
- Comments:21 (18 by maintainers)
We still find bugs from time to time, but I think it’s close to being as stable as 0.4 (if not more stable). The changes I made to history recently had me remove the command “Jump to last modification”, so I have to re-implement it and then it should be a few days until the release.
I’m getting close to being done with Dance 0.5. The remaining things before releasing it are:
Edit: I also just added something I had forgotten until now: safer settings. Until now, menus and modes could be overridden in the current workspace, and therefore they could be configured to silently execute arbitrary commands (with
dance.run
, that’s a no-no). With the latest changes to 0.5, if a menu item or mode already existed at the global level, workspace settings won’t be able to override the commands it might run.It might be nice to add a way to disable this on a per-workspace basis, but this will have to wait for a future release.
After this I’ll probably take a break from working on Dance, but for the near-ish future I’m planning:
keybindings
API, with support for other layouts like azerty.And after that hopefully I’ll release Dance 1.0 with a stable API and minimal bugs.