Skip to content

Commit

Permalink
Merge branch 'main' into pokey/bump-typescript-greater-522
Browse files Browse the repository at this point in the history
  • Loading branch information
pokey committed Nov 12, 2023
2 parents d947dad + d981813 commit 5a0596b
Show file tree
Hide file tree
Showing 71 changed files with 161 additions and 141 deletions.
6 changes: 6 additions & 0 deletions packages/common/src/ide/types/Configuration.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@ export type CursorlessConfiguration = {
experimental: { snippetsDir: string | undefined; hatStability: HatStability };
decorationDebounceDelayMs: number;
debug: boolean;
private: {
lineParagraphIterationScope: boolean;
};
};

export type CursorlessConfigKey = keyof CursorlessConfiguration;
Expand All @@ -27,6 +30,9 @@ export const CONFIGURATION_DEFAULTS: CursorlessConfiguration = {
hatStability: HatStability.balanced,
},
debug: false,
private: {
lineParagraphIterationScope: false,
},
};

export interface Configuration {
Expand Down
2 changes: 1 addition & 1 deletion packages/cursorless-engine/src/languages/getNodeMatcher.ts
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ export function getNodeMatcher(

export const languageMatchers: Record<
LegacyLanguageId,
Record<SimpleScopeTypeType, NodeMatcher>
Partial<Record<SimpleScopeTypeType, NodeMatcher>>
> = {
c: cpp,
cpp,
Expand Down
5 changes: 5 additions & 0 deletions packages/cursorless-engine/src/processTargets/.eslintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"rules": {
"import/no-default-export": ["error"]
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@ import { StoredTargetMap } from "..";
import { Mark } from "../typings/TargetDescriptor";
import { MarkStageFactory } from "./MarkStageFactory";
import { MarkStage } from "./PipelineStages.types";
import CursorStage from "./marks/CursorStage";
import DecoratedSymbolStage from "./marks/DecoratedSymbolStage";
import ExplicitMarkStage from "./marks/ExplicitMarkStage";
import LineNumberStage from "./marks/LineNumberStage";
import NothingStage from "./marks/NothingStage";
import RangeMarkStage from "./marks/RangeMarkStage";
import { CursorStage } from "./marks/CursorStage";
import { DecoratedSymbolStage } from "./marks/DecoratedSymbolStage";
import { ExplicitMarkStage } from "./marks/ExplicitMarkStage";
import { LineNumberStage } from "./marks/LineNumberStage";
import { NothingStage } from "./marks/NothingStage";
import { RangeMarkStage } from "./marks/RangeMarkStage";
import { StoredTargetStage } from "./marks/StoredTargetStage";
import { TargetMarkStage } from "./marks/TargetMarkStage";

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import { StoredTargetMap } from "..";
import { LanguageDefinitions } from "../languages/LanguageDefinitions";
import { ModifierStageFactory } from "./ModifierStageFactory";
import { ModifierStage } from "./PipelineStages.types";
import CascadingStage from "./modifiers/CascadingStage";
import { CascadingStage } from "./modifiers/CascadingStage";
import { ModifyIfUntypedStage } from "./modifiers/ConditionalModifierStages";
import { ContainingScopeStage } from "./modifiers/ContainingScopeStage";
import { EveryScopeStage } from "./modifiers/EveryScopeStage";
Expand All @@ -17,27 +17,27 @@ import {
KeepEmptyFilterStage,
} from "./modifiers/FilterStages";
import { HeadStage, TailStage } from "./modifiers/HeadTailStage";
import InstanceStage from "./modifiers/InstanceStage";
import { InstanceStage } from "./modifiers/InstanceStage";
import {
ExcludeInteriorStage,
InteriorOnlyStage,
} from "./modifiers/InteriorStage";
import ItemStage from "./modifiers/ItemStage";
import { ItemStage } from "./modifiers/ItemStage";
import { LeadingStage, TrailingStage } from "./modifiers/LeadingTrailingStages";
import { OrdinalScopeStage } from "./modifiers/OrdinalScopeStage";
import { EndOfStage, StartOfStage } from "./modifiers/PositionStage";
import RangeModifierStage from "./modifiers/RangeModifierStage";
import RawSelectionStage from "./modifiers/RawSelectionStage";
import RelativeScopeStage from "./modifiers/RelativeScopeStage";
import SurroundingPairStage from "./modifiers/SurroundingPairStage";
import { RangeModifierStage } from "./modifiers/RangeModifierStage";
import { RawSelectionStage } from "./modifiers/RawSelectionStage";
import { RelativeScopeStage } from "./modifiers/RelativeScopeStage";
import { SurroundingPairStage } from "./modifiers/SurroundingPairStage";
import { ScopeHandlerFactory } from "./modifiers/scopeHandlers/ScopeHandlerFactory";
import BoundedNonWhitespaceSequenceStage from "./modifiers/scopeTypeStages/BoundedNonWhitespaceStage";
import { BoundedNonWhitespaceSequenceStage } from "./modifiers/scopeTypeStages/BoundedNonWhitespaceStage";
import {
LegacyContainingSyntaxScopeStage,
SimpleContainingScopeModifier,
SimpleEveryScopeModifier,
} from "./modifiers/scopeTypeStages/LegacyContainingSyntaxScopeStage";
import NotebookCellStage from "./modifiers/scopeTypeStages/NotebookCellStage";
import { NotebookCellStage } from "./modifiers/scopeTypeStages/NotebookCellStage";

export class ModifierStageFactoryImpl implements ModifierStageFactory {
constructor(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import { Target } from "../typings/target.types";
import { MarkStageFactory } from "./MarkStageFactory";
import { ModifierStageFactory } from "./ModifierStageFactory";
import { MarkStage, ModifierStage } from "./PipelineStages.types";
import ImplicitStage from "./marks/ImplicitStage";
import { ImplicitStage } from "./marks/ImplicitStage";
import { ContainingTokenIfUntypedEmptyStage } from "./modifiers/ConditionalModifierStages";
import { PlainTarget } from "./targets";
import { uniqWithHash } from "../util/uniqWithHash";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import type { MarkStage } from "../PipelineStages.types";
import { UntypedTarget } from "../targets";
import { getActiveSelections } from "./getActiveSelections";

export default class CursorStage implements MarkStage {
export class CursorStage implements MarkStage {
constructor(private mark: CursorMark) {}

run(): Target[] {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { Target } from "../../typings/target.types";
import { MarkStage } from "../PipelineStages.types";
import { UntypedTarget } from "../targets";

export default class implements MarkStage {
export class DecoratedSymbolStage implements MarkStage {
constructor(
private readableHatMap: ReadOnlyHatMap,
private mark: DecoratedSymbolMark,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { MarkStage } from "../PipelineStages.types";
import { UntypedTarget } from "../targets";
import { ide } from "../../singletons/ide.singleton";

export default class implements MarkStage {
export class ExplicitMarkStage implements MarkStage {
constructor(private mark: ExplicitMark) {}

run(): Target[] {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import type { MarkStage } from "../PipelineStages.types";
import { ImplicitTarget } from "../targets";
import { getActiveSelections } from "./getActiveSelections";

export default class ImplicitStage implements MarkStage {
export class ImplicitStage implements MarkStage {
run(): Target[] {
return getActiveSelections(ide()).map(
(selection) =>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import type { MarkStage } from "../PipelineStages.types";
import { createLineTarget } from "../modifiers/scopeHandlers";
import { LineTarget } from "../targets";

export default class implements MarkStage {
export class LineNumberStage implements MarkStage {
constructor(private mark: LineNumberMark) {}

run(): LineTarget[] {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { Target } from "../../typings/target.types";
import { NothingMark } from "@cursorless/common";
import { MarkStage } from "../PipelineStages.types";

export default class implements MarkStage {
export class NothingStage implements MarkStage {
constructor(private mark: NothingMark) {}

run(): Target[] {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { MarkStageFactory } from "../MarkStageFactory";
import { MarkStage } from "../PipelineStages.types";
import { targetsToContinuousTarget } from "../TargetPipelineRunner";

export default class RangeMarkStage implements MarkStage {
export class RangeMarkStage implements MarkStage {
constructor(
private markStageFactory: MarkStageFactory,
private mark: RangeMark,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import { ModifierStage } from "../PipelineStages.types";
* Tries each of the given modifiers in turn until one of them doesn't throw an
* error, returning the output from the first modifier not throwing an error.
*/
export default class CascadingStage implements ModifierStage {
export class CascadingStage implements ModifierStage {
private nestedStages_?: ModifierStage[];

constructor(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import { ContainingTokenIfUntypedEmptyStage } from "./ConditionalModifierStages"
import { OutOfRangeError } from "./targetSequenceUtils";
import { StoredTargetMap } from "../..";

export default class InstanceStage implements ModifierStage {
export class InstanceStage implements ModifierStage {
constructor(
private modifierStageFactory: ModifierStageFactory,
private storedTargets: StoredTargetMap,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import {
import { getIterationScope } from "./getIterationScope";
import { tokenizeRange } from "./tokenizeRange";

export default class ItemStage implements ModifierStage {
export class ItemStage implements ModifierStage {
constructor(
private languageDefinitions: LanguageDefinitions,
private modifier: ContainingScopeModifier | EveryScopeModifier,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,2 +1 @@
import ItemStage from "./ItemStage";
export default ItemStage;
export * from "./ItemStage";
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { ModifierStageFactory } from "../ModifierStageFactory";
import { ModifierStage } from "../PipelineStages.types";
import { targetsToContinuousTarget } from "../TargetPipelineRunner";

export default class RangeModifierStage implements ModifierStage {
export class RangeModifierStage implements ModifierStage {
constructor(
private modifierStageFactory: ModifierStageFactory,
private modifier: RangeModifier,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import type { RawSelectionModifier } from "@cursorless/common";
import type { ModifierStage } from "../PipelineStages.types";
import { RawSelectionTarget } from "../targets";

export default class RawSelectionStage implements ModifierStage {
export class RawSelectionStage implements ModifierStage {
constructor(private modifier: RawSelectionModifier) {}

run(target: Target): Target[] {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import { OutOfRangeError } from "./targetSequenceUtils";
* {@link ScopeHandler.generateScopes} to get the desired scopes, skipping the
* first scope if input range is empty and is at start of that scope.
*/
export default class RelativeExclusiveScopeStage implements ModifierStage {
export class RelativeExclusiveScopeStage implements ModifierStage {
constructor(
private modifierStageFactory: ModifierStageFactory,
private scopeHandlerFactory: ScopeHandlerFactory,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import type { RelativeScopeModifier } from "@cursorless/common";
import type { Target } from "../../typings/target.types";
import { ModifierStageFactory } from "../ModifierStageFactory";
import type { ModifierStage } from "../PipelineStages.types";
import RelativeExclusiveScopeStage from "./RelativeExclusiveScopeStage";
import { RelativeExclusiveScopeStage } from "./RelativeExclusiveScopeStage";
import { RelativeInclusiveScopeStage } from "./RelativeInclusiveScopeStage";
import { ScopeHandlerFactory } from "./scopeHandlers/ScopeHandlerFactory";

Expand All @@ -13,7 +13,7 @@ import { ScopeHandlerFactory } from "./scopeHandlers/ScopeHandlerFactory";
* delegating to {@link RelativeInclusiveScopeStage} if so, or
* {@link RelativeExclusiveScopeStage} if not.
*/
export default class RelativeScopeStage implements ModifierStage {
export class RelativeScopeStage implements ModifierStage {
private modiferStage: ModifierStage;
constructor(
modifierStageFactory: ModifierStageFactory,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import { processSurroundingPair } from "./surroundingPair";
* @returns The new selection expanded to the containing surrounding pair or
* `null` if none was found
*/
export default class SurroundingPairStage implements ModifierStage {
export class SurroundingPairStage implements ModifierStage {
constructor(
private languageDefinitions: LanguageDefinitions,
private modifier: SurroundingPairModifier,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { TextEditor, Position, Direction, Range } from "@cursorless/common";
import BaseScopeHandler from "./BaseScopeHandler";
import { BaseScopeHandler } from "./BaseScopeHandler";
import { TargetScope } from "./scope.types";
import {
CustomScopeType,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ const DEFAULT_REQUIREMENTS: Omit<ScopeIteratorRequirements, "distalPosition"> =
/**
* All scope handlers should derive from this base class
*/
export default abstract class BaseScopeHandler implements ScopeHandler {
export abstract class BaseScopeHandler implements ScopeHandler {
public abstract readonly scopeType: ScopeType | undefined;
public abstract readonly iterationScopeType: ScopeType | CustomScopeType;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ const SPLIT_REGEX = /\p{L}\p{M}*|[\p{N}\p{P}\p{S}\p{Z}\p{C}]/gu;

const NONWHITESPACE_REGEX = /\p{L}\p{M}*|[\p{N}\p{P}\p{S}]/gu;

export default class CharacterScopeHandler extends NestedScopeHandler {
export class CharacterScopeHandler extends NestedScopeHandler {
public readonly scopeType = { type: "character" } as const;
public readonly iterationScopeType = { type: "token" } as const;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import { TextEditor, Position } from "@cursorless/common";
import { Direction, ScopeType } from "@cursorless/common";
import { DocumentTarget } from "../../targets";
import BaseScopeHandler from "./BaseScopeHandler";
import { BaseScopeHandler } from "./BaseScopeHandler";
import { TargetScope } from "./scope.types";

export default class DocumentScopeHandler extends BaseScopeHandler {
export class DocumentScopeHandler extends BaseScopeHandler {
public readonly scopeType = { type: "document" } as const;
public readonly iterationScopeType = { type: "document" } as const;
protected readonly isHierarchical = false;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import { generateMatchesInRange } from "../../../util/getMatchesInRange";
import { TokenTarget } from "../../targets";
import type { TargetScope } from "./scope.types";

export default class IdentifierScopeHandler extends NestedScopeHandler {
export class IdentifierScopeHandler extends NestedScopeHandler {
public readonly scopeType = { type: "identifier" } as const;
public readonly iterationScopeType = { type: "line" } as const;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,17 +1,25 @@
import { Position, Range, TextEditor } from "@cursorless/common";
import { Direction, ScopeType } from "@cursorless/common";
import {
Direction,
Position,
Range,
ScopeType,
SimpleScopeTypeType,
TextEditor,
} from "@cursorless/common";
import { ide } from "../../../singletons/ide.singleton";
import { LineTarget } from "../../targets";
import BaseScopeHandler from "./BaseScopeHandler";
import { BaseScopeHandler } from "./BaseScopeHandler";
import type { TargetScope } from "./scope.types";

export default class LineScopeHandler extends BaseScopeHandler {
export class LineScopeHandler extends BaseScopeHandler {
public readonly scopeType = { type: "line" } as const;
public readonly iterationScopeType = { type: "document" } as const;
public readonly iterationScopeType: ScopeType;
protected readonly isHierarchical = false;
public readonly includeAdjacentInEvery: boolean = true;

constructor(_scopeType: ScopeType, _languageId: string) {
super();
this.iterationScopeType = { type: getIterationScopeTypeType() };
}

*generateScopeCandidates(
Expand Down Expand Up @@ -67,3 +75,10 @@ export function fitRangeToLineContent(editor: TextEditor, range: Range) {
endLine.lastNonWhitespaceCharacterIndex,
);
}

function getIterationScopeTypeType(): SimpleScopeTypeType {
const useParagraph = ide().configuration.getOwnConfiguration(
"private.lineParagraphIterationScope",
);
return useParagraph ? "paragraph" : "document";
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import type { Direction, ScopeType } from "@cursorless/common";
import { Position, TextEditor } from "@cursorless/common";
import { flatmap } from "itertools";
import BaseScopeHandler from "./BaseScopeHandler";
import { BaseScopeHandler } from "./BaseScopeHandler";
import { ScopeHandlerFactory } from "./ScopeHandlerFactory";
import type { TargetScope } from "./scope.types";
import type {
Expand All @@ -21,7 +21,7 @@ import type {
* the future we may define a nested scope handler that supports hierarchical
* scope types.
*/
export default abstract class NestedScopeHandler extends BaseScopeHandler {
export abstract class NestedScopeHandler extends BaseScopeHandler {
public abstract readonly iterationScopeType: ScopeType;
protected readonly isHierarchical = false;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { scopeTypeToString } from "./scopeTypeUtil";
* Throw this error when the user requests a hierarchical feature of a scope
* that is not hierarchical, eg `"grand line"`.
*/
export default class NotHierarchicalScopeError extends Error {
export class NotHierarchicalScopeError extends Error {
/**
*
* @param scopeType The scopeType for the failed match to show to the user
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import {
Position,
TextEditor,
} from "@cursorless/common";
import BaseScopeHandler from "./BaseScopeHandler";
import { BaseScopeHandler } from "./BaseScopeHandler";
import { advanceIteratorsUntil, getInitialIteratorInfos } from "./IteratorInfo";
import { ScopeHandlerFactory } from "./ScopeHandlerFactory";
import { compareTargetScopes } from "./compareTargetScopes";
Expand All @@ -15,7 +15,7 @@ import {
ScopeIteratorRequirements,
} from "./scopeHandler.types";

export default class OneOfScopeHandler extends BaseScopeHandler {
export class OneOfScopeHandler extends BaseScopeHandler {
protected isHierarchical = true;

static create(
Expand Down
Loading

0 comments on commit 5a0596b

Please sign in to comment.