cursorless/packages/cursorless-vscode/package.json
Pokey Rule 8d15172586
Release 0.29.0 (#2621)
## Checklist

- [-] I have added
[tests](https://www.cursorless.org/docs/contributing/test-case-recorder/)
- [x] I have updated the
[docs](https://github.com/cursorless-dev/cursorless/tree/main/docs) and
[cheatsheet](https://github.com/cursorless-dev/cursorless/tree/main/cursorless-talon/src/cheatsheet)
- [-] I have not broken the cheatsheet

---------

Co-authored-by: Phil Cohen <phillip@phillip.io>
2024-08-02 19:13:23 +00:00

1289 lines
42 KiB
JSON

{
"name": "@cursorless/cursorless-vscode",
"displayName": "Cursorless",
"description": "Structural voice coding at the speed of thought",
"private": true,
"icon": "images/logo.png",
"galleryBanner": {
"color": "#00001A",
"theme": "dark"
},
"badges": [
{
"url": "https://img.shields.io/badge/documentation-yes-brightgreen.svg?logo=data:image/svg%2bxml;base64,PHN2ZyBhcmlhLWhpZGRlbj0idHJ1ZSIgZm9jdXNhYmxlPSJmYWxzZSIgZGF0YS1wcmVmaXg9ImZhcyIgZGF0YS1pY29uPSJib29rIiBjbGFzcz0ic3ZnLWlubGluZS0tZmEgZmEtYm9vayBmYS13LTE0IiByb2xlPSJpbWciCiAgICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NDggNTEyIj4KICAgIDxwYXRoIGZpbGw9IndoaXRlIiBkPSJNNDQ4IDM2MFYyNGMwLTEzLjMtMTAuNy0yNC0yNC0yNEg5NkM0MyAwIDAgNDMgMCA5NnYzMjBjMCA1MyA0MyA5NiA5NiA5NmgzMjhjMTMuMyAwIDI0LTEwLjcgMjQtMjR2LTE2YzAtNy41LTMuNS0xNC4zLTguOS0xOC43LTQuMi0xNS40LTQuMi01OS4zIDAtNzQuNyA1LjQtNC4zIDguOS0xMS4xIDguOS0xOC42ek0xMjggMTM0YzAtMy4zIDIuNy02IDYtNmgyMTJjMy4zIDAgNiAyLjcgNiA2djIwYzAgMy4zLTIuNyA2LTYgNkgxMzRjLTMuMyAwLTYtMi43LTYtNnYtMjB6bTAgNjRjMC0zLjMgMi43LTYgNi02aDIxMmMzLjMgMCA2IDIuNyA2IDZ2MjBjMCAzLjMtMi43IDYtNiA2SDEzNGMtMy4zIDAtNi0yLjctNi02di0yMHptMjUzLjQgMjUwSDk2Yy0xNy43IDAtMzItMTQuMy0zMi0zMiAwLTE3LjYgMTQuNC0zMiAzMi0zMmgyODUuNGMtMS45IDE3LjEtMS45IDQ2LjkgMCA2NHoiPjwvcGF0aD4KPC9zdmc+",
"href": "https://www.cursorless.org/docs/",
"description": "Documentation"
},
{
"url": "https://img.shields.io/github/workflow/status/cursorless-dev/cursorless-vscode/Run%20Tests?logo=github&label=tests",
"href": "https://github.com/cursorless-dev/cursorless/actions/workflows/test.yml?query=branch%3Amain",
"description": "Tests"
}
],
"version": "0.29.0",
"publisher": "pokey",
"license": "MIT",
"repository": {
"type": "git",
"url": "https://github.com/cursorless-dev/cursorless.git"
},
"homepage": "https://www.cursorless.org/",
"engines": {
"vscode": "^1.75.1"
},
"extensionKind": [
"ui",
"workspace"
],
"categories": [
"Other"
],
"keywords": [
"Voice coding"
],
"extensionDependencies": [
"pokey.parse-tree"
],
"activationEvents": [
"onLanguage"
],
"main": "./extension.cjs",
"capabilities": {
"untrustedWorkspaces": {
"supported": true
}
},
"contributes": {
"views": {
"cursorless": [
{
"type": "webview",
"id": "cursorless.tutorial",
"name": "Tutorial"
},
{
"id": "cursorless.scopes",
"name": "Scopes"
}
]
},
"commands": [
{
"command": "cursorless.toggleDecorations",
"title": "Cursorless: Toggle decorations"
},
{
"command": "cursorless.recomputeDecorationStyles",
"title": "Cursorless: Recompute decoration styles"
},
{
"command": "cursorless.recordTestCase",
"title": "Cursorless: Record test case"
},
{
"command": "cursorless.recordOneTestCaseThenPause",
"title": "Cursorless: Record one test case, then pause"
},
{
"command": "cursorless.pauseRecording",
"title": "Cursorless: Pause test case recording"
},
{
"command": "cursorless.resumeRecording",
"title": "Cursorless: Resume test case recording"
},
{
"command": "cursorless.recordScopeTests.showUnimplementedFacets",
"title": "Cursorless: Bulk record unimplemented scope facets"
},
{
"command": "cursorless.recordScopeTests.saveActiveDocument",
"title": "Cursorless: Bulk save scope tests for the active document"
},
{
"command": "cursorless.showDocumentation",
"title": "Cursorless: Show documentation"
},
{
"command": "cursorless.showScopeVisualizer",
"title": "Cursorless: Show the scope visualizer"
},
{
"command": "cursorless.hideScopeVisualizer",
"title": "Cursorless: Hide the scope visualizer"
},
{
"command": "cursorless.analyzeCommandHistory",
"title": "Cursorless: Analyze collected command history"
},
{
"command": "cursorless.tutorial.start",
"title": "Cursorless: Start a tutorial",
"enablement": "false"
},
{
"command": "cursorless.tutorial.next",
"title": "Cursorless: Tutorial next"
},
{
"command": "cursorless.tutorial.previous",
"title": "Cursorless: Tutorial previous"
},
{
"command": "cursorless.tutorial.restart",
"title": "Cursorless: Tutorial restart"
},
{
"command": "cursorless.tutorial.resume",
"title": "Cursorless: Tutorial resume"
},
{
"command": "cursorless.tutorial.list",
"title": "Cursorless: Tutorial list"
},
{
"command": "cursorless.documentationOpened",
"title": "Cursorless: Used by talon to notify us that the docs have been opened; for use with tutorial",
"enablement": "false"
},
{
"command": "cursorless.command",
"title": "Cursorless: The core cursorless command",
"enablement": "false"
},
{
"command": "cursorless.repeatPreviousCommand",
"title": "Cursorless: Repeat the previous Cursorless command"
},
{
"command": "cursorless.showQuickPick",
"title": "Cursorless: Pop up a quick pick of all cursorless commands",
"enablement": "false"
},
{
"command": "cursorless.showCheatsheet",
"title": "Cursorless: Display the cursorless cheatsheet",
"enablement": "false"
},
{
"command": "cursorless.internal.updateCheatsheetDefaults",
"title": "Cursorless: Update the default values of the cheatsheet payload used on the website and for local development. Be sure to run this on stock community and cursorless.",
"enablement": "false"
},
{
"command": "cursorless.private.logQuickActions",
"title": "Cursorless: Log the quick actions available at the current cursor position",
"enablement": "false"
},
{
"command": "cursorless.takeSnapshot",
"title": "Cursorless: Take a snapshot of the current editor state",
"enablement": "false"
},
{
"command": "cursorless.keyboard.escape",
"title": "Cursorless: Should be mapped to the escape key when using cursorless keyboard. By default, exits modal keyboard mode, but changes behaviour when Cursorless is expecting a continuation keystroke. For example, when you type a color and Cursorless is waiting for a character, it cancels the color and switches back to modal mode.",
"enablement": "false"
},
{
"command": "cursorless.keyboard.targeted.targetHat",
"title": "Cursorless: Sets the keyboard target to the given hat",
"enablement": "false"
},
{
"command": "cursorless.keyboard.targeted.targetScope",
"title": "Cursorless: Sets the keyboard target to the scope containing the current target",
"enablement": "false"
},
{
"command": "cursorless.keyboard.targeted.targetSelection",
"title": "Cursorless: Sets the keyboard target to the current selection",
"enablement": "false"
},
{
"command": "cursorless.keyboard.targeted.clearTarget",
"title": "Cursorless: Clears the current keyboard target",
"enablement": "false"
},
{
"command": "cursorless.keyboard.targeted.runActionOnTarget",
"title": "Cursorless: Run the given action on the current keyboard target",
"enablement": "false"
},
{
"command": "cursorless.keyboard.modal.modeOn",
"title": "Cursorless: Turn on the cursorless modal mode",
"enablement": "false"
},
{
"command": "cursorless.keyboard.modal.modeOff",
"title": "Cursorless: Turn off the cursorless modal mode",
"enablement": "false"
},
{
"command": "cursorless.keyboard.modal.modeToggle",
"title": "Cursorless: Toggle the cursorless modal mode",
"enablement": "false"
},
{
"command": "cursorless.keyboard.undoTarget",
"title": "Cursorless: Undo keyboard targeting changes",
"enablement": "false"
},
{
"command": "cursorless.keyboard.redoTarget",
"title": "Cursorless: Redo keyboard targeting changes",
"enablement": "false"
}
],
"colors": [
{
"id": "cursorless.pendingDeleteBackground",
"description": "Background color to use for ranges about to be deleted",
"defaults": {
"dark": "#ff00008a",
"light": "#ff00008a",
"highContrast": "#ff00008a"
}
},
{
"id": "cursorless.referencedBackground",
"description": "Background color to use for ranges that are being referenced",
"defaults": {
"dark": "#00a2ff4d",
"light": "#00a2ff4d",
"highContrast": "#00a2ff4d"
}
},
{
"id": "cursorless.justAddedBackground",
"description": "Background color to use for ranges that have just been added",
"defaults": {
"dark": "#09ff005b",
"light": "#09ff005b",
"highContrast": "#09ff005b"
}
},
{
"id": "cursorless.pendingModification0Background",
"description": "Background color to use for ranges that are being changed",
"defaults": {
"dark": "#8c00ff86",
"light": "#8c00ff86",
"highContrast": "#8c00ff86"
}
},
{
"id": "cursorless.pendingModification1Background",
"description": "Background color to use for ranges that are being changed",
"defaults": {
"dark": "#ff009d7e",
"light": "#ff009d7e",
"highContrast": "#ff009d7e"
}
},
{
"id": "cursorless.highlight0Background",
"description": "Background color to use for explicitly requested highlights",
"defaults": {
"dark": "#d449ff42",
"light": "#d449ff42",
"highContrast": "#d449ff42"
}
},
{
"id": "cursorless.highlight1Background",
"description": "Background color to use for explicitly requested highlights",
"defaults": {
"dark": "#60daff7a",
"light": "#60daff7a",
"highContrast": "#60daff7a"
}
},
{
"id": "cursorless.timingCalibrationBackground",
"description": "Background color to use for calibrating timing when recording a video",
"defaults": {
"dark": "#230026",
"light": "#230026",
"highContrast": "#230026"
}
}
],
"configurationDefaults": {
"editor.padding.top": 2
},
"configuration": {
"title": "Cursorless",
"properties": {
"cursorless.showOnStart": {
"type": "boolean",
"default": true,
"description": "Whether to show decorations on vscode start."
},
"cursorless.commandHistory": {
"type": "boolean",
"default": false,
"order": 2,
"description": "Keep a local, sanitized command history. This history is never sent to our servers, and any commands that may contain text will be sanitized. These statistics can be used in the future for doing local analyses to determine ways you can improve your Cursorless efficiency. We may also support a way for you to send your statistics to us for analysis in the future, but this will be opt-in only."
},
"cursorless.tokenHatSplittingMode.preserveCase": {
"type": "boolean",
"default": false,
"markdownDescription": "Whether to distinguish between uppercase and lower case letters for hats. Set this to `true` if you have separate terms for uppercase letters in your `<user.any_alphanumeric_key>` capture."
},
"cursorless.tokenHatSplittingMode.lettersToPreserve": {
"type": "array",
"items": {
"type": "string"
},
"default": [],
"description": "A list of characters whose accents should not be stripped. This can be used, for example, if you would like to strip all accents except for those of a few characters, which you would add to this list."
},
"cursorless.tokenHatSplittingMode.symbolsToPreserve": {
"type": "array",
"items": {
"type": "string"
},
"default": [],
"markdownDescription": "A list of symbols that shouldn't be normalized by the token hat splitter. Add any extra symbols here that you have added to your `<user.any_alphanumeric_key>` capture. Unlike the Accents To Preserve setting, these symbols won't even undergo case normalisation, so you would need separate terms for the lowercase and uppercase versions (if the symbol has a notion of upper and lower case)."
},
"cursorless.decorationDebounceDelayMs": {
"type": "number",
"default": 50,
"description": "How quickly to redraw hats in response to scrolling or cursor movement"
},
"cursorless.debug": {
"type": "boolean",
"default": false,
"description": "Whether to show debug logs."
},
"cursorless.pendingEditDecorationTime": {
"type": "integer",
"default": 100,
"description": "How long in milliseconds to show a pending edit decoration"
},
"cursorless.hatSizeAdjustment": {
"type": "number",
"default": 0,
"description": "Percentage to increase or decrease hat size; positive increases size",
"order": 0
},
"cursorless.hatVerticalOffset": {
"type": "number",
"default": 0,
"description": "How much to vertically shift the hats as a percentage of font size; positive is up",
"order": 1
},
"cursorless.wordSeparators": {
"type": "array",
"items": {
"type": "string"
},
"default": [
"_"
],
"scope": "language-overridable",
"markdownDescription": "A list of characters that separate words in identifiers. For example `_` splits `hello_world` into two words.",
"order": 6
},
"cursorless.colors.dark": {
"description": "Colors to use for dark theme",
"type": "object",
"order": 5,
"properties": {
"default": {
"type": "string"
},
"blue": {
"type": "string"
},
"green": {
"type": "string"
},
"red": {
"type": "string"
},
"pink": {
"type": "string"
},
"yellow": {
"type": "string"
},
"userColor1": {
"type": "string"
},
"userColor2": {
"type": "string"
}
},
"default": {
"default": "#B9B6CD",
"blue": "#089ad3",
"green": "#36B33F",
"red": "#E02D28",
"pink": "#E06CAA",
"yellow": "#E5C02C",
"userColor1": "#6a00ff",
"userColor2": "#ffd8b1"
},
"additionalProperties": false
},
"cursorless.colors.light": {
"description": "Colors to use for light theme",
"type": "object",
"order": 4,
"properties": {
"default": {
"type": "string"
},
"blue": {
"type": "string"
},
"green": {
"type": "string"
},
"red": {
"type": "string"
},
"pink": {
"type": "string"
},
"yellow": {
"type": "string"
},
"userColor1": {
"type": "string"
},
"userColor2": {
"type": "string"
}
},
"default": {
"default": "#757180",
"blue": "#089ad3",
"green": "#36B33F",
"red": "#E02D28",
"pink": "#e0679f",
"yellow": "#edb62b",
"userColor1": "#6a00ff",
"userColor2": "#ffd8b1"
},
"additionalProperties": false
},
"cursorless.scopeVisualizer.colors.dark": {
"description": "Colors to use for scope visualizer with dark themes",
"type": "object",
"properties": {
"domain": {
"type": "object",
"properties": {
"background": {
"type": "string",
"format": "color"
},
"borderSolid": {
"type": "string",
"format": "color"
},
"borderPorous": {
"type": "string",
"format": "color"
}
}
},
"content": {
"type": "object",
"properties": {
"background": {
"type": "string",
"format": "color"
},
"borderSolid": {
"type": "string",
"format": "color"
},
"borderPorous": {
"type": "string",
"format": "color"
}
}
},
"removal": {
"type": "object",
"properties": {
"background": {
"type": "string",
"format": "color"
},
"borderSolid": {
"type": "string",
"format": "color"
},
"borderPorous": {
"type": "string",
"format": "color"
}
}
},
"iteration": {
"type": "object",
"properties": {
"background": {
"type": "string",
"format": "color"
},
"borderSolid": {
"type": "string",
"format": "color"
},
"borderPorous": {
"type": "string",
"format": "color"
}
}
}
},
"default": {
"domain": {
"background": "#00e1ff18",
"borderSolid": "#ebdeec84",
"borderPorous": "#ebdeec3b"
},
"content": {
"background": "#ad00bc5b",
"borderSolid": "#ee00ff78",
"borderPorous": "#ebdeec3b"
},
"removal": {
"background": "#ff00002d",
"borderSolid": "#ff000078",
"borderPorous": "#ff00004a"
},
"iteration": {
"background": "#00725f6c",
"borderSolid": "#00ffd578",
"borderPorous": "#00ffd525"
}
}
},
"cursorless.scopeVisualizer.colors.light": {
"description": "Colors to use for scope visualizer with light themes",
"type": "object",
"properties": {
"domain": {
"type": "object",
"properties": {
"background": {
"type": "string",
"format": "color"
},
"borderSolid": {
"type": "string",
"format": "color"
},
"borderPorous": {
"type": "string",
"format": "color"
}
}
},
"content": {
"type": "object",
"properties": {
"background": {
"type": "string",
"format": "color"
},
"borderSolid": {
"type": "string",
"format": "color"
},
"borderPorous": {
"type": "string",
"format": "color"
}
}
},
"removal": {
"type": "object",
"properties": {
"background": {
"type": "string",
"format": "color"
},
"borderSolid": {
"type": "string",
"format": "color"
},
"borderPorous": {
"type": "string",
"format": "color"
}
}
},
"iteration": {
"type": "object",
"properties": {
"background": {
"type": "string",
"format": "color"
},
"borderSolid": {
"type": "string",
"format": "color"
},
"borderPorous": {
"type": "string",
"format": "color"
}
}
}
},
"default": {
"domain": {
"background": "#00e1ff18",
"borderSolid": "#19171984",
"borderPorous": "#1211123b"
},
"content": {
"background": "#ad00bc5b",
"borderSolid": "#ee00ff78",
"borderPorous": "#ee00ff4e"
},
"removal": {
"background": "#ff00002d",
"borderSolid": "#ff000078",
"borderPorous": "#ff00004a"
},
"iteration": {
"background": "#00725f6c",
"borderSolid": "#00ffd578",
"borderPorous": "#00ffd525"
}
}
},
"cursorless.hatEnablement.colors": {
"description": "Which colors to enable",
"type": "object",
"order": 2,
"properties": {
"blue": {
"type": "boolean"
},
"green": {
"type": "boolean"
},
"red": {
"type": "boolean"
},
"pink": {
"type": "boolean"
},
"yellow": {
"type": "boolean"
},
"userColor1": {
"type": "boolean"
},
"userColor2": {
"type": "boolean"
}
},
"default": {
"blue": true,
"green": true,
"red": true,
"pink": true,
"yellow": true,
"userColor1": false,
"userColor2": false
},
"additionalProperties": false
},
"cursorless.hatEnablement.shapes": {
"markdownDescription": "Which shapes to enable. See the [docs](https://www.cursorless.org/docs/#shapes) if you're not sure which shape name corresponds to which hat shape.",
"type": "object",
"order": 3,
"properties": {
"bolt": {
"type": "boolean"
},
"curve": {
"type": "boolean"
},
"fox": {
"type": "boolean"
},
"frame": {
"type": "boolean"
},
"play": {
"type": "boolean"
},
"wing": {
"type": "boolean"
},
"hole": {
"type": "boolean"
},
"ex": {
"type": "boolean"
},
"crosshairs": {
"type": "boolean"
},
"eye": {
"type": "boolean"
}
},
"default": {
"bolt": false,
"curve": false,
"fox": false,
"frame": false,
"play": false,
"wing": false,
"hole": false,
"ex": false,
"crosshairs": false,
"eye": false
},
"additionalProperties": false
},
"cursorless.maximumHatStylePenalty": {
"description": "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.",
"type": "number",
"default": 0
},
"cursorless.hatPenalties.colors": {
"description": "How much to penalize each hat color. Number of syllables is a good default",
"type": "object",
"properties": {
"blue": {
"type": "number"
},
"green": {
"type": "number"
},
"red": {
"type": "number"
},
"pink": {
"type": "number"
},
"yellow": {
"type": "number"
},
"userColor1": {
"type": "number"
},
"userColor2": {
"type": "number"
}
},
"default": {
"blue": 1,
"green": 1,
"red": 1,
"pink": 1,
"yellow": 1,
"userColor1": 1,
"userColor2": 1
},
"additionalProperties": false
},
"cursorless.hatPenalties.shapes": {
"description": "How much to penalize each hat shape. Number of syllables is a good default",
"type": "object",
"properties": {
"bolt": {
"type": "number"
},
"curve": {
"type": "number"
},
"fox": {
"type": "number"
},
"frame": {
"type": "number"
},
"play": {
"type": "number"
},
"wing": {
"type": "number"
},
"hole": {
"type": "number"
},
"ex": {
"type": "number"
},
"crosshairs": {
"type": "number"
},
"eye": {
"type": "number"
}
},
"default": {
"bolt": 1,
"curve": 1,
"fox": 1,
"frame": 1,
"play": 1,
"wing": 1,
"hole": 1,
"ex": 1,
"crosshairs": 1,
"eye": 1
},
"additionalProperties": false
},
"cursorless.individualHatAdjustments": {
"description": "Separate adjustments for each hat shape",
"type": "object",
"default": {
"default": {
"sizeAdjustment": 0,
"verticalOffset": 0
},
"bolt": {
"sizeAdjustment": 0,
"verticalOffset": 0
},
"curve": {
"sizeAdjustment": 0,
"verticalOffset": 0
},
"fox": {
"sizeAdjustment": 0,
"verticalOffset": 0
},
"frame": {
"sizeAdjustment": 0,
"verticalOffset": 0
},
"play": {
"sizeAdjustment": 0,
"verticalOffset": 0
},
"wing": {
"sizeAdjustment": 0,
"verticalOffset": 0
},
"hole": {
"sizeAdjustment": 0,
"verticalOffset": 0
},
"ex": {
"sizeAdjustment": 0,
"verticalOffset": 0
},
"crosshairs": {
"sizeAdjustment": 0,
"verticalOffset": 0
},
"eye": {
"sizeAdjustment": 0,
"verticalOffset": 0
}
}
},
"cursorless.experimental.snippetsDir": {
"description": "Directory containing snippets for use in Cursorless",
"type": "string"
},
"cursorless.experimental.keyboard.modal.cursorStyle": {
"description": "Controls cursor style when in Cursorless keyboard mode",
"type": "string",
"enum": [
"line",
"block",
"underline",
"line-thin",
"block-outline",
"underline-thin"
],
"default": "block-outline"
},
"cursorless.experimental.keyboard.modal.keybindings.action": {
"description": "Define modal keybindings for actions",
"type": "object",
"additionalProperties": {
"anyOf": [
{
"type": "string",
"enum": [
"callAsFunction",
"clearAndSetSelection",
"copyToClipboard",
"cutToClipboard",
"deselect",
"editNew",
"editNewLineAfter",
"editNewLineBefore",
"executeCommand",
"extractVariable",
"findInDocument",
"findInWorkspace",
"foldRegion",
"followLink",
"followLinkAside",
"generateSnippet",
"getText",
"highlight",
"indentLine",
"insertCopyAfter",
"insertCopyBefore",
"insertEmptyLineAfter",
"insertEmptyLineBefore",
"insertEmptyLinesAround",
"insertSnippet",
"moveToTarget",
"outdentLine",
"pasteFromClipboard",
"randomizeTargets",
"remove",
"rename",
"replace",
"replaceWithTarget",
"revealDefinition",
"revealTypeDefinition",
"reverseTargets",
"rewrapWithPairedDelimiter",
"scrollToBottom",
"scrollToCenter",
"scrollToTop",
"setSelection",
"setSelectionAfter",
"setSelectionBefore",
"showDebugHover",
"showHover",
"showQuickFix",
"showReferences",
"sortTargets",
"swapTargets",
"toggleLineBreakpoint",
"toggleLineComment",
"unfoldRegion",
"wrap"
]
},
{
"type": "object",
"properties": {
"actionId": {
"type": "string",
"enum": [
"callAsFunction",
"clearAndSetSelection",
"copyToClipboard",
"cutToClipboard",
"deselect",
"editNew",
"editNewLineAfter",
"editNewLineBefore",
"executeCommand",
"extractVariable",
"findInDocument",
"findInWorkspace",
"foldRegion",
"followLink",
"followLinkAside",
"generateSnippet",
"getText",
"highlight",
"indentLine",
"insertCopyAfter",
"insertCopyBefore",
"insertEmptyLineAfter",
"insertEmptyLineBefore",
"insertEmptyLinesAround",
"insertSnippet",
"moveToTarget",
"outdentLine",
"pasteFromClipboard",
"randomizeTargets",
"remove",
"rename",
"replace",
"replaceWithTarget",
"revealDefinition",
"revealTypeDefinition",
"reverseTargets",
"rewrapWithPairedDelimiter",
"scrollToBottom",
"scrollToCenter",
"scrollToTop",
"setSelection",
"setSelectionAfter",
"setSelectionBefore",
"showDebugHover",
"showHover",
"showQuickFix",
"showReferences",
"sortTargets",
"swapTargets",
"toggleLineBreakpoint",
"toggleLineComment",
"unfoldRegion",
"wrap"
],
"description": "The cursorless command to run"
},
"exitCursorlessMode": {
"type": "boolean",
"description": "Indicates whether the command should exit cursorless mode after it is run, defaults false."
}
},
"required": [
"actionId"
]
}
]
}
},
"cursorless.experimental.keyboard.modal.keybindings.vscodeCommand": {
"description": "Define modal keybindings for running vscode commands",
"type": "object",
"additionalProperties": {
"type": [
"string",
"object"
],
"properties": {
"commandId": {
"type": "string",
"description": "The vscode command to run"
},
"args": {
"type": "array",
"description": "The arguments to pass to the command"
},
"executeAtTarget": {
"type": "boolean",
"description": "If `true`, indicates that the command should be executed at the target by moving the cursor there first, running the command, and then moving the cursor back to the original position"
},
"keepChangedSelection": {
"type": "boolean",
"description": "If `true`, the selection will be retained after the command is run, rather than being restored to its original position. This setting only applies when `executeAtTarget` is `true`."
},
"exitCursorlessMode": {
"type": "boolean",
"description": "If `true`, indicates that the command should exit cursorless mode after it is run."
}
},
"required": [
"commandId"
]
}
},
"cursorless.experimental.keyboard.modal.keybindings.color": {
"description": "Define modal keybindings for colors",
"type": "object",
"additionalProperties": {
"type": "string",
"enum": [
"default",
"blue",
"green",
"red",
"pink",
"yellow",
"userColor1",
"userColor2"
]
}
},
"cursorless.experimental.keyboard.modal.keybindings.shape": {
"description": "Define modal keybindings for shapes",
"type": "object",
"additionalProperties": {
"type": "string",
"enum": [
"bolt",
"curve",
"fox",
"frame",
"play",
"wing",
"hole",
"ex",
"crosshairs",
"eye"
]
}
},
"cursorless.experimental.keyboard.modal.keybindings.scope": {
"description": "Define modal keybindings for scopes",
"type": "object",
"additionalProperties": {
"type": "string",
"enum": [
"argumentOrParameter",
"anonymousFunction",
"attribute",
"class",
"className",
"collectionItem",
"collectionKey",
"comment",
"functionCall",
"functionCallee",
"functionName",
"identifier",
"ifStatement",
"list",
"map",
"name",
"namedFunction",
"regularExpression",
"statement",
"string",
"type",
"value",
"condition",
"section",
"sectionLevelOne",
"sectionLevelTwo",
"sectionLevelThree",
"sectionLevelFour",
"sectionLevelFive",
"sectionLevelSix",
"selector",
"unit",
"xmlBothTags",
"xmlElement",
"xmlEndTag",
"xmlStartTag",
"token",
"line",
"notebookCell",
"paragraph",
"document",
"character",
"word",
"boundedNonWhitespaceSequence",
"nonWhitespaceSequence",
"url"
]
}
},
"cursorless.experimental.hatStability": {
"markdownDescription": "As you scroll, edit, and move your cursor, this setting determines how much Cursorless will move hats around to ensure that the best hats are near the cursor. See https://www.cursorless.org/docs/user/hatAssignment/",
"type": "string",
"default": "balanced",
"enum": [
"greedy",
"balanced",
"stable"
],
"markdownEnumDescriptions": [
"Always put the best hats near the cursor",
"Only move hats to avoid having colored shapes near the cursor (eg `\"blue fox\"`); otherwise leave hats where they are",
"Only move hats to ensure that the tokens near the cursor have a hat at all, no matter how bad the hat is. Note that if you have no shapes enabled, then this setting is the same as `balanced`"
]
}
}
},
"languages": [
{
"id": "json",
"extensions": [
".cursorless-snippets"
]
}
],
"jsonValidation": [
{
"fileMatch": "*.cursorless-snippets",
"url": "./schemas/cursorless-snippets.json"
}
],
"icons": {
"cursorless-icon": {
"description": "Cursorless icon",
"default": {
"fontPath": "fonts/cursorless.woff",
"fontCharacter": "\\E900"
}
}
},
"viewsContainers": {
"activitybar": [
{
"id": "cursorless",
"title": "Cursorless",
"icon": "images/logo.svg"
}
]
}
},
"sponsor": {
"url": "https://github.com/sponsors/pokey"
},
"funding": "https://github.com/sponsors/pokey",
"scripts": {
"build": "pnpm run esbuild:prod && pnpm -F cheatsheet-local build:prod && pnpm -F cursorless-vscode-tutorial-webview build:prod && pnpm run populate-dist",
"build:dev": "pnpm generate-grammar && pnpm run esbuild && pnpm -F cheatsheet-local build && pnpm -F cursorless-vscode-tutorial-webview build && pnpm run populate-dist",
"esbuild:base": "esbuild ./src/extension.ts --conditions=cursorless:bundler --bundle --outfile=dist/extension.cjs --external:vscode --format=cjs --platform=node",
"install-local": "bash ./scripts/install-local.sh",
"install-from-pr": "bash ./scripts/install-from-pr.sh",
"uninstall-local": "bash ./scripts/uninstall-local.sh",
"esbuild": "pnpm run esbuild:base --sourcemap",
"esbuild:watch": "pnpm run esbuild:base --sourcemap --watch",
"esbuild:prod": "pnpm run esbuild:base --minify",
"esbuild:meta": "pnpm run esbuild:base --metafile=meta.json",
"populate-dist": "my-ts-node ./src/scripts/populateDist/index.ts",
"init-launch-sandbox": "my-ts-node src/scripts/initLaunchSandbox.ts",
"preprocess-svg-hats": "my-ts-node src/scripts/preprocessSvgHats.ts",
"hat-adjustment-add": "my-ts-node src/scripts/hatAdjustments/add.ts",
"hat-adjustment-average": "my-ts-node src/scripts/hatAdjustments/average.ts",
"generate-grammar:base": "nearleyc src/keyboard/grammar/grammar.ne",
"ensure-grammar-up-to-date": "pnpm -s generate-grammar:base | diff -u src/keyboard/grammar/generated/grammar.ts -",
"generate-grammar": "pnpm generate-grammar:base -o src/keyboard/grammar/generated/grammar.ts",
"generate-railroad": "nearley-railroad src/keyboard/grammar/grammar.ne -o out/railroad.html",
"test": "pnpm ensure-grammar-up-to-date",
"compile": "tsc --build",
"watch": "tsc --build --watch",
"clean": "rm -rf ./out tsconfig.tsbuildinfo ./dist ./build"
},
"devDependencies": {
"@types/fs-extra": "11.0.4",
"@types/js-yaml": "^4.0.9",
"@types/lodash-es": "4.17.0",
"@types/nearley": "2.11.5",
"@types/node": "18.18.2",
"@types/semver": "^7.5.8",
"@types/sinon": "^17.0.3",
"@types/tinycolor2": "1.4.6",
"@types/uuid": "^9.0.8",
"@types/vscode": "1.75.1",
"esbuild": "^0.20.2",
"fast-xml-parser": "^4.3.6",
"fs-extra": "11.2.0",
"sinon": "^17.0.1"
},
"dependencies": {
"@cursorless/common": "workspace:*",
"@cursorless/cursorless-cheatsheet": "workspace:*",
"@cursorless/cursorless-engine": "workspace:*",
"@cursorless/cursorless-tutorial": "workspace:*",
"@cursorless/node-common": "workspace:*",
"@cursorless/test-case-recorder": "workspace:*",
"@cursorless/vscode-common": "workspace:*",
"itertools": "^2.2.5",
"lodash-es": "^4.17.21",
"nearley": "2.20.1",
"semver": "^7.6.0",
"tinycolor2": "1.6.0",
"trie-search": "2.0.0",
"uuid": "^9.0.1",
"vscode-uri": "^3.0.8"
},
"type": "module"
}