All notable changes to the "cursorless" extension will be documented in this file.
0.25.0 (2022-01-09)
We're beefing up our support for Jupyter notebooks. This release adds support for cross-cell cursor movement:
Expect more cool stuff in future releases.
- You can now abbreviate
"slice past"
to just"slice"
, eg"pre air slice bat"
instead of"pre air slice past bat"
Fixed bugs:
- Support moving cursor between cells in a notebook #420
- Support "key" and "value" with javascript object property shorthand #369
- fold/unfold requires funk modifier #72
- Fix bug with "every funk" in private class function #22
Merged pull requests:
- Configurable debounce delay #433 (pokey)
- Cross-cell set selection #430 (pokey)
- Hide decorations for selections that are larger than the viewport #403 (AndreasArvidsson)
- Re enable fold single line #401 (AndreasArvidsson)
- Scala support #399 (SCdF)
- Added support for user colors #386 and #132 (AndreasArvidsson)
- In typescript short hand property can be treated as key item or value #381 (AndreasArvidsson)
- Made range connective implicit if range type is given #136 (AndreasArvidsson)
0.24.1 (2021-12-23)
Merged pull requests:
0.24.0 (2021-12-21)
- Go #391 (trace-andreason)
- HTML #385 (AndreasArvidsson)
- Preliminary Clojure support #375 (pokey)
We now support targets which consist of matching pairs of parentheses, square brackets, curly brackets, etc. These targets make cursorless a lot more useful in places where we don't have a parse tree, for example in markdown, plaintext or within a string or comment. See the docs for more info, but in case you're one for GIFs:
And another one:
This scope type pairs nicely with the new "repack"
action:
We now support vertical ranges which put a selection on every line between the start and end of the range:
Here's a simple(-ish 😊) example:
And a more advanced one:
See the demo video for more.
It is now possible to bring multiple sources to a single destination using the "bring"
and "move"
actions. The type of the source / destination will be used to determine how the sources are joined.
Here's an example where we bring multiple lines to the current cursor position:
And here's an example with an explicit destination:
There's too much new stuff in this release to fit in a highlights reel, so we'll be releasing more videos, GIFs, and blurbs over the next couple weeks. In the meantime, below is a comprehensive list of PRs and issues included in this release.
Implemented enhancements:
- Basic clojure support #373
- Modifier that allows you to put cursor on column in every row between two targets #345
- Support "round rewrap" action #270
- Auto-join multiple targets with new lines #237
- Add text-based surrounding pair implementation #218
- Support auto-joining multiple arguments #184
- Add "remove cursor" action #95
- Support "enclosing <symbol>" transformation #14
- Don't write
hat_styles.csv
if there was error reading VSCode settings #134 - Be more robust to not finding settings file #119
- Pop up notification when there is a problem finding / loading vscode settings #91
- Change some default terms #66
Fixed bugs:
- Text-based surrounding pair doesn't work in json strings #364
- Angle bracket surrounding pair for type parameters in typescript #363
- Fix Typescript text-based surrounding pairs #355
- Hats don't show up when the line contains a
£
#315 - Automatic token expansion doesn't work if token is offscreen #298
- "chuck type" leaves trailing colon #281
- Use time stamps for decorated marks #249
- Improve and unify selection updating behaviour to handle overlapping ranges #138
- Duplicate symbols after VS Code update #111
- Fold action not working properly with multiple list elements #39
- The
clear
command clashes with community commands #68
Closed issues:
- Fix Windows CI regression #388
- Add code links to hat snapshots doc #358
- Add scope type for condition/guard #336
- Get unit tests working again #16
- Update scope type documentation #124
- Replace try/except with hasattr #117
- Not recognising colour/shape modifiers #100
- Cheatsheet surrounding pair delimiters; other improvements #67
Merged pull requests:
- Filter out single-line targets for
fold
action #400 (pokey) - Fix inside-outside for implicit targets #398 (pokey)
- Upgrade tests #397 (pokey)
- Handle angle brackets within an error node #396 (pokey)
- Allow to fold single line #394 (AndreasArvidsson)
- Adding Language Support for Go #391 (trace-andreason)
- Added default configuration for padding top #390 (AndreasArvidsson)
- Allow non-yaml files in recorded tests dir #387 (pokey)
- Added html language implementation #385 (AndreasArvidsson)
- Fixed selection bug and added source mark to copy lines #384 (AndreasArvidsson)
- Only show debug log in development mode #380 (AndreasArvidsson)
- Reworked decorations debounce delay with special exception for scrolling #377 (AndreasArvidsson)
- Added support for user define custom actions #376 (AndreasArvidsson)
- Preliminary clojure support #375 (pokey)
- Include generic in java type definition #372 (AndreasArvidsson)
- Fix doc links #371 (pokey)
- Fix JSON surrounding pairs #370 (pokey)
- Added a rebounce delay setting #368 (AndreasArvidsson)
- Fix typescript angle bracket pair #367 (pokey)
- Add rewrap action #365 (pokey)
- Add hat snapshot documentation code links #362 (pokey)
- Disabled statement block on typescript #359 (AndreasArvidsson)
- Change column modified to range vertical connector #353 (AndreasArvidsson)
- Implemented strict here selection type #352 (AndreasArvidsson)
- Column selection type #351 (AndreasArvidsson)
- Add wrapper to avoid multiple done calls #350 (pokey)
- Increase number of test retries #349 (pokey)
- Added action remove selection #348 (AndreasArvidsson)
- Delimiter selector updated #347 (AndreasArvidsson)
- Fix spinning unmatched delimiter #343 (pokey)
- Added specific typescript type selector #342 (AndreasArvidsson)
- Added conditions scope type #341 (AndreasArvidsson)
- Updated leading and trailing delimiters for before and after positions #340 (AndreasArvidsson)
- Join sources on single destination #339 (AndreasArvidsson)
- Removed additional highlight before scroll #337 (AndreasArvidsson)
- Implementation of modulo line numbers #333 (AndreasArvidsson)
- Regex updates #326 (AndreasArvidsson)
- Textual paired delimiters #324 (pokey)
- Hat snapshots #318 (pokey)
- Dispose of decorations #307 (pokey)
- Improved update selections #306 (pokey) Avoid updating CSV on error reading VSCode settings #137 (pokey)
- Fix rewrap in cheatsheet #133 (pokey)
- Some cheatsheet improvements #129 (pokey)
- Settings file robustness #128 (pokey)
- Update scope type documentation #127 (pokey)
- Added support for user define custom actions #125 (AndreasArvidsson)
- Change default terms #123 (pokey)
- Black CI #122 (pokey)
- Csv pipe #121 (AndreasArvidsson)
- Add rewrap action #120 (pokey)
- Ignore settings #118 (AndreasArvidsson)
- Changed column modified to range vertical connector #116 (AndreasArvidsson)
- Added identity modifier. Added head tail modifier to csv #115 (AndreasArvidsson)
- Added strict here selection type #114 (AndreasArvidsson)
- Column selection type #113 (AndreasArvidsson)
- Added action remove selection #110 (AndreasArvidsson)
- Added conditions scope type #108 (AndreasArvidsson)
- Moved wrap action to talon file #106 (AndreasArvidsson)
- Implementation of modulo line numbers #105 (AndreasArvidsson)
- Improve surrounding pairs #104 (pokey)
- Take snapshots of hat map #101 (pokey)
0.23.0 (2021-10-27)
There is now experimental support for wrapping a target in a snippet. See the docs for more info. Expect snippet insertion and automatic snippet creation in the next release.
Implemented enhancements:
- Support "wrap with snippet" #21
Closed issues:
- Change inference rule for “bring <mark> to <scopeType>” #283
Merged pull requests:
- Stop using end of range as inference source #301 (pokey)
- Change mark inference #300 (pokey)
- Snippet wrap #296 (pokey)
- Tweak svg files #290 (pokey)
- Snippet wrap #94 (pokey)
0.22.0 (2021-10-06)
One of the biggest changes in this release is support for customizing nearly every spoken form via csv. So if you find the color name "plum" hard to remember, you can just change it to "pink". Or if "format" as an action name is just too long for you, change it to "form". The spoken forms in your csv's will be preserved across cursorless updates, even if we change the default spoken form going forward.
If you have a fork of cursorless-talon just to change some spoken forms, please try out the new csv's! Should make updating cursorless-talon much easier in the future 😊. If you still need to maintain a fork for some other reason, please file an issue. We'd like cursorless-talon to be the same for all users, so that we can move to a talon plugin model in the future.
Another major usability issue addressed in this release is the fact that you will run out of dots on a text-heavy screen, or when trying to target other splits. We now support 10 new shapes. You can turn them on with one click in your extension settings, as described in the docs. And of course, you can change the spoken form for any shape as described above.
If you find it difficult to distinguish the colors, and tweaking them doesn't work, you can just turn some colors off with one click in the same way you turn shapes on / off. Adding a couple of shapes will more than make up for the lost hats.
There was a bug where cursorless hats would obstruct the target area when clicking with the mouse. This issue didn't affect cursorless operation, but was quite painful when using a mouse / eyetracker. That issue is now fixed.
- You may need to tweak your hat sizes, because we made a fix to the algorithm that computes them based on font size
Implemented enhancements:
- Invert color settings #271
- Do one more pass at shapes and colors #269
- Treat hex colors as single tokens #266
- Regular expression splits words with swedish characters #252
- Add modifier preferences support #230
- Implement delimiter generators for "change" #219
- Switch svg colour code to use themes properly #212
- Add action term override csv #40
Fixed bugs:
- "take every value" is broken in python #257
- SVG hat obstructs click target area #110
- Fix decoration appearing after GitLens Current Line Blame #92
Closed issues:
- Move token scope type code out of navigation map #236
- Filter out duplicate selections #228
- Set decoration sleep timeout to 0 during tests #175
- Fix nondeterministic test failures #173
- Review all identifiers #62
- Add missing things to cheatsheet #17
Merged pull requests:
- Support value for return value #285 (pokey)
- Support multiple destinations for call action #284 (pokey)
- Invert color settings #280 (pokey)
- Support triple backtick #279 (pokey)
- Put identifier before repeatable symbols #278 (AndreasArvidsson)
- Add new hats and preprocessing script #277 (pokey)
- Added support for unicode characters in regular expression #275 (AndreasArvidsson)
- Added triple quote to regular expression #274 (AndreasArvidsson)
- Fix SVG alignment and click box #273 (pokey)
- Fix color tokens #268 (pokey)
- Tweak default colors #267 (pokey)
- Rename purple to pink #263 (pokey)
- master => main #262 (pokey)
- Add suffixedMatcher; use for keys #260 (pokey)
- Fix "take every value" in python #258 (pokey)
- Add a bunch of new hats #256 (pokey)
- Fix copy when focus is not on editor #255 (pokey)
- Multiple hat styles #253 (pokey)
- Renames for csv overrides PR #248 (pokey)
- Add cell selection type #246 (pokey)
- Improve badges #245 (pokey)
- Retry tests and remove sleep #239 (pokey)
- General cleanup #235 (AndreasArvidsson)
- Fix anonymous functions #232 (pokey)
- Fix VSCode settings watch #85 (pokey)
- Fix broken shape #84 (pokey)
- Patch from main #82 (pokey)
- Turn hats off by default; add 'play' hat #80 (pokey)
- Fix typos #76 (devnll)
- Rename purple to pink #75 (pokey)
- master => main #74 (pokey)
- Add new shape documentation #73 (pokey)
- Add
revealTypeDefinition
action #72 (pokey) - Add a bunch of new hats #71 (pokey)
- Fix cheat sheet #70 (pokey)
- hat-shapes #69 (pokey)
- csv overrides #63 (AndreasArvidsson)
0.21.0 (2021-08-17)
Implemented enhancements:
- Improve error messages for sub token modifiers #201
- Rename
xmlAttribute
scope type toattribute
#198 - Change highlight for insert new empty line #139
- Add "source" mark #107
- Add "reversed" modifier #99
- Add "reverse" action #98
- Add "sort" action #97
- Scope modifier for regex #89
- Support
"map"
and"item"
modifiers for pattern destructuring #85 - Support "reformat as" action #74
- Support head and tail modifiers #70
- Support duplication of lines #55
- Support numeric ranges for insert #48
- Support absolute line number mark #44
- Standardize and align on terms for map entries and list elements #40
- Support "call" action #38
- Add "phones" action #31
- Support "replace with" action #15
- Support subword for token containing cursor #10
- Infer type of first swap argument #8
Fixed bugs:
- "Value" scope type in Python doesn't work when value contains array index #223
- "Take past end of token" doesn't work #222
- "token" modifier doesn't work with ranges #221
- "take every key" and "take every value" are broken #220
- "Chuck past end of T" removes trailing delimiter #209
- Containing token inference doesn't work next to single-character token #200
- "float" highlights wrong line when applied to last line of file #197
- Breakpoint action not working on mac #195
- "take block" ends up with reversed selection #155
- "dupe block" should add an extra newline before the new block #154
- "Pour block" creates new line after the wrong line #153
- Space delimiter code is too aggressive #152
"arg"
modifier doesn't work in javascript #109- Support Javascript template literals for string scope #86
- Fix function transformation in Typescript with "export default" #20
- Merge sequential pending change highlights #2
Closed issues:
- Switch to flow-style for simple objects in test yaml dump #161
- Implement scope modifier for argument name #144
- Add documentation for how to add a new language #132
- Change "copy", "paste" and "cut" actions by moving selection and using built-ins #127
- Error: Cannot read property 'rootNode' of undefined #113
- Make test case recorder #59
- "token" selection type should expand to nearest containing token #37
- Change “if” to “if state” #50
- Try “pre” instead of “pree” #22
Merged pull requests:
- Fixed bug with array in pair value #241 (AndreasArvidsson)
- Fix cross-split selections #233 (pokey)
- Bugfixes: past token, past end of, subtoken out of range, sort tokens #229 (AndreasArvidsson)
- Check ancestors for every #227 (AndreasArvidsson)
- Add newlines to end of yaml test cases #226 (pokey)
- Added matching backtick quotes #211 (AndreasArvidsson)
- Let parse tree errors through #207 (pokey)
- Updated how line decorations are shown #194 (AndreasArvidsson)
- Add docs for adding a new language #187 (pokey)
- Add support for C++ #186 (dgrunwald)
- Treat line numbers as proper marks #180 (AndreasArvidsson)
- docs cleanup #179 (pokey)
- Added tests for head, tail and line numbers #178 (AndreasArvidsson)
- Added documentation for test recorder #177 (AndreasArvidsson)
- Test on PR and push to master #172 (brxck)
- Converted test recorder for bulk recordings #169 (AndreasArvidsson)
- Add surrounding pair modifier (#3) #168 (maciejklimek)
- Declarative language definition #151 (AndreasArvidsson)
- Don't do inference from end to start #143 (AndreasArvidsson)
- Added action replace #135 (AndreasArvidsson)
- Test Case Recorder #87 (brxck)
- Fix cheat sheet #60 (pokey)
- Attempt to optimize dfa #57 (pokey)
- Add surrouding_pair modifier #55 (maciejklimek)
- Add action inspect; rename several actions #54 (AndreasArvidsson)
- Cheat sheet bug: Updated with new list name #53 (AndreasArvidsson)
- Switch subtoken to ordinals_small #52 (pokey)
- Updated cheat sheet with new actions and modifiers #49 (AndreasArvidsson)
- Updates to actions and modifiers #48 (AndreasArvidsson)
- Added spoken form to API #46 (AndreasArvidsson)
- Added modifiers row up down #44 (AndreasArvidsson)
- Added action call #43 (AndreasArvidsson)
- Added source mark #42 (AndreasArvidsson)
- Added actions sort and reverse #41 (AndreasArvidsson)
- Added modifiers head and tail #39 (AndreasArvidsson)
- Updated scope modifiers #37 (AndreasArvidsson)
- Expand sub piece to token #36 (AndreasArvidsson)
- Added actions: replace, phones, formatter, find #33 (AndreasArvidsson)
- C# support #137 (sterlind)
- Added action duplicate #134 (AndreasArvidsson)
- Added support to exclude start or end token in ranges #131 (AndreasArvidsson)
- Added action set breakpoint #130 (AndreasArvidsson)
- Fixed bug with two adjacent tokens #129 (AndreasArvidsson)
- Added selection type paragraph #125 (AndreasArvidsson)
- implemented actions puff, float, drop #122 (AndreasArvidsson)
- Subtokens support reversed order ordinals #121 (AndreasArvidsson)
- added find all action #120 (AndreasArvidsson)
- Infer missing end mark on ranges #118 (AndreasArvidsson)
- Added actions: indent, dedent, comment #116 (AndreasArvidsson)
- Implemented paste action #115 (AndreasArvidsson)
- Improved error message ensureSingleEditor #133 (AndreasArvidsson)
- Added function listenForDocumentChanges #126 (AndreasArvidsson)
- Support "move", "bring to after" / "move to after", and properly cleaning up spaces / newlines on delete
- Add support for untrusted workspaces (#104)
- Add cheatsheet (
"cursorless help"
) cursorless-talon#1
- Svg Hats (#66)
- Add type modifier (#32)
- Updated regexp to support fixed tokens and sequential symbols (#33)
- Add name modifier (#56)
- Added actions to scroll target top/center (#58)
- Fix subword for all caps tokens (#67)
- Support "character" subtoken modifier (eg "take fine third character") (thanks @brxck!)
- Support
insertLineBefore
andinsertLineAfter
actions ("drink" and "pour")
- Support "file" selection type to refer to the entire file
- Improve error messages
- Add subword support
- [python] Fix parameter modifier
- Show exceptions to user
- Properly support using "token" to select only token, eg "take funk gust and
token fine" to prevent "fine" from being inferred to have the
function
modifier. - Support "bring" action to use another target from elsewhere in the document
- Simplify token regex
- Add Python support
- Support "string" and "comment" scope types
- Support "fold", "unfold", and "swap" actions
- Support "cut" action (default term in vscode-talon is "carve")
- Support "copy" action
- Support "that" to refer to previous target
- Support "extract" action to extract to constant
- Support pair key and value nodes
- Support selecting all siblings
- Support wrap
- Add support for arguments and pairs