dance/package.json
2021-10-11 17:46:27 +02:00

3680 lines
110 KiB
JSON
Generated

{
"name": "dance",
"description": "Kakoune-inspired key bindings, modes, menus and scripting.",
"version": "0.5.7",
"license": "ISC",
"author": {
"name": "Grégoire Geis",
"email": "opensource@gregoirege.is"
},
"repository": {
"type": "git",
"url": "https://github.com/71/dance.git"
},
"main": "./out/src/extension.js",
"browser": "./out/web/extension.js",
"engines": {
"vscode": "^1.56.0"
},
"scripts": {
"check": "eslint . && depcruise -v .dependency-cruiser.js src",
"format": "eslint . --fix",
"generate": "ts-node ./meta.ts",
"generate:watch": "ts-node ./meta.ts --watch",
"vscode:prepublish": "yarn run generate && yarn run compile && yarn run compile-web",
"compile": "tsc -p ./",
"compile:watch": "tsc -watch -p ./",
"compile-web": "webpack --mode production --devtool hidden-source-map --config ./webpack.web.config.js",
"compile-web:watch": "webpack --watch --config ./webpack.web.config.js",
"test": "yarn run compile && node ./out/test/run.js",
"package": "vsce package",
"publish": "vsce publish"
},
"devDependencies": {
"@types/glob": "^7.1.1",
"@types/mocha": "^8.0.3",
"@types/node": "^14.6.0",
"@types/vscode": "^1.56.0",
"@typescript-eslint/eslint-plugin": "^4.18.0",
"@typescript-eslint/parser": "^4.18.0",
"chokidar": "^3.5.1",
"dependency-cruiser": "^10.0.5",
"eslint": "^7.22.0",
"glob": "^7.1.6",
"mocha": "^8.1.1",
"source-map-support": "^0.5.19",
"ts-loader": "^9.2.5",
"ts-node": "^9.1.1",
"typescript": "^4.2.4",
"unexpected": "^12.0.0",
"vsce": "^1.99.0",
"vscode-test": "^1.5.2",
"webpack": "^5.52.1",
"webpack-cli": "^4.8.0"
},
"displayName": "Dance",
"publisher": "gregoire",
"categories": [
"Keymaps",
"Other"
],
"readme": "README.md",
"icon": "assets/dance.png",
"activationEvents": [
"*"
],
"extensionKind": [
"ui",
"workspace"
],
"dance.disableArbitraryCodeExecution": false,
"dance.disableArbitraryCommandExecution": false,
"capabilities": {
"untrustedWorkspaces": {
"supported": "limited",
"description": "Existing menu items and mode commands can only be updated if the current workspace is trusted in order to ensure untrusted workspaces do not execute malicious commands."
},
"virtualWorkspaces": true
},
"contributes": {
"configuration": {
"type": "object",
"title": "Dance",
"properties": {
"dance.defaultMode": {
"type": "string",
"scope": "language-overridable",
"default": "normal",
"description": "Controls which mode is set by default when an editor is opened.",
"pattern": "^[a-zA-Z]\\w*$",
"patternErrorMessage": ""
},
"dance.modes": {
"type": "object",
"scope": "language-overridable",
"additionalProperties": {
"type": "object",
"propertyNames": {
"pattern": "^[a-zA-Z]\\w*$",
"patternErrorMessage": ""
},
"properties": {
"inheritFrom": {
"type": [
"string",
"null"
],
"description": "Controls how default configuration options are obtained for this mode. Specify a string to inherit from the mode with the given name, and null to inherit from the VS Code configuration.",
"pattern": "^[a-zA-Z]\\w*$",
"patternErrorMessage": ""
},
"cursorStyle": {
"enum": [
"line",
"block",
"underline",
"line-thin",
"block-outline",
"underline-thin",
"inherit",
null
],
"description": "Controls the cursor style."
},
"lineHighlight": {
"type": [
"string",
"null"
],
"markdownDescription": "Controls the line highlighting applied to active lines. Can be an hex color, a [theme color](https://code.visualstudio.com/api/references/theme-color) or null.",
"deprecationMessage": "`lineHighlight` is deprecated. Use `dance.modes.*.backgroundColor` instead.",
"markdownDeprecationMessage": "`lineHighlight` is deprecated. Use `#dance.modes#.*.backgroundColor` instead.",
"pattern": "^(#[a-fA-F0-9]{3}|#[a-fA-F0-9]{6}|#[a-fA-F0-9]{8}|\\$([a-zA-Z]+(\\.[a-zA-Z]+)+))$",
"patternErrorMessage": "Color should be an hex color or a '$' sign followed by a color identifier."
},
"lineNumbers": {
"enum": [
"off",
"on",
"relative",
"inherit",
null
],
"description": "Controls the display of line numbers.",
"enumDescriptions": [
"No line numbers.",
"Absolute line numbers.",
"Relative line numbers.",
"Inherit from `editor.lineNumbers`."
]
},
"onEnterMode": {
"type": "array",
"items": {
"type": [
"array",
"object",
"string"
],
"properties": {
"command": {
"type": "string"
},
"args": {}
},
"required": [
"command"
]
},
"description": "Controls what commands should be executed upon entering this mode."
},
"onLeaveMode": {
"type": "array",
"items": {
"type": [
"array",
"object",
"string"
],
"properties": {
"command": {
"type": "string"
},
"args": {}
},
"required": [
"command"
]
},
"description": "Controls what commands should be executed upon leaving this mode."
},
"selectionBehavior": {
"enum": [
"caret",
"character",
null
],
"default": "caret",
"description": "Controls how selections behave within VS Code.",
"markdownEnumDescriptions": [
"Selections are anchored to carets, which is the native VS Code behavior; that is, they are positioned *between* characters and can therefore be empty.",
"Selections are anchored to characters, like Kakoune; that is, they are positioned *on* characters, and therefore cannot be empty. Additionally, one-character selections will behave as if they were non-directional, like Kakoune."
]
},
"decorations": {
"type": [
"array",
"object",
"null"
],
"properties": {
"applyTo": {
"enum": [
"all",
"main",
"secondary"
],
"default": "all",
"description": "The selections to apply this style to.",
"enumDescriptions": [
"Apply to all selections.",
"Apply to main selection only.",
"Apply to all selections except main selection."
]
},
"backgroundColor": {
"type": "string",
"pattern": "^(#[a-fA-F0-9]{3}|#[a-fA-F0-9]{6}|#[a-fA-F0-9]{8}|\\$([a-zA-Z]+(\\.[a-zA-Z]+)+))$",
"patternErrorMessage": "Color should be an hex color or a '$' sign followed by a color identifier."
},
"borderColor": {
"type": "string",
"pattern": "^(#[a-fA-F0-9]{3}|#[a-fA-F0-9]{6}|#[a-fA-F0-9]{8}|\\$([a-zA-Z]+(\\.[a-zA-Z]+)+))$",
"patternErrorMessage": "Color should be an hex color or a '$' sign followed by a color identifier."
},
"borderStyle": {
"type": "string"
},
"borderWidth": {
"type": "string"
},
"borderRadius": {
"type": "string"
},
"isWholeLine": {
"type": "boolean",
"default": false
},
"after": {
"type": "object"
},
"before": {
"type": "object"
}
},
"description": "The decorations to apply to selections.",
"items": {
"type": "object",
"properties": {
"applyTo": {
"enum": [
"all",
"main",
"secondary"
],
"default": "all",
"description": "The selections to apply this style to.",
"enumDescriptions": [
"Apply to all selections.",
"Apply to main selection only.",
"Apply to all selections except main selection."
]
},
"backgroundColor": {
"type": "string",
"pattern": "^(#[a-fA-F0-9]{3}|#[a-fA-F0-9]{6}|#[a-fA-F0-9]{8}|\\$([a-zA-Z]+(\\.[a-zA-Z]+)+))$",
"patternErrorMessage": "Color should be an hex color or a '$' sign followed by a color identifier."
},
"borderColor": {
"type": "string",
"pattern": "^(#[a-fA-F0-9]{3}|#[a-fA-F0-9]{6}|#[a-fA-F0-9]{8}|\\$([a-zA-Z]+(\\.[a-zA-Z]+)+))$",
"patternErrorMessage": "Color should be an hex color or a '$' sign followed by a color identifier."
},
"borderStyle": {
"type": "string"
},
"borderWidth": {
"type": "string"
},
"borderRadius": {
"type": "string"
},
"isWholeLine": {
"type": "boolean",
"default": false
},
"after": {
"type": "object"
},
"before": {
"type": "object"
}
}
}
},
"hiddenSelectionsIndicatorsDecoration": {
"type": [
"object",
"null"
],
"properties": {
"applyTo": {
"enum": [
"all",
"main",
"secondary"
],
"default": "all",
"description": "The selections to apply this style to.",
"enumDescriptions": [
"Apply to all selections.",
"Apply to main selection only.",
"Apply to all selections except main selection."
]
},
"backgroundColor": {
"type": "string",
"pattern": "^(#[a-fA-F0-9]{3}|#[a-fA-F0-9]{6}|#[a-fA-F0-9]{8}|\\$([a-zA-Z]+(\\.[a-zA-Z]+)+))$",
"patternErrorMessage": "Color should be an hex color or a '$' sign followed by a color identifier."
},
"borderColor": {
"type": "string",
"pattern": "^(#[a-fA-F0-9]{3}|#[a-fA-F0-9]{6}|#[a-fA-F0-9]{8}|\\$([a-zA-Z]+(\\.[a-zA-Z]+)+))$",
"patternErrorMessage": "Color should be an hex color or a '$' sign followed by a color identifier."
},
"borderStyle": {
"type": "string"
},
"borderWidth": {
"type": "string"
},
"borderRadius": {
"type": "string"
},
"isWholeLine": {
"type": "boolean",
"default": false
},
"after": {
"type": "object"
},
"before": {
"type": "object"
}
},
"description": "The decorations to apply to the hidden selections indicator, shown when some selections are below or above the lines currently shown in the editor. Specify an empty object {} to disable this indicator."
}
},
"additionalProperties": false
},
"default": {
"": {
"hiddenSelectionsIndicatorsDecoration": {
"after": {
"color": "$list.warningForeground"
},
"backgroundColor": "$inputValidation.warningBackground",
"borderColor": "$inputValidation.warningBorder",
"borderStyle": "solid",
"borderWidth": "1px",
"isWholeLine": true
}
},
"input": {
"cursorStyle": "underline-thin"
},
"insert": {
"onLeaveMode": [
[
".selections.save",
{
"register": " insert"
}
]
]
},
"normal": {
"lineNumbers": "relative",
"decorations": {
"applyTo": "main",
"backgroundColor": "$editor.hoverHighlightBackground",
"isWholeLine": true
},
"onEnterMode": [
[
".selections.restore",
{
"register": " ^",
"try": true
}
]
],
"onLeaveMode": [
[
".selections.save",
{
"register": " ^",
"style": {
"borderColor": "$editor.selectionBackground",
"borderStyle": "solid",
"borderWidth": "2px",
"borderRadius": "1px"
},
"until": [
[
"mode-did-change",
{
"include": "normal"
}
],
[
"selections-did-change"
]
]
}
]
]
}
},
"description": "Controls the different modes available in Dance."
},
"dance.menus": {
"type": "object",
"scope": "language-overridable",
"description": "Controls the different menus available in Dance.",
"additionalProperties": {
"type": "object",
"properties": {
"items": {
"type": "object",
"additionalProperties": {
"type": "object",
"properties": {
"text": {
"type": "string",
"description": "Text shown in the menu."
},
"command": {
"type": "string",
"description": "Command to execute on item selection."
},
"args": {
"type": "array",
"description": "Arguments to the command to execute."
}
},
"required": [
"command"
]
}
}
},
"additionalProperties": false
},
"default": {
"object": {
"items": {
"b()": {
"command": "dance.seek.object",
"args": [
{
"input": "\\((?#inner)\\)"
}
],
"text": "parenthesis block"
},
"B{}": {
"command": "dance.seek.object",
"args": [
{
"input": "\\{(?#inner)\\}"
}
],
"text": "braces block"
},
"r[]": {
"command": "dance.seek.object",
"args": [
{
"input": "\\[(?#inner)\\]"
}
],
"text": "brackets block"
},
"a<>": {
"command": "dance.seek.object",
"args": [
{
"input": "<(?#inner)>"
}
],
"text": "angle block"
},
"Q\"": {
"command": "dance.seek.object",
"args": [
{
"input": "(?#noescape)\"(?#inner)(?#noescape)\""
}
],
"text": "double quote string"
},
"q'": {
"command": "dance.seek.object",
"args": [
{
"input": "(?#noescape)'(?#inner)(?#noescape)'"
}
],
"text": "single quote string"
},
"g`": {
"command": "dance.seek.object",
"args": [
{
"input": "(?#noescape)`(?#inner)(?#noescape)`"
}
],
"text": "grave quote string"
},
"w": {
"command": "dance.seek.object",
"args": [
{
"input": "[\\p{L}_\\d]+(?<after>[^\\S\\n]+)"
}
],
"text": "word"
},
"W": {
"command": "dance.seek.object",
"args": [
{
"input": "[\\S]+(?<after>[^\\S\\n]+)"
}
],
"text": "WORD"
},
"s": {
"command": "dance.seek.object",
"args": [
{
"input": "(?#predefined=sentence)"
}
],
"text": "sentence"
},
"p": {
"command": "dance.seek.object",
"args": [
{
"input": "(?#predefined=paragraph)"
}
],
"text": "paragraph"
},
" ": {
"command": "dance.seek.object",
"args": [
{
"input": "(?<before>[\\s]+)[^\\S\\n]+(?<after>[\\s]+)"
}
],
"text": "whitespaces"
},
"i": {
"command": "dance.seek.object",
"args": [
{
"input": "(?#predefined=indent)"
}
],
"text": "indent"
},
"n": {
"command": "dance.seek.object",
"args": [
{
"input": "(?#singleline)-?[\\d_]+(\\.[0-9]+)?([eE]\\d+)?"
}
],
"text": "number"
},
"u": {
"command": "dance.seek.object",
"args": [
{
"input": "(?#predefined=argument)"
}
],
"text": "argument"
},
"c": {
"command": "dance.seek.object",
"text": "custom object desc"
}
}
},
"goto": {
"items": {
"h": {
"text": "to line start",
"command": "dance.select.lineStart"
},
"l": {
"text": "to line end",
"command": "dance.select.lineEnd"
},
"i": {
"text": "to non-blank line start",
"command": "dance.select.lineStart",
"args": [
{
"skipBlank": true
}
]
},
"gk": {
"text": "to first line",
"command": "dance.select.lineStart",
"args": [
{
"count": 1
}
]
},
"j": {
"text": "to last line",
"command": "dance.select.lastLine"
},
"e": {
"text": "to last char of last line",
"command": "dance.select.lineEnd",
"args": [
{
"count": 2147483647
}
]
},
"t": {
"text": "to first displayed line",
"command": "dance.select.firstVisibleLine"
},
"c": {
"text": "to middle displayed line",
"command": "dance.select.middleVisibleLine"
},
"b": {
"text": "to last displayed line",
"command": "dance.select.lastVisibleLine"
},
"f": {
"text": "to file whose name is selected",
"command": "dance.selections.open"
},
".": {
"text": "to last buffer modification position",
"command": "dance.selections.restore",
"args": [
{
"register": " insert"
}
]
}
}
},
"view": {
"items": {
"vc": {
"text": "center cursor vertically",
"command": "dance.view.line",
"args": [
{
"at": "center"
}
]
},
"t": {
"text": "cursor on top",
"command": "dance.view.line",
"args": [
{
"at": "top"
}
]
},
"b": {
"text": "cursor on bottom",
"command": "dance.view.line",
"args": [
{
"at": "bottom"
}
]
},
"j": {
"text": "scroll down",
"command": "editorScroll",
"args": [
{
"to": "down",
"by": "line",
"revealCursor": true
}
]
},
"k": {
"text": "scroll up",
"command": "editorScroll",
"args": [
{
"to": "up",
"by": "line",
"revealCursor": true
}
]
}
}
}
}
},
"dance.enabled": {
"type": "boolean",
"default": true,
"description": "Controls whether the Dance keybindings are enabled.",
"deprecationMessage": "dance.enabled is deprecated; disable the Dance extension instead."
},
"dance.normalMode.lineHighlight": {
"type": [
"string",
"null"
],
"default": "editor.hoverHighlightBackground",
"markdownDescription": "Controls the line highlighting applied to active lines in normal mode. Can be an hex color, a [theme color](https://code.visualstudio.com/api/references/theme-color) or null.",
"markdownDeprecationMessage": "Built-in modes are deprecated. Use `#dance.modes#` instead."
},
"dance.insertMode.lineHighlight": {
"type": [
"string",
"null"
],
"default": null,
"markdownDescription": "Controls the line highlighting applied to active lines in insert mode. Can be an hex color, a [theme color](https://code.visualstudio.com/api/references/theme-color) or null.",
"markdownDeprecationMessage": "Built-in modes are deprecated. Use `#dance.modes#` instead."
},
"dance.normalMode.lineNumbers": {
"enum": [
"off",
"on",
"relative",
"inherit"
],
"default": "relative",
"description": "Controls the display of line numbers in normal mode.",
"enumDescriptions": [
"No line numbers.",
"Absolute line numbers.",
"Relative line numbers.",
"Inherit from `editor.lineNumbers`."
],
"markdownDeprecationMessage": "Built-in modes are deprecated. Use `#dance.modes#` instead."
},
"dance.insertMode.lineNumbers": {
"enum": [
"off",
"on",
"relative",
"inherit"
],
"default": "inherit",
"description": "Controls the display of line numbers in insert mode.",
"enumDescriptions": [
"No line numbers.",
"Absolute line numbers.",
"Relative line numbers.",
"Inherit from `editor.lineNumbers`."
],
"markdownDeprecationMessage": "Built-in modes are deprecated. Use `#dance.modes#` instead."
},
"dance.normalMode.cursorStyle": {
"enum": [
"line",
"block",
"underline",
"line-thin",
"block-outline",
"underline-thin",
"inherit"
],
"default": "inherit",
"description": "Controls the cursor style in normal mode.",
"markdownDeprecationMessage": "Built-in modes are deprecated. Use `#dance.modes#` instead."
},
"dance.insertMode.cursorStyle": {
"enum": [
"line",
"block",
"underline",
"line-thin",
"block-outline",
"underline-thin",
"inherit"
],
"default": "inherit",
"description": "Controls the cursor style in insert mode.",
"markdownDeprecationMessage": "Built-in modes are deprecated. Use `#dance.modes#` instead."
},
"dance.insertMode.selectionStyle": {
"type": "object",
"default": {
"borderColor": "$editor.selectionBackground",
"borderStyle": "solid",
"borderWidth": "2px",
"borderRadius": "1px"
},
"description": "The style to apply to selections in insert mode.",
"properties": {
"backgroundColor": {
"type": "string"
},
"borderColor": {
"type": "string"
},
"borderStyle": {
"type": "string"
},
"borderWidth": {
"type": "string"
},
"borderRadius": {
"type": "string"
}
},
"markdownDeprecationMessage": "Built-in modes are deprecated. Use `#dance.modes#` instead."
},
"dance.selectionBehavior": {
"enum": [
"caret",
"character"
],
"default": "caret",
"description": "Controls how selections behave within VS Code.",
"markdownEnumDescriptions": [
"Selections are anchored to carets, which is the native VS Code behavior; that is, they are positioned *between* characters and can therefore be empty.",
"Selections are anchored to characters, like Kakoune; that is, they are positioned *on* characters, and therefore cannot be empty. Additionally, one-character selections will behave as if they were non-directional, like Kakoune."
],
"markdownDeprecationMessage": "Built-in modes are deprecated. Use `#dance.modes#` instead."
}
}
},
"commands": [
{
"command": "dance.dev.copyLastErrorMessage",
"title": "Copies the last encountered error message",
"category": "Dance"
},
{
"command": "dance.dev.setSelectionBehavior",
"title": "Set the selection behavior of the specified mode",
"category": "Dance"
},
{
"command": "dance.edit.align",
"title": "Align selections",
"category": "Dance"
},
{
"command": "dance.edit.case.swap",
"title": "Swap case",
"category": "Dance"
},
{
"command": "dance.edit.case.toLower",
"title": "Transform to lower case",
"category": "Dance"
},
{
"command": "dance.edit.case.toUpper",
"title": "Transform to upper case",
"category": "Dance"
},
{
"command": "dance.edit.copyIndentation",
"title": "Copy indentation",
"category": "Dance"
},
{
"command": "dance.edit.deindent",
"title": "Deindent selected lines",
"category": "Dance"
},
{
"command": "dance.edit.deindent.withIncomplete",
"title": "Deindent selected lines (including incomplete indent)",
"category": "Dance"
},
{
"command": "dance.edit.delete",
"title": "Delete",
"category": "Dance"
},
{
"command": "dance.edit.delete-insert",
"title": "Delete and switch to Insert",
"category": "Dance"
},
{
"command": "dance.edit.indent",
"title": "Indent selected lines",
"category": "Dance"
},
{
"command": "dance.edit.indent.withEmpty",
"title": "Indent selected lines (including empty lines)",
"category": "Dance"
},
{
"command": "dance.edit.insert",
"title": "Insert contents of register",
"category": "Dance"
},
{
"command": "dance.edit.join",
"title": "Join lines",
"category": "Dance"
},
{
"command": "dance.edit.join.select",
"title": "Join lines and select inserted separators",
"category": "Dance"
},
{
"command": "dance.edit.newLine.above",
"title": "Insert new line above each selection",
"category": "Dance"
},
{
"command": "dance.edit.newLine.above.insert",
"title": "Insert new line above and switch to insert",
"category": "Dance"
},
{
"command": "dance.edit.newLine.below",
"title": "Insert new line below each selection",
"category": "Dance"
},
{
"command": "dance.edit.newLine.below.insert",
"title": "Insert new line below and switch to insert",
"category": "Dance"
},
{
"command": "dance.edit.paste.after",
"title": "Paste after",
"category": "Dance"
},
{
"command": "dance.edit.paste.after.select",
"title": "Paste after and select",
"category": "Dance"
},
{
"command": "dance.edit.paste.before",
"title": "Paste before",
"category": "Dance"
},
{
"command": "dance.edit.paste.before.select",
"title": "Paste before and select",
"category": "Dance"
},
{
"command": "dance.edit.replaceCharacters",
"title": "Replace characters",
"category": "Dance"
},
{
"command": "dance.edit.selectRegister-insert",
"title": "Pick register and replace",
"category": "Dance"
},
{
"command": "dance.edit.yank-delete",
"title": "Copy and delete",
"category": "Dance"
},
{
"command": "dance.edit.yank-delete-insert",
"title": "Copy, delete and switch to Insert",
"category": "Dance"
},
{
"command": "dance.edit.yank-replace",
"title": "Copy and replace",
"category": "Dance"
},
{
"command": "dance.history.recording.play",
"title": "Replay recording",
"category": "Dance"
},
{
"command": "dance.history.recording.start",
"title": "Start recording",
"category": "Dance"
},
{
"command": "dance.history.recording.stop",
"title": "Stop recording",
"category": "Dance"
},
{
"command": "dance.history.redo",
"title": "Redo",
"category": "Dance"
},
{
"command": "dance.history.redo.selections",
"title": "Redo a change of selections",
"category": "Dance"
},
{
"command": "dance.history.repeat",
"title": "Repeat last change",
"category": "Dance"
},
{
"command": "dance.history.repeat.edit",
"title": "Repeat last edit without a command",
"category": "Dance"
},
{
"command": "dance.history.repeat.seek",
"title": "Repeat last seek",
"category": "Dance"
},
{
"command": "dance.history.repeat.selection",
"title": "Repeat last selection change",
"category": "Dance"
},
{
"command": "dance.history.undo",
"title": "Undo",
"category": "Dance"
},
{
"command": "dance.history.undo.selections",
"title": "Undo a change of selections",
"category": "Dance"
},
{
"command": "dance.keybindings.setup",
"title": "Set up Dance keybindings",
"category": "Dance"
},
{
"command": "dance.cancel",
"title": "Cancel Dance operation",
"category": "Dance"
},
{
"command": "dance.changeInput",
"title": "Change current input",
"category": "Dance"
},
{
"command": "dance.ignore",
"title": "Ignore key",
"category": "Dance"
},
{
"command": "dance.openMenu",
"title": "Open menu",
"category": "Dance"
},
{
"command": "dance.run",
"title": "Run code",
"category": "Dance"
},
{
"command": "dance.selectRegister",
"title": "Select register for next command",
"category": "Dance"
},
{
"command": "dance.updateCount",
"title": "Update Dance count",
"category": "Dance"
},
{
"command": "dance.updateRegister",
"title": "Update the contents of a register",
"category": "Dance"
},
{
"command": "dance.modes.insert.after",
"title": "Insert after",
"category": "Dance"
},
{
"command": "dance.modes.insert.before",
"title": "Insert before",
"category": "Dance"
},
{
"command": "dance.modes.insert.lineEnd",
"title": "Insert at line end",
"category": "Dance"
},
{
"command": "dance.modes.insert.lineStart",
"title": "Insert at line start",
"category": "Dance"
},
{
"command": "dance.modes.set",
"title": "Set Dance mode",
"category": "Dance"
},
{
"command": "dance.modes.set.insert",
"title": "Set mode to Insert",
"category": "Dance"
},
{
"command": "dance.modes.set.normal",
"title": "Set mode to Normal",
"category": "Dance"
},
{
"command": "dance.modes.set.temporarily",
"title": "Set Dance mode temporarily",
"category": "Dance"
},
{
"command": "dance.modes.set.temporarily.insert",
"title": "Temporary Insert mode",
"category": "Dance"
},
{
"command": "dance.modes.set.temporarily.normal",
"title": "Temporary Normal mode",
"category": "Dance"
},
{
"command": "dance.search",
"title": "Search",
"category": "Dance"
},
{
"command": "dance.search.backward",
"title": "Search backward",
"category": "Dance"
},
{
"command": "dance.search.backward.extend",
"title": "Search backward (extend)",
"category": "Dance"
},
{
"command": "dance.search.extend",
"title": "Search (extend)",
"category": "Dance"
},
{
"command": "dance.search.next",
"title": "Select next match",
"category": "Dance"
},
{
"command": "dance.search.next.add",
"title": "Add next match",
"category": "Dance"
},
{
"command": "dance.search.previous",
"title": "Select previous match",
"category": "Dance"
},
{
"command": "dance.search.previous.add",
"title": "Add previous match",
"category": "Dance"
},
{
"command": "dance.search.selection",
"title": "Search current selection",
"category": "Dance"
},
{
"command": "dance.search.selection.smart",
"title": "Search current selection (smart)",
"category": "Dance"
},
{
"command": "dance.seek",
"title": "Select to character (excluded)",
"category": "Dance"
},
{
"command": "dance.seek.askObject",
"title": "Select whole object",
"category": "Dance"
},
{
"command": "dance.seek.askObject.end",
"title": "Select to whole object end",
"category": "Dance"
},
{
"command": "dance.seek.askObject.end.extend",
"title": "Extend to whole object end",
"category": "Dance"
},
{
"command": "dance.seek.askObject.inner",
"title": "Select inner object",
"category": "Dance"
},
{
"command": "dance.seek.askObject.inner.end",
"title": "Select to inner object end",
"category": "Dance"
},
{
"command": "dance.seek.askObject.inner.end.extend",
"title": "Extend to inner object end",
"category": "Dance"
},
{
"command": "dance.seek.askObject.inner.start",
"title": "Select to inner object start",
"category": "Dance"
},
{
"command": "dance.seek.askObject.inner.start.extend",
"title": "Extend to inner object start",
"category": "Dance"
},
{
"command": "dance.seek.askObject.start",
"title": "Select to whole object start",
"category": "Dance"
},
{
"command": "dance.seek.askObject.start.extend",
"title": "Extend to whole object start",
"category": "Dance"
},
{
"command": "dance.seek.backward",
"title": "Select to character (excluded, backward)",
"category": "Dance"
},
{
"command": "dance.seek.enclosing",
"title": "Select to next enclosing character",
"category": "Dance"
},
{
"command": "dance.seek.enclosing.backward",
"title": "Select to previous enclosing character",
"category": "Dance"
},
{
"command": "dance.seek.enclosing.extend",
"title": "Extend to next enclosing character",
"category": "Dance"
},
{
"command": "dance.seek.enclosing.extend.backward",
"title": "Extend to previous enclosing character",
"category": "Dance"
},
{
"command": "dance.seek.extend",
"title": "Extend to character (excluded)",
"category": "Dance"
},
{
"command": "dance.seek.extend.backward",
"title": "Extend to character (excluded, backward)",
"category": "Dance"
},
{
"command": "dance.seek.included",
"title": "Select to character (included)",
"category": "Dance"
},
{
"command": "dance.seek.included.backward",
"title": "Select to character (included, backward)",
"category": "Dance"
},
{
"command": "dance.seek.included.extend",
"title": "Extend to character (included)",
"category": "Dance"
},
{
"command": "dance.seek.included.extend.backward",
"title": "Extend to character (included, backward)",
"category": "Dance"
},
{
"command": "dance.seek.object",
"title": "Select object",
"category": "Dance"
},
{
"command": "dance.seek.word",
"title": "Select to next word start",
"category": "Dance"
},
{
"command": "dance.seek.word.backward",
"title": "Select to previous word start",
"category": "Dance"
},
{
"command": "dance.seek.word.extend",
"title": "Extend to next word start",
"category": "Dance"
},
{
"command": "dance.seek.word.extend.backward",
"title": "Extend to previous word start",
"category": "Dance"
},
{
"command": "dance.seek.word.ws",
"title": "Select to next non-whitespace word start",
"category": "Dance"
},
{
"command": "dance.seek.word.ws.backward",
"title": "Select to previous non-whitespace word start",
"category": "Dance"
},
{
"command": "dance.seek.word.ws.extend",
"title": "Extend to next non-whitespace word start",
"category": "Dance"
},
{
"command": "dance.seek.word.ws.extend.backward",
"title": "Extend to previous non-whitespace word start",
"category": "Dance"
},
{
"command": "dance.seek.wordEnd",
"title": "Select to next word end",
"category": "Dance"
},
{
"command": "dance.seek.wordEnd.extend",
"title": "Extend to next word end",
"category": "Dance"
},
{
"command": "dance.seek.wordEnd.ws",
"title": "Select to next non-whitespace word end",
"category": "Dance"
},
{
"command": "dance.seek.wordEnd.ws.extend",
"title": "Extend to next non-whitespace word end",
"category": "Dance"
},
{
"command": "dance.select.buffer",
"title": "Select whole buffer",
"category": "Dance"
},
{
"command": "dance.select.documentEnd.extend",
"title": "Extend to last character",
"category": "Dance"
},
{
"command": "dance.select.documentEnd.jump",
"title": "Jump to last character",
"category": "Dance"
},
{
"command": "dance.select.down.extend",
"title": "Extend down",
"category": "Dance"
},
{
"command": "dance.select.down.jump",
"title": "Jump down",
"category": "Dance"
},
{
"command": "dance.select.firstLine.extend",
"title": "Extend to first line",
"category": "Dance"
},
{
"command": "dance.select.firstLine.jump",
"title": "Jump to first line",
"category": "Dance"
},
{
"command": "dance.select.firstVisibleLine",
"title": "Select to first visible line",
"category": "Dance"
},
{
"command": "dance.select.firstVisibleLine.extend",
"title": "Extend to first visible line",
"category": "Dance"
},
{
"command": "dance.select.firstVisibleLine.jump",
"title": "Jump to first visible line",
"category": "Dance"
},
{
"command": "dance.select.horizontally",
"title": "Select horizontally",
"category": "Dance"
},
{
"command": "dance.select.lastLine",
"title": "Select to last line",
"category": "Dance"
},
{
"command": "dance.select.lastLine.extend",
"title": "Extend to last line",
"category": "Dance"
},
{
"command": "dance.select.lastLine.jump",
"title": "Jump to last line",
"category": "Dance"
},
{
"command": "dance.select.lastVisibleLine",
"title": "Select to last visible line",
"category": "Dance"
},
{
"command": "dance.select.lastVisibleLine.extend",
"title": "Extend to last visible line",
"category": "Dance"
},
{
"command": "dance.select.lastVisibleLine.jump",
"title": "Jump to last visible line",
"category": "Dance"
},
{
"command": "dance.select.left.extend",
"title": "Extend left",
"category": "Dance"
},
{
"command": "dance.select.left.jump",
"title": "Jump left",
"category": "Dance"
},
{
"command": "dance.select.line.above",
"title": "Select line above",
"category": "Dance"
},
{
"command": "dance.select.line.above.extend",
"title": "Extend to line above",
"category": "Dance"
},
{
"command": "dance.select.line.below",
"title": "Select line below",
"category": "Dance"
},
{
"command": "dance.select.line.below.extend",
"title": "Extend to line below",
"category": "Dance"
},
{
"command": "dance.select.lineEnd",
"title": "Select to line end",
"category": "Dance"
},
{
"command": "dance.select.lineEnd.extend",
"title": "Extend to line end",
"category": "Dance"
},
{
"command": "dance.select.lineStart",
"title": "Select to line start",
"category": "Dance"
},
{
"command": "dance.select.lineStart.extend",
"title": "Extend to line start",
"category": "Dance"
},
{
"command": "dance.select.lineStart.jump",
"title": "Jump to line start",
"category": "Dance"
},
{
"command": "dance.select.lineStart.skipBlank.extend",
"title": "Extend to line start (skip blank)",
"category": "Dance"
},
{
"command": "dance.select.lineStart.skipBlank.jump",
"title": "Jump to line start (skip blank)",
"category": "Dance"
},
{
"command": "dance.select.middleVisibleLine",
"title": "Select to middle visible line",
"category": "Dance"
},
{
"command": "dance.select.middleVisibleLine.extend",
"title": "Extend to middle visible line",
"category": "Dance"
},
{
"command": "dance.select.middleVisibleLine.jump",
"title": "Jump to middle visible line",
"category": "Dance"
},
{
"command": "dance.select.right.extend",
"title": "Extend right",
"category": "Dance"
},
{
"command": "dance.select.right.jump",
"title": "Jump right",
"category": "Dance"
},
{
"command": "dance.select.to",
"title": "Select to",
"category": "Dance"
},
{
"command": "dance.select.to.extend",
"title": "Extend to",
"category": "Dance"
},
{
"command": "dance.select.to.jump",
"title": "Go to",
"category": "Dance"
},
{
"command": "dance.select.up.extend",
"title": "Extend up",
"category": "Dance"
},
{
"command": "dance.select.up.jump",
"title": "Jump up",
"category": "Dance"
},
{
"command": "dance.select.vertically",
"title": "Select vertically",
"category": "Dance"
},
{
"command": "dance.selections.changeDirection",
"title": "Change direction of selections",
"category": "Dance"
},
{
"command": "dance.selections.clear.main",
"title": "Clear main selections",
"category": "Dance"
},
{
"command": "dance.selections.clear.secondary",
"title": "Clear secondary selections",
"category": "Dance"
},
{
"command": "dance.selections.copy",
"title": "Copy selections below",
"category": "Dance"
},
{
"command": "dance.selections.copy.above",
"title": "Copy selections above",
"category": "Dance"
},
{
"command": "dance.selections.expandToLines",
"title": "Expand to lines",
"category": "Dance"
},
{
"command": "dance.selections.faceBackward",
"title": "Backward selections",
"category": "Dance"
},
{
"command": "dance.selections.faceForward",
"title": "Forward selections",
"category": "Dance"
},
{
"command": "dance.selections.filter",
"title": "Filter selections",
"category": "Dance"
},
{
"command": "dance.selections.filter.regexp",
"title": "Keep matching selections",
"category": "Dance"
},
{
"command": "dance.selections.filter.regexp.inverse",
"title": "Clear matching selections",
"category": "Dance"
},
{
"command": "dance.selections.hideIndices",
"title": "Hide selection indices",
"category": "Dance"
},
{
"command": "dance.selections.merge",
"title": "Merge contiguous selections",
"category": "Dance"
},
{
"command": "dance.selections.open",
"title": "Open selected file",
"category": "Dance"
},
{
"command": "dance.selections.pipe",
"title": "Pipe selections",
"category": "Dance"
},
{
"command": "dance.selections.pipe.append",
"title": "Pipe and append",
"category": "Dance"
},
{
"command": "dance.selections.pipe.prepend",
"title": "Pipe and prepend",
"category": "Dance"
},
{
"command": "dance.selections.pipe.replace",
"title": "Pipe and replace",
"category": "Dance"
},
{
"command": "dance.selections.reduce",
"title": "Reduce selections to their cursor",
"category": "Dance"
},
{
"command": "dance.selections.reduce.edges",
"title": "Reduce selections to their ends",
"category": "Dance"
},
{
"command": "dance.selections.restore",
"title": "Restore selections",
"category": "Dance"
},
{
"command": "dance.selections.restore.withCurrent",
"title": "Combine register selections with current ones",
"category": "Dance"
},
{
"command": "dance.selections.save",
"title": "Save selections",
"category": "Dance"
},
{
"command": "dance.selections.saveText",
"title": "Copy selections text",
"category": "Dance"
},
{
"command": "dance.selections.select",
"title": "Select within selections",
"category": "Dance"
},
{
"command": "dance.selections.showIndices",
"title": "Show selection indices",
"category": "Dance"
},
{
"command": "dance.selections.split",
"title": "Split selections",
"category": "Dance"
},
{
"command": "dance.selections.splitLines",
"title": "Split selections at line boundaries",
"category": "Dance"
},
{
"command": "dance.selections.toggleIndices",
"title": "Toggle selection indices",
"category": "Dance"
},
{
"command": "dance.selections.trimLines",
"title": "Trim lines",
"category": "Dance"
},
{
"command": "dance.selections.trimWhitespace",
"title": "Trim whitespace",
"category": "Dance"
},
{
"command": "dance.selections.rotate.both",
"title": "Rotate selections clockwise",
"category": "Dance"
},
{
"command": "dance.selections.rotate.both.reverse",
"title": "Rotate selections counter-clockwise",
"category": "Dance"
},
{
"command": "dance.selections.rotate.contents",
"title": "Rotate selections clockwise (contents only)",
"category": "Dance"
},
{
"command": "dance.selections.rotate.contents.reverse",
"title": "Rotate selections counter-clockwise (contents only)",
"category": "Dance"
},
{
"command": "dance.selections.rotate.selections",
"title": "Rotate selections clockwise (selections only)",
"category": "Dance"
},
{
"command": "dance.selections.rotate.selections.reverse",
"title": "Rotate selections counter-clockwise (selections only)",
"category": "Dance"
},
{
"command": "dance.view.line",
"title": "Reveals a position based on the main cursor",
"category": "Dance"
}
],
"menus": {
"commandPalette": [
{
"command": "dance.dev.copyLastErrorMessage",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.dev.setSelectionBehavior",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.edit.align",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.edit.case.swap",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.edit.case.toLower",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.edit.case.toUpper",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.edit.copyIndentation",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.edit.deindent",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.edit.deindent.withIncomplete",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.edit.delete",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.edit.delete-insert",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.edit.indent",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.edit.indent.withEmpty",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.edit.insert",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.edit.join",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.edit.join.select",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.edit.newLine.above",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.edit.newLine.above.insert",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.edit.newLine.below",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.edit.newLine.below.insert",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.edit.paste.after",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.edit.paste.after.select",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.edit.paste.before",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.edit.paste.before.select",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.edit.replaceCharacters",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.edit.selectRegister-insert",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.edit.yank-delete",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.edit.yank-delete-insert",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.edit.yank-replace",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.history.recording.play",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.history.recording.start",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.history.recording.stop",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.history.redo",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.history.redo.selections",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.history.repeat",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.history.repeat.edit",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.history.repeat.seek",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.history.repeat.selection",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.history.undo",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.history.undo.selections",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.keybindings.setup",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.cancel",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.changeInput",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.ignore",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.openMenu",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.run",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.selectRegister",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.updateCount",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.updateRegister",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.modes.insert.after",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.modes.insert.before",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.modes.insert.lineEnd",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.modes.insert.lineStart",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.modes.set",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.modes.set.insert",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.modes.set.normal",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.modes.set.temporarily",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.modes.set.temporarily.insert",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.modes.set.temporarily.normal",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.search",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.search.backward",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.search.backward.extend",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.search.extend",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.search.next",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.search.next.add",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.search.previous",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.search.previous.add",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.search.selection",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.search.selection.smart",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.seek",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.seek.askObject",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.seek.askObject.end",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.seek.askObject.end.extend",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.seek.askObject.inner",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.seek.askObject.inner.end",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.seek.askObject.inner.end.extend",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.seek.askObject.inner.start",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.seek.askObject.inner.start.extend",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.seek.askObject.start",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.seek.askObject.start.extend",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.seek.backward",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.seek.enclosing",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.seek.enclosing.backward",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.seek.enclosing.extend",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.seek.enclosing.extend.backward",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.seek.extend",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.seek.extend.backward",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.seek.included",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.seek.included.backward",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.seek.included.extend",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.seek.included.extend.backward",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.seek.object",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.seek.word",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.seek.word.backward",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.seek.word.extend",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.seek.word.extend.backward",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.seek.word.ws",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.seek.word.ws.backward",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.seek.word.ws.extend",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.seek.word.ws.extend.backward",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.seek.wordEnd",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.seek.wordEnd.extend",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.seek.wordEnd.ws",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.seek.wordEnd.ws.extend",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.select.buffer",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.select.documentEnd.extend",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.select.documentEnd.jump",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.select.down.extend",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.select.down.jump",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.select.firstLine.extend",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.select.firstLine.jump",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.select.firstVisibleLine",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.select.firstVisibleLine.extend",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.select.firstVisibleLine.jump",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.select.horizontally",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.select.lastLine",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.select.lastLine.extend",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.select.lastLine.jump",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.select.lastVisibleLine",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.select.lastVisibleLine.extend",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.select.lastVisibleLine.jump",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.select.left.extend",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.select.left.jump",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.select.line.above",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.select.line.above.extend",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.select.line.below",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.select.line.below.extend",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.select.lineEnd",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.select.lineEnd.extend",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.select.lineStart",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.select.lineStart.extend",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.select.lineStart.jump",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.select.lineStart.skipBlank.extend",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.select.lineStart.skipBlank.jump",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.select.middleVisibleLine",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.select.middleVisibleLine.extend",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.select.middleVisibleLine.jump",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.select.right.extend",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.select.right.jump",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.select.to",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.select.to.extend",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.select.to.jump",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.select.up.extend",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.select.up.jump",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.select.vertically",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.selections.changeDirection",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.selections.clear.main",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.selections.clear.secondary",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.selections.copy",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.selections.copy.above",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.selections.expandToLines",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.selections.faceBackward",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.selections.faceForward",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.selections.filter",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.selections.filter.regexp",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.selections.filter.regexp.inverse",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.selections.hideIndices",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.selections.merge",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.selections.open",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.selections.pipe",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.selections.pipe.append",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.selections.pipe.prepend",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.selections.pipe.replace",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.selections.reduce",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.selections.reduce.edges",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.selections.restore",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.selections.restore.withCurrent",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.selections.save",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.selections.saveText",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.selections.select",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.selections.showIndices",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.selections.split",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.selections.splitLines",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.selections.toggleIndices",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.selections.trimLines",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.selections.trimWhitespace",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.selections.rotate.both",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.selections.rotate.both.reverse",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.selections.rotate.contents",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.selections.rotate.contents.reverse",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.selections.rotate.selections",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.selections.rotate.selections.reverse",
"when": "dance.mode == 'normal'"
},
{
"command": "dance.view.line",
"when": "dance.mode == 'normal'"
}
]
},
"keybindings": [
{
"key": "Shift+7",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Align selections",
"command": "dance.edit.align"
},
{
"key": "Alt+`",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Swap case",
"command": "dance.edit.case.swap"
},
{
"key": "`",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Transform to lower case",
"command": "dance.edit.case.toLower"
},
{
"key": "Shift+`",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Transform to upper case",
"command": "dance.edit.case.toUpper"
},
{
"key": "Shift+Alt+7",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Copy indentation",
"command": "dance.edit.copyIndentation"
},
{
"key": "Shift+Alt+,",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Deindent selected lines",
"command": "dance.edit.deindent"
},
{
"key": "Shift+,",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Deindent selected lines (including incomplete indent)",
"command": "dance.edit.deindent.withIncomplete"
},
{
"key": "Alt+D",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Delete",
"command": "dance.edit.delete"
},
{
"key": "Alt+C",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Delete and switch to Insert",
"command": "dance.edit.delete-insert"
},
{
"key": "Shift+.",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Indent selected lines",
"command": "dance.edit.indent"
},
{
"key": "Shift+Alt+.",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Indent selected lines (including empty lines)",
"command": "dance.edit.indent.withEmpty"
},
{
"key": "Shift+Alt+R",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Insert contents of register",
"command": "dance.edit.insert"
},
{
"key": "Alt+J",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Join lines",
"command": "dance.edit.join"
},
{
"key": "Shift+Alt+J",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Join lines and select inserted separators",
"command": "dance.edit.join.select"
},
{
"key": "Shift+Alt+O",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Insert new line above each selection",
"command": "dance.edit.newLine.above"
},
{
"key": "Shift+O",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Insert new line above and switch to insert",
"command": "dance.edit.newLine.above.insert"
},
{
"key": "Alt+O",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Insert new line below each selection",
"command": "dance.edit.newLine.below"
},
{
"key": "O",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Insert new line below and switch to insert",
"command": "dance.edit.newLine.below.insert"
},
{
"key": "P",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Paste after",
"command": "dance.edit.paste.after"
},
{
"key": "Alt+P",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Paste after and select",
"command": "dance.edit.paste.after.select"
},
{
"key": "Shift+P",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Paste before",
"command": "dance.edit.paste.before"
},
{
"key": "Shift+Alt+P",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Paste before and select",
"command": "dance.edit.paste.before.select"
},
{
"key": "R",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Replace characters",
"command": "dance.edit.replaceCharacters"
},
{
"key": "Ctrl+R",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Pick register and replace",
"command": "dance.edit.selectRegister-insert"
},
{
"key": "Ctrl+R",
"when": "editorTextFocus && dance.mode == 'insert'",
"title": "Pick register and replace",
"command": "dance.edit.selectRegister-insert"
},
{
"key": "D",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Copy and delete",
"command": "dance.edit.yank-delete"
},
{
"key": "C",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Copy, delete and switch to Insert",
"command": "dance.edit.yank-delete-insert"
},
{
"key": "Shift+R",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Copy and replace",
"command": "dance.edit.yank-replace"
},
{
"key": "Q",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Replay recording",
"command": "dance.history.recording.play"
},
{
"key": "Shift+Q",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Start recording",
"command": "dance.history.recording.start"
},
{
"key": "Escape",
"when": "editorTextFocus && dance.mode == 'normal' && dance.isRecording",
"title": "Stop recording",
"command": "dance.history.recording.stop"
},
{
"key": "Shift+U",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Redo",
"command": "dance.history.redo"
},
{
"key": "Shift+Alt+U",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Redo a change of selections",
"command": "dance.history.redo.selections"
},
{
"key": ".",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Repeat last edit without a command",
"command": "dance.history.repeat.edit"
},
{
"key": "Alt+.",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Repeat last seek",
"command": "dance.history.repeat.seek"
},
{
"key": "U",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Undo",
"command": "dance.history.undo"
},
{
"key": "Alt+U",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Undo a change of selections",
"command": "dance.history.undo.selections"
},
{
"key": "Escape",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Cancel Dance operation",
"command": "dance.cancel"
},
{
"key": "Escape",
"when": "editorTextFocus && dance.mode == 'input'",
"title": "Cancel Dance operation",
"command": "dance.cancel"
},
{
"key": "Up",
"when": "inputFocus && !textInputFocus",
"command": "dance.changeInput",
"args": {
"action": "previous"
}
},
{
"key": "Down",
"when": "inputFocus && !textInputFocus",
"command": "dance.changeInput",
"args": {
"action": "next"
}
},
{
"key": "Shift+'",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Select register for next command",
"command": "dance.selectRegister"
},
{
"key": "0",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Add the digit 0 to the counter",
"command": "dance.updateCount",
"args": {
"addDigits": 0
}
},
{
"key": "1",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Add the digit 1 to the counter",
"command": "dance.updateCount",
"args": {
"addDigits": 1
}
},
{
"key": "2",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Add the digit 2 to the counter",
"command": "dance.updateCount",
"args": {
"addDigits": 2
}
},
{
"key": "3",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Add the digit 3 to the counter",
"command": "dance.updateCount",
"args": {
"addDigits": 3
}
},
{
"key": "4",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Add the digit 4 to the counter",
"command": "dance.updateCount",
"args": {
"addDigits": 4
}
},
{
"key": "5",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Add the digit 5 to the counter",
"command": "dance.updateCount",
"args": {
"addDigits": 5
}
},
{
"key": "6",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Add the digit 6 to the counter",
"command": "dance.updateCount",
"args": {
"addDigits": 6
}
},
{
"key": "7",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Add the digit 7 to the counter",
"command": "dance.updateCount",
"args": {
"addDigits": 7
}
},
{
"key": "8",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Add the digit 8 to the counter",
"command": "dance.updateCount",
"args": {
"addDigits": 8
}
},
{
"key": "9",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Add the digit 9 to the counter",
"command": "dance.updateCount",
"args": {
"addDigits": 9
}
},
{
"key": "Shift+;",
"when": "editorTextFocus && dance.mode == 'normal'",
"command": "workbench.action.showCommands"
},
{
"key": "A",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Insert after",
"command": "dance.modes.insert.after"
},
{
"key": "I",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Insert before",
"command": "dance.modes.insert.before"
},
{
"key": "Shift+A",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Insert at line end",
"command": "dance.modes.insert.lineEnd"
},
{
"key": "Shift+I",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Insert at line start",
"command": "dance.modes.insert.lineStart"
},
{
"key": "Escape",
"when": "editorTextFocus && dance.mode == 'insert'",
"title": "Set mode to Normal",
"command": "dance.modes.set.normal"
},
{
"key": "Ctrl+V",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Temporary Insert mode",
"command": "dance.modes.set.temporarily.insert"
},
{
"key": "Ctrl+V",
"when": "editorTextFocus && dance.mode == 'insert'",
"title": "Temporary Normal mode",
"command": "dance.modes.set.temporarily.normal"
},
{
"key": "/",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Search",
"command": "dance.search"
},
{
"key": "Alt+/",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Search backward",
"command": "dance.search.backward"
},
{
"key": "Shift+Alt+/",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Search backward (extend)",
"command": "dance.search.backward.extend"
},
{
"key": "Shift+/",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Search (extend)",
"command": "dance.search.extend"
},
{
"key": "N",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Select next match",
"command": "dance.search.next"
},
{
"key": "Shift+N",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Add next match",
"command": "dance.search.next.add"
},
{
"key": "Alt+N",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Select previous match",
"command": "dance.search.previous"
},
{
"key": "Shift+Alt+N",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Add previous match",
"command": "dance.search.previous.add"
},
{
"key": "Shift+Alt+8",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Search current selection",
"command": "dance.search.selection"
},
{
"key": "Shift+8",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Search current selection (smart)",
"command": "dance.search.selection.smart"
},
{
"key": "T",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Select to character (excluded)",
"command": "dance.seek"
},
{
"key": "Alt+A",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Select whole object",
"command": "dance.seek.askObject"
},
{
"key": "Alt+A",
"when": "editorTextFocus && dance.mode == 'insert'",
"title": "Select whole object",
"command": "dance.seek.askObject"
},
{
"key": "]",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Select to whole object end",
"command": "dance.seek.askObject.end"
},
{
"key": "Shift+]",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Extend to whole object end",
"command": "dance.seek.askObject.end.extend"
},
{
"key": "Alt+I",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Select inner object",
"command": "dance.seek.askObject.inner"
},
{
"key": "Alt+I",
"when": "editorTextFocus && dance.mode == 'insert'",
"title": "Select inner object",
"command": "dance.seek.askObject.inner"
},
{
"key": "Alt+]",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Select to inner object end",
"command": "dance.seek.askObject.inner.end"
},
{
"key": "Shift+Alt+]",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Extend to inner object end",
"command": "dance.seek.askObject.inner.end.extend"
},
{
"key": "Alt+[",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Select to inner object start",
"command": "dance.seek.askObject.inner.start"
},
{
"key": "Shift+Alt+[",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Extend to inner object start",
"command": "dance.seek.askObject.inner.start.extend"
},
{
"key": "[",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Select to whole object start",
"command": "dance.seek.askObject.start"
},
{
"key": "Shift+[",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Extend to whole object start",
"command": "dance.seek.askObject.start.extend"
},
{
"key": "Alt+T",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Select to character (excluded, backward)",
"command": "dance.seek.backward"
},
{
"key": "M",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Select to next enclosing character",
"command": "dance.seek.enclosing"
},
{
"key": "Alt+M",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Select to previous enclosing character",
"command": "dance.seek.enclosing.backward"
},
{
"key": "Shift+M",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Extend to next enclosing character",
"command": "dance.seek.enclosing.extend"
},
{
"key": "Shift+Alt+M",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Extend to previous enclosing character",
"command": "dance.seek.enclosing.extend.backward"
},
{
"key": "Shift+T",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Extend to character (excluded)",
"command": "dance.seek.extend"
},
{
"key": "Shift+Alt+T",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Extend to character (excluded, backward)",
"command": "dance.seek.extend.backward"
},
{
"key": "F",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Select to character (included)",
"command": "dance.seek.included"
},
{
"key": "Alt+F",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Select to character (included, backward)",
"command": "dance.seek.included.backward"
},
{
"key": "Shift+F",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Extend to character (included)",
"command": "dance.seek.included.extend"
},
{
"key": "Shift+Alt+F",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Extend to character (included, backward)",
"command": "dance.seek.included.extend.backward"
},
{
"key": "W",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Select to next word start",
"command": "dance.seek.word"
},
{
"key": "B",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Select to previous word start",
"command": "dance.seek.word.backward"
},
{
"key": "Shift+W",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Extend to next word start",
"command": "dance.seek.word.extend"
},
{
"key": "Shift+B",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Extend to previous word start",
"command": "dance.seek.word.extend.backward"
},
{
"key": "Alt+W",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Select to next non-whitespace word start",
"command": "dance.seek.word.ws"
},
{
"key": "Alt+B",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Select to previous non-whitespace word start",
"command": "dance.seek.word.ws.backward"
},
{
"key": "Shift+Alt+W",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Extend to next non-whitespace word start",
"command": "dance.seek.word.ws.extend"
},
{
"key": "Shift+Alt+B",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Extend to previous non-whitespace word start",
"command": "dance.seek.word.ws.extend.backward"
},
{
"key": "E",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Select to next word end",
"command": "dance.seek.wordEnd"
},
{
"key": "Shift+E",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Extend to next word end",
"command": "dance.seek.wordEnd.extend"
},
{
"key": "Alt+E",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Select to next non-whitespace word end",
"command": "dance.seek.wordEnd.ws"
},
{
"key": "Shift+Alt+E",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Extend to next non-whitespace word end",
"command": "dance.seek.wordEnd.ws.extend"
},
{
"key": "Shift+5",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Select whole buffer",
"command": "dance.select.buffer"
},
{
"key": "Shift+J",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Extend down",
"command": "dance.select.down.extend"
},
{
"key": "Shift+Down",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Extend down",
"command": "dance.select.down.extend"
},
{
"key": "J",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Jump down",
"command": "dance.select.down.jump"
},
{
"key": "Down",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Jump down",
"command": "dance.select.down.jump"
},
{
"key": "Shift+H",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Extend left",
"command": "dance.select.left.extend"
},
{
"key": "Shift+Left",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Extend left",
"command": "dance.select.left.extend"
},
{
"key": "H",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Jump left",
"command": "dance.select.left.jump"
},
{
"key": "Left",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Jump left",
"command": "dance.select.left.jump"
},
{
"key": "X",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Select line below",
"command": "dance.select.line.below"
},
{
"key": "Shift+X",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Extend to line below",
"command": "dance.select.line.below.extend"
},
{
"key": "Alt+L",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Select to line end",
"command": "dance.select.lineEnd"
},
{
"key": "End",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Select to line end",
"command": "dance.select.lineEnd"
},
{
"key": "Shift+Alt+L",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Extend to line end",
"command": "dance.select.lineEnd.extend"
},
{
"key": "Shift+End",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Extend to line end",
"command": "dance.select.lineEnd.extend"
},
{
"key": "Alt+H",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Select to line start",
"command": "dance.select.lineStart"
},
{
"key": "Home",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Select to line start",
"command": "dance.select.lineStart"
},
{
"key": "Shift+Alt+H",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Extend to line start",
"command": "dance.select.lineStart.extend"
},
{
"key": "Shift+Home",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Extend to line start",
"command": "dance.select.lineStart.extend"
},
{
"key": "Shift+L",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Extend right",
"command": "dance.select.right.extend"
},
{
"key": "Shift+Right",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Extend right",
"command": "dance.select.right.extend"
},
{
"key": "L",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Jump right",
"command": "dance.select.right.jump"
},
{
"key": "Right",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Jump right",
"command": "dance.select.right.jump"
},
{
"key": "Shift+G",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Extend to",
"command": "dance.select.to.extend"
},
{
"key": "G",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Go to",
"command": "dance.select.to.jump"
},
{
"key": "Shift+K",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Extend up",
"command": "dance.select.up.extend"
},
{
"key": "Shift+Up",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Extend up",
"command": "dance.select.up.extend"
},
{
"key": "K",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Jump up",
"command": "dance.select.up.jump"
},
{
"key": "Up",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Jump up",
"command": "dance.select.up.jump"
},
{
"key": "Ctrl+F",
"when": "editorTextFocus && dance.mode == 'normal'",
"command": "dance.select.vertically",
"args": {
"direction": 1,
"by": "page"
}
},
{
"key": "Ctrl+F",
"when": "editorTextFocus && dance.mode == 'insert'",
"command": "dance.select.vertically",
"args": {
"direction": 1,
"by": "page"
}
},
{
"key": "Ctrl+D",
"when": "editorTextFocus && dance.mode == 'normal'",
"command": "dance.select.vertically",
"args": {
"direction": 1,
"by": "halfPage"
}
},
{
"key": "Ctrl+D",
"when": "editorTextFocus && dance.mode == 'insert'",
"command": "dance.select.vertically",
"args": {
"direction": 1,
"by": "halfPage"
}
},
{
"key": "Ctrl+B",
"when": "editorTextFocus && dance.mode == 'normal'",
"command": "dance.select.vertically",
"args": {
"direction": -1,
"by": "page"
}
},
{
"key": "Ctrl+B",
"when": "editorTextFocus && dance.mode == 'insert'",
"command": "dance.select.vertically",
"args": {
"direction": -1,
"by": "page"
}
},
{
"key": "Ctrl+U",
"when": "editorTextFocus && dance.mode == 'normal'",
"command": "dance.select.vertically",
"args": {
"direction": -1,
"by": "halfPage"
}
},
{
"key": "Ctrl+U",
"when": "editorTextFocus && dance.mode == 'insert'",
"command": "dance.select.vertically",
"args": {
"direction": -1,
"by": "halfPage"
}
},
{
"key": "Alt+;",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Change direction of selections",
"command": "dance.selections.changeDirection"
},
{
"key": "Alt+Space",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Clear main selections",
"command": "dance.selections.clear.main"
},
{
"key": "Space",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Clear secondary selections",
"command": "dance.selections.clear.secondary"
},
{
"key": "Shift+C",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Copy selections below",
"command": "dance.selections.copy"
},
{
"key": "Shift+Alt+C",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Copy selections above",
"command": "dance.selections.copy.above"
},
{
"key": "Alt+X",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Expand to lines",
"command": "dance.selections.expandToLines"
},
{
"key": "Shift+Alt+;",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Forward selections",
"command": "dance.selections.faceForward"
},
{
"key": "Shift+4",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Filter selections",
"command": "dance.selections.filter"
},
{
"key": "Alt+K",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Keep matching selections",
"command": "dance.selections.filter.regexp"
},
{
"key": "Shift+Alt+K",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Clear matching selections",
"command": "dance.selections.filter.regexp.inverse"
},
{
"key": "Shift+Alt+-",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Merge contiguous selections",
"command": "dance.selections.merge"
},
{
"key": "Shift+Alt+\\",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Pipe selections",
"command": "dance.selections.pipe"
},
{
"key": "Shift+1",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Pipe and append",
"command": "dance.selections.pipe.append"
},
{
"key": "Shift+Alt+1",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Pipe and prepend",
"command": "dance.selections.pipe.prepend"
},
{
"key": "Shift+\\",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Pipe and replace",
"command": "dance.selections.pipe.replace"
},
{
"key": ";",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Reduce selections to their cursor",
"command": "dance.selections.reduce"
},
{
"key": "Shift+Alt+S",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Reduce selections to their ends",
"command": "dance.selections.reduce.edges"
},
{
"key": "Z",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Restore selections",
"command": "dance.selections.restore"
},
{
"key": "Alt+Z",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Combine register selections with current ones",
"command": "dance.selections.restore.withCurrent"
},
{
"key": "Shift+Alt+Z",
"when": "editorTextFocus && dance.mode == 'normal'",
"command": "dance.selections.restore.withCurrent",
"args": {
"reverse": true
}
},
{
"key": "Shift+Z",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Save selections",
"command": "dance.selections.save"
},
{
"key": "Y",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Copy selections text",
"command": "dance.selections.saveText"
},
{
"key": "S",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Select within selections",
"command": "dance.selections.select"
},
{
"key": "Shift+S",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Split selections",
"command": "dance.selections.split"
},
{
"key": "Alt+S",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Split selections at line boundaries",
"command": "dance.selections.splitLines"
},
{
"key": "Enter",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Toggle selection indices",
"command": "dance.selections.toggleIndices"
},
{
"key": "Shift+Alt+X",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Trim lines",
"command": "dance.selections.trimLines"
},
{
"key": "Shift+-",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Trim whitespace",
"command": "dance.selections.trimWhitespace"
},
{
"key": "Shift+9",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Rotate selections clockwise",
"command": "dance.selections.rotate.both"
},
{
"key": "Shift+0",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Rotate selections counter-clockwise",
"command": "dance.selections.rotate.both.reverse"
},
{
"key": "Shift+Alt+9",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Rotate selections clockwise (selections only)",
"command": "dance.selections.rotate.selections"
},
{
"key": "Shift+Alt+0",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Rotate selections counter-clockwise (selections only)",
"command": "dance.selections.rotate.selections.reverse"
},
{
"key": "V",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Show view menu",
"command": "dance.openMenu",
"args": {
"input": "view"
}
},
{
"key": "Shift+V",
"when": "editorTextFocus && dance.mode == 'normal'",
"title": "Show view menu (locked)",
"command": "dance.openMenu",
"args": {
"input": "view",
"locked": true
}
},
{
"command": "dance.ignore",
"key": "Shift+D",
"when": "editorTextFocus && dance.mode == 'normal'"
},
{
"command": "dance.ignore",
"key": "Shift+Y",
"when": "editorTextFocus && dance.mode == 'normal'"
},
{
"command": "dance.ignore",
"key": "Shift+2",
"when": "editorTextFocus && dance.mode == 'normal'"
},
{
"command": "dance.ignore",
"key": "Shift+3",
"when": "editorTextFocus && dance.mode == 'normal'"
},
{
"command": "dance.ignore",
"key": "Shift+6",
"when": "editorTextFocus && dance.mode == 'normal'"
},
{
"command": "dance.ignore",
"key": ",",
"when": "editorTextFocus && dance.mode == 'normal'"
},
{
"command": "dance.ignore",
"key": "'",
"when": "editorTextFocus && dance.mode == 'normal'"
}
]
}
}