Skip to content

Commit d9bac3e

Browse files
authored
keyboard: Support slice ranges (#2430)
- Depends on #2429 ## Checklist - [ ] I have added [tests](https://www.cursorless.org/docs/contributing/test-case-recorder/) - [ ] 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
1 parent 666c592 commit d9bac3e

File tree

5 files changed

+28
-5
lines changed

5 files changed

+28
-5
lines changed

packages/cursorless-vscode-e2e/src/suite/keyboard/basic.vscode.test.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,14 @@ const testCases: TestCase[] = [
8383
keySequence: ["da", "aw", "wp", "aw", "wp"],
8484
finalContent: "((a))\n",
8585
},
86+
{
87+
name: "slice range",
88+
initialContent: "aaa bbb\nccc ddd",
89+
// keyboard air
90+
// keyboard slice past cap
91+
keySequence: ["da", "fs", "dc", "st", "c"],
92+
finalContent: " bbb\n ddd",
93+
},
8694
{
8795
name: "simple mark",
8896
initialContent: "aaa bbb",
@@ -94,15 +102,15 @@ const testCases: TestCase[] = [
94102
{
95103
name: "simple mark range",
96104
initialContent: "aaa bbb ccc",
97-
// keyboard air
105+
// keyboard bat
98106
// keyboard past this
99107
keySequence: ["db", "fk", "mc", "c"],
100108
finalContent: "aaa ",
101109
},
102110
{
103111
name: "simple mark list",
104112
initialContent: "aaa bbb ccc",
105-
// keyboard air
113+
// keyboard bat
106114
// keyboard and this
107115
keySequence: ["db", "fa", "mc", "c"],
108116
finalContent: "aaa ",

packages/cursorless-vscode/src/keyboard/KeyboardCommandsTargeted.ts

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,11 @@ import KeyboardCommandsModal from "./KeyboardCommandsModal";
1515
import KeyboardHandler from "./KeyboardHandler";
1616
import { SimpleKeyboardActionDescriptor } from "./KeyboardActionType";
1717

18-
export type TargetingMode = "replace" | "makeRange" | "makeList";
18+
export type TargetingMode =
19+
| "replace"
20+
| "makeRange"
21+
| "makeVerticalRange"
22+
| "makeList";
1923

2024
interface TargetDecoratedMarkArgument {
2125
color?: HatColor;
@@ -113,6 +117,15 @@ export default class KeyboardCommandsTargeted {
113117
excludeActive: false,
114118
excludeAnchor: false,
115119
};
120+
case "makeVerticalRange":
121+
return {
122+
type: "range",
123+
anchor: getKeyboardTarget(),
124+
active: target,
125+
excludeActive: false,
126+
excludeAnchor: false,
127+
rangeType: "vertical",
128+
};
116129
case "makeList":
117130
return {
118131
type: "list",

packages/cursorless-vscode/src/keyboard/TokenTypes.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ type ModifierType =
3131
export type MiscValue =
3232
| "combineColorAndShape"
3333
| "makeRange"
34+
| "makeVerticalRange"
3435
| "makeList"
3536
| "forward"
3637
| "backward";
@@ -65,7 +66,7 @@ export interface TokenTypeValueMap {
6566
wrap: SpecificKeyboardActionDescriptor<"wrap">;
6667

6768
// misc config section
68-
targetingMode: "makeRange" | "makeList";
69+
targetingMode: "makeRange" | "makeVerticalRange" | "makeList";
6970
combineColorAndShape: "combineColorAndShape";
7071
direction: "forward" | "backward";
7172

packages/cursorless-vscode/src/keyboard/getTokenTypeKeyMaps.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ export function getTokenTypeKeyMaps(
5555
targetingMode: config.getTokenKeyMap(
5656
"targetingMode",
5757
"misc",
58-
only("makeRange", "makeList"),
58+
only("makeRange", "makeVerticalRange", "makeList"),
5959
),
6060
combineColorAndShape: config.getTokenKeyMap(
6161
"combineColorAndShape",

packages/cursorless-vscode/src/keyboard/keyboard-config.fixture.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@
6262
"cursorless.experimental.keyboard.modal.keybindings.misc": {
6363
"fx": "combineColorAndShape",
6464
"fk": "makeRange",
65+
"fs": "makeVerticalRange",
6566
"fa": "makeList",
6667
"-": "backward"
6768
},

0 commit comments

Comments
 (0)