Skip to content

Commit e90710d

Browse files
Rename cascadingModifier to fallbackModifier (#3042)
1 parent e7a3578 commit e90710d

File tree

11 files changed

+36
-38
lines changed

11 files changed

+36
-38
lines changed

packages/common/src/types/SpokenFormType.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ type SimpleModifierType = Exclude<
6565
| "ordinalScope"
6666
| "relativeScope"
6767
| "modifyIfUntyped"
68-
| "cascading"
68+
| "fallback"
6969
| "range"
7070
>;
7171

packages/common/src/types/command/PartialTargetDescriptor.types.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -442,8 +442,8 @@ export interface ModifyIfUntypedModifier {
442442
* doesn't throw an error, returning the output from the first modifier not
443443
* throwing an error.
444444
*/
445-
export interface CascadingModifier {
446-
type: "cascading";
445+
export interface FallbackModifier {
446+
type: "fallback";
447447

448448
/**
449449
* The modifiers to try in turn
@@ -480,7 +480,7 @@ export type Modifier =
480480
| TrailingModifier
481481
| RawSelectionModifier
482482
| ModifyIfUntypedModifier
483-
| CascadingModifier
483+
| FallbackModifier
484484
| RangeModifier
485485
| KeepContentFilterModifier
486486
| KeepEmptyFilterModifier

packages/common/src/types/command/command.types.ts

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,15 +30,21 @@ export type Command =
3030

3131
export type CommandResponse = { returnValue: unknown } | { fallback: Fallback };
3232

33-
export type FallbackModifier = Modifier | { type: "containingTokenIfEmpty" };
33+
export type FallbackCommandModifier =
34+
| Modifier
35+
| { type: "containingTokenIfEmpty" };
3436

3537
export type Fallback =
36-
| { action: ActionDescriptor["name"]; modifiers: FallbackModifier[] }
37-
| { action: "insert"; modifiers: FallbackModifier[]; text: string }
38-
| { action: "callAsFunction"; modifiers: FallbackModifier[]; callee: string }
38+
| { action: ActionDescriptor["name"]; modifiers: FallbackCommandModifier[] }
39+
| { action: "insert"; modifiers: FallbackCommandModifier[]; text: string }
40+
| {
41+
action: "callAsFunction";
42+
modifiers: FallbackCommandModifier[];
43+
callee: string;
44+
}
3945
| {
4046
action: "wrapWithPairedDelimiter" | "rewrapWithPairedDelimiter";
41-
modifiers: FallbackModifier[];
47+
modifiers: FallbackCommandModifier[];
4248
left: string;
4349
right: string;
4450
};

packages/cursorless-engine/src/actions/InsertSnippet.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ export default class InsertSnippet {
4646
? []
4747
: [
4848
new ModifyIfUntypedExplicitStage(this.modifierStageFactory, {
49-
type: "cascading",
49+
type: "fallback",
5050
modifiers: defaultScopeTypes.map((scopeType) => ({
5151
type: "containingScope",
5252
scopeType,

packages/cursorless-engine/src/actions/snippetsLegacy/InsertSnippetLegacy.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ export default class InsertSnippetLegacy {
4343
? []
4444
: [
4545
new ModifyIfUntypedExplicitStage(this.modifierStageFactory, {
46-
type: "cascading",
46+
type: "fallback",
4747
modifiers: defaultScopeTypes.map((scopeType) => ({
4848
type: "containingScope",
4949
scopeType,

packages/cursorless-engine/src/core/getCommandFallback.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import type {
44
CommandServerApi,
55
DestinationDescriptor,
66
Fallback,
7-
FallbackModifier,
7+
FallbackCommandModifier,
88
PartialTargetDescriptor,
99
} from "@cursorless/common";
1010
import type { ActionReturnValue } from "../actions/actions.types";
@@ -127,7 +127,7 @@ function targetIsSelection(target: PartialTargetDescriptor): boolean {
127127

128128
function getModifiersFromDestination(
129129
destination: DestinationDescriptor,
130-
): FallbackModifier[] {
130+
): FallbackCommandModifier[] {
131131
if (destination.type === "primitive") {
132132
return getModifiersFromTarget(destination.target);
133133
}
@@ -136,7 +136,7 @@ function getModifiersFromDestination(
136136

137137
function getModifiersFromTarget(
138138
target: PartialTargetDescriptor,
139-
): FallbackModifier[] {
139+
): FallbackCommandModifier[] {
140140
if (target.type === "primitive") {
141141
if (target.modifiers != null && target.modifiers.length > 0) {
142142
return target.modifiers;

packages/cursorless-engine/src/generateSpokenForm/primitiveTargetToSpokenForm.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ export class PrimitiveTargetSpokenFormGenerator {
4343

4444
private handleModifier(modifier: Modifier): SpokenFormComponent {
4545
switch (modifier.type) {
46-
case "cascading":
46+
case "fallback":
4747
case "modifyIfUntyped":
4848
case "preferredScope":
4949
throw new NoSpokenFormError(`Modifier '${modifier.type}'`);

packages/cursorless-engine/src/processTargets/ModifierStageFactoryImpl.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@ import type { StoredTargetMap } from "../core/StoredTargets";
33
import type { LanguageDefinitions } from "../languages/LanguageDefinitions";
44
import type { ModifierStageFactory } from "./ModifierStageFactory";
55
import type { ModifierStage } from "./PipelineStages.types";
6-
import { CascadingStage } from "./modifiers/CascadingStage";
76
import { ClassFunctionNameStage } from "./modifiers/ClassFunctionNameStage";
87
import { ModifyIfUntypedStage } from "./modifiers/ConditionalModifierStages";
98
import { ContainingScopeStage } from "./modifiers/ContainingScopeStage";
109
import { EveryScopeStage } from "./modifiers/EveryScopeStage";
10+
import { FallbackStage } from "./modifiers/FallbackStage";
1111
import {
1212
KeepContentFilterStage,
1313
KeepEmptyFilterStage,
@@ -111,8 +111,8 @@ export class ModifierStageFactoryImpl implements ModifierStageFactory {
111111
return new KeepContentFilterStage(modifier);
112112
case "keepEmptyFilter":
113113
return new KeepEmptyFilterStage(modifier);
114-
case "cascading":
115-
return new CascadingStage(this, modifier);
114+
case "fallback":
115+
return new FallbackStage(this, modifier);
116116
case "modifyIfUntyped":
117117
return new ModifyIfUntypedStage(this, modifier);
118118
case "range":

packages/cursorless-engine/src/processTargets/modifiers/CascadingStage.ts renamed to packages/cursorless-engine/src/processTargets/modifiers/FallbackStage.ts

Lines changed: 9 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import type { CascadingModifier } from "@cursorless/common";
1+
import type { FallbackModifier } from "@cursorless/common";
22
import type { Target } from "../../typings/target.types";
33
import type { ModifierStageFactory } from "../ModifierStageFactory";
44
import type {
@@ -10,28 +10,20 @@ import type {
1010
* Tries each of the given modifiers in turn until one of them doesn't throw an
1111
* error, returning the output from the first modifier not throwing an error.
1212
*/
13-
export class CascadingStage implements ModifierStage {
14-
private nestedStages_?: ModifierStage[];
15-
13+
export class FallbackStage implements ModifierStage {
1614
constructor(
1715
private modifierStageFactory: ModifierStageFactory,
18-
private modifier: CascadingModifier,
16+
private modifier: FallbackModifier,
1917
) {}
2018

21-
private get nestedStages() {
22-
if (this.nestedStages_ == null) {
23-
this.nestedStages_ = this.modifier.modifiers.map(
24-
this.modifierStageFactory.create,
25-
);
26-
}
27-
28-
return this.nestedStages_;
29-
}
30-
3119
run(target: Target, options: ModifierStateOptions): Target[] {
32-
for (const nestedStage of this.nestedStages) {
20+
const stages = this.modifier.modifiers.map(
21+
this.modifierStageFactory.create,
22+
);
23+
24+
for (const stage of stages) {
3325
try {
34-
return nestedStage.run(target, options);
26+
return stage.run(target, options);
3527
} catch (_error) {
3628
continue;
3729
}

packages/cursorless-engine/src/processTargets/modifiers/scopeHandlers/FallbackScopeHandler.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ export class FallbackScopeHandler extends BaseScopeHandler {
2323
scopeType: FallbackScopeType,
2424
languageId: string,
2525
): ScopeHandler {
26-
const scopeHandlers: ScopeHandler[] = scopeType.scopeTypes.map(
27-
(scopeType) => scopeHandlerFactory.create(scopeType, languageId),
26+
const scopeHandlers = scopeType.scopeTypes.map((scopeType) =>
27+
scopeHandlerFactory.create(scopeType, languageId),
2828
);
2929

3030
return this.createFromScopeHandlers(scopeHandlers);

0 commit comments

Comments
 (0)