mirror of
https://github.com/cursorless-dev/cursorless.git
synced 2024-10-04 21:07:21 +03:00
Don't let the cursor slow you down
starred-cursorless-dev-repostarred-repostructure-editortalonvoicevoicevoice-codingvscodevscode-extension
aa768597e6
## What Adds support for the `lua` programming language ## Checklist - [x] Recorded tests for the new language - [x] Used `"change"` / `"clear"` instead of` "take"` for selection tests to make recorded tests easier to read - [x] Added a few specific tests that use `"chuck"` instead of `"change"` to test removal behaviour when it's interesting, especially: - [x] `"chuck arg"` with single argument in list - [x] `"chuck arg"` with multiple arguments in list - [x] `"chuck item"` with single argument in list - [x] `"chuck item"` with multiple arguments in list - [x] Added `@textFragment` captures. Usually you want to put these on comment and string nodes. This enables `"take round"` to work within comments and strings. - [x] Added a test for `"change round"` inside a string, eg `"hello (there)"` - [-] Supported` "type"` both for type annotations (eg `foo: string`) and declarations (eg `interface Foo {}`) (and added tests for this behaviour 😊) - [x] Supported` "item"` both for map pairs and list entries (with tests of course) ## Scope Support | Supported | Tested | Term | Capture | Definition | Comment | | - | - | - | - | - | - | | ✓ | ✓ | `list` | `@list` | List type equivalent | - | | ✓ | ✓ | `inside list` | `@list.interior` | Inside of a list | - | | ✓ | ✓ | `map` | `@map` | Dictionary type equivalent | - | | ✓ | ✓ | `inside map` | `@map.interior` | Inside of a dictionary | - | | ✓ | ✓ | `key` | `@collectionKey` | Dictionary key equivalent | - | | ✓ | ✓ | `funk` | `@namedFunction` | A named function declaration | - | | ✓ | ✓ | `inside funk` | `@namedFunction.interior` | The inside of a lambda declaration | - | | ✓ | ✓ | `funk name` | `@functionName` | Name of declared function | - | | ✓ | ✓ | `lambda` | `@anonymousFunction` | A lambda declaration | - | | ✓ | ✓ | `inside lambda` | `@anonymousFunction.interior` | The inside of a lambda declaration | - | | ✓ | ✓ | `name` | `@name` | Variable name | - | | ✓ | ✓ | `value` | `@value` | Right-hand-side value of an assignment | - | | ✓ | ✓ | `value` | `@value` | Value returned from a function | - | | ✓ | ✓ | `value` | `@value` | Value of a key-value pair | - | | ✓ | ✓ | `state` | `@statement` | Any single coded statement | - | | ✓ | ✓ | `if state` | `@ifStatement` | An if conditional block | - | | ✓ | ✓ | `condition` | `@condition` | Condition of an if block | - | | ✓ | ✓ | `condition` | `@condition` | Condition of a while loop | - | | ✓ | ✓ | `condition` | `@condition` | Condition of a do while style loop | - | | - | - | `condition` | `@condition` | Condition of a for loop | - | | ✓ | ✓ | `condition` | `@condition` | Condition of a ternary expression | - | | ✓ | ✓ | `branch` | `@branch` | The resulting code associated with a conditional expression | - | | ✓ | ✓ | `comment` | `@comment` | Code comment | - | | ✓ | ✓ | `string` | `@string` | Single line strings | - | | ✗ | ✗ | `string` | `@string` | Multi-line strings | https://github.com/cursorless-dev/cursorless/pull/1962#issuecomment-1783674916 | | ✓ | ✓ | - | `@textFragment` | Used to capture string-type nodes (strings and comments) | - | | ✓ | ✓ | `call` | `@functionCall` | A function call (not a function definition) | - | | ✓ | ✓ | `callee` | `@functionCallee` | Name of the function being called | - | | ✓ | ✓ | `arg` | `@argumentOrParameter` | Arguments to functions and calls | - | | _ | _ | `class` | `@class` | Class or structure declaration | - | | _ | _ | `inside class` | `@class.interior` | The inside of a class declaration | - | | _ | _ | `class name` | `@className` | Name of class or structure declaration | - | | _ | _ | `type` | `@type` | Type declarations | - | --------- Co-authored-by: fidgetingbits <fidgetingbits@memeoid.cx> Co-authored-by: Pokey Rule <755842+pokey@users.noreply.github.com> |
||
---|---|---|
.github | ||
.meta-updater | ||
.vscode | ||
changelog | ||
cursorless-snippets | ||
cursorless-talon | ||
cursorless-talon-dev | ||
data/playground | ||
docs | ||
fonts | ||
images | ||
packages | ||
patches | ||
queries | ||
schemas | ||
scripts | ||
typings | ||
.editorconfig | ||
.eslintrc.json | ||
.git-blame-ignore-revs | ||
.gitignore | ||
.npmrc | ||
.pre-commit-config.yaml | ||
.prettierignore | ||
.prettierrc | ||
.syncpackrc.json | ||
CHANGELOG.md | ||
CONTRIBUTING.md | ||
LICENSE | ||
netlify.toml | ||
NOTICE.md | ||
package.json | ||
pnpm-lock.yaml | ||
pnpm-workspace.yaml | ||
pyproject.toml | ||
README.md | ||
SECURITY.md | ||
third-party-licenses.csv | ||
tsconfig.base.json | ||
tsconfig.json |
Welcome to Cursorless!
Cursorless is a spoken language for structural code editing, enabling developers to code by voice at speeds not possible with a keyboard. Cursorless decorates every token on the screen and defines a spoken language for rapid, high-level semantic manipulation of structured text.
Checkout the docs and videos to learn more. See installation for installation instructions.
And I heard you like GIFs?
Installation
Currently depends on Talon, though a keyboard version is planned.
See installation for installation instructions.
Extension Settings
This extension contributes the following settings:
cursorless.showOnStart
: Whether decorations should appear on workspace startcursorless.hatSizeAdjustment
: Percentage to increase or decrease hat size; positive increases sizecursorless.hatVerticalOffset
: How much to vertically shift the hats as a percentage of font size; positive is upcursorless.hatEnablement.colors
: Whether to enable particular hat colors.cursorless.hatEnablement.shapes
: Whether to enable particular hat shapes.cursorless.hatPenalties.colors
: How much to penalize each hat color. You will probably want to set this one to the number of syllables in the given style. Cursorless will then sort every style combination by number of syllables to refer to it.cursorless.hatPenalties.shapes
: How much to penalize each hat shape. You will probably want to set this one to the number of syllables in the given style. Cursorless will then sort every style combination by number of syllables to refer to it.cursorless.maximumHatStylePenalty
: The maximum allowed penalty for a hat style. Any hat style whose penalty is greater than this amount will not be used. A hat style penalty is defined to be the shape penalty plus the colour penalty. Setting this value less than or equal to zero is treated as no maximum.
Known Issues
- Cursorless calculates the position of the hats based on the characteristics of your font. If you find that the hats are off center you can try running this command:
cursorless.recomputeDecorationStyles
Contributing
See contributing.
Change Log
See CHANGELOG.md.
Attributions
See NOTICE.md.