diff --git a/packages/cursorless-engine/src/languages/constants.ts b/packages/cursorless-engine/src/languages/constants.ts index d19faa0c5c..035dbb1512 100644 --- a/packages/cursorless-engine/src/languages/constants.ts +++ b/packages/cursorless-engine/src/languages/constants.ts @@ -14,6 +14,7 @@ export const supportedLanguageIds = [ "jsonc", "latex", "markdown", + "perl", "php", "python", "ruby", diff --git a/packages/cursorless-engine/src/languages/getNodeMatcher.ts b/packages/cursorless-engine/src/languages/getNodeMatcher.ts index f0d0012141..7c3863f92c 100644 --- a/packages/cursorless-engine/src/languages/getNodeMatcher.ts +++ b/packages/cursorless-engine/src/languages/getNodeMatcher.ts @@ -18,6 +18,7 @@ import java from "./java"; import { patternMatchers as json } from "./json"; import latex from "./latex"; import markdown from "./markdown"; +import { patternMatchers as perl } from "./perl"; import php from "./php"; import python from "./python"; import { patternMatchers as ruby } from "./ruby"; @@ -68,6 +69,7 @@ const languageMatchers: Record< jsonc: json, latex, markdown, + perl, php, python, ruby, diff --git a/packages/cursorless-engine/src/languages/getTextFragmentExtractor.ts b/packages/cursorless-engine/src/languages/getTextFragmentExtractor.ts index b126c56c4f..c7105deab0 100644 --- a/packages/cursorless-engine/src/languages/getTextFragmentExtractor.ts +++ b/packages/cursorless-engine/src/languages/getTextFragmentExtractor.ts @@ -162,6 +162,7 @@ const textFragmentExtractors: Record< ), latex: fullDocumentTextFragmentExtractor, markdown: fullDocumentTextFragmentExtractor, + perl: constructDefaultTextFragmentExtractor("perl"), php: constructDefaultTextFragmentExtractor( "php", phpStringTextFragmentExtractor, diff --git a/packages/cursorless-engine/src/languages/perl.ts b/packages/cursorless-engine/src/languages/perl.ts new file mode 100644 index 0000000000..b529da91ce --- /dev/null +++ b/packages/cursorless-engine/src/languages/perl.ts @@ -0,0 +1,83 @@ +import { + argumentMatcher, + cascadingMatcher, + createPatternMatchers, + matcher, + patternMatcher, +} from "../util/nodeMatchers"; +import { NodeMatcherAlternative } from "../typings/Types"; +import { SimpleScopeTypeType } from "@cursorless/common"; +import { + childRangeSelector, + unwrapSelectionExtractor, +} from "../util/nodeSelectors"; +import { patternFinder } from "../util/nodeFinders"; +import { branchMatcher } from "./branchMatcher"; + +const nodeMatchers: Partial< + Record +> = { + map: "hash", + list: "array", + condition: matcher( + patternFinder( + "while_statement[condition]", + "for_statement_1[condition]", + "for_statement_2.binary_expression!", + "for_statement_2.array_variable!", + "for_simple_statement.binary_expression!", + "for_simple_statement.array_variable!", + "if_statement[condition]", + "unless_statement[condition]", + ), + unwrapSelectionExtractor, + ), + string: [ + "string_single_quoted", + "string_double_quoted", + "string_q_quoted", + "string_qq_quoted", + ], + ifStatement: "if_statement", + functionCall: [ + "call_expression", + "call_expression_with_just_name", + "method_invocation", + ], + functionCallee: cascadingMatcher( + patternMatcher("call_expression_with_just_name"), + matcher( + patternFinder("call_expression", "method_invocation"), + childRangeSelector( + ["arguments", "argument", "empty_parenthesized_argument"], + [], + ), + ), + ), + comment: "comments", + namedFunction: ["function_definition"], + anonymousFunction: "anonymous_function", + regularExpression: [ + "patter_matcher_m", // Mistype (?) but that is the name in tree-sitter-perl; it must come before pattern_matcher + "pattern_matcher", + "regex_pattern_qr", + "substitution_pattern_s", + ], + collectionKey: "key_value_pair[key]", + collectionItem: "hash[variable]", + argumentOrParameter: argumentMatcher("arguments"), + class: [ + "package_statement!.block[body]", + "source_file!.package_statement", + "package_statement", + "source_file", + ], + className: "package_statement.package_name!", + name: ["function_definition[name]", "*[key]"], + value: ["*[value]"], + branch: cascadingMatcher( + branchMatcher("if_statement", ["else_clause", "elsif_clause"]), + ), +}; + +export const patternMatchers = createPatternMatchers(nodeMatchers); diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeArg.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeArg.yml new file mode 100644 index 0000000000..abc8fb2894 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeArg.yml @@ -0,0 +1,22 @@ +languageId: perl +command: + version: 4 + spokenForm: change arg + action: { name: clearAndSetSelection } + targets: + - type: primitive + modifiers: + - type: containingScope + scopeType: { type: argumentOrParameter } + usePrePhraseSnapshot: true +initialState: + documentContents: some_funky_func( "and", "three", "args" ) + selections: + - anchor: { line: 0, character: 36 } + active: { line: 0, character: 36 } + marks: {} +finalState: + documentContents: some_funky_func( "and", "three", ) + selections: + - anchor: { line: 0, character: 33 } + active: { line: 0, character: 33 } diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeArg2.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeArg2.yml new file mode 100644 index 0000000000..a2b33ff40e --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeArg2.yml @@ -0,0 +1,22 @@ +languageId: perl +command: + version: 4 + spokenForm: change arg + action: {name: clearAndSetSelection} + targets: + - type: primitive + modifiers: + - type: containingScope + scopeType: {type: argumentOrParameter} + usePrePhraseSnapshot: true +initialState: + documentContents: some_funky_func( "and", "three", "args" ) + selections: + - anchor: {line: 0, character: 29} + active: {line: 0, character: 29} + marks: {} +finalState: + documentContents: some_funky_func( "and", , "args" ) + selections: + - anchor: {line: 0, character: 24} + active: {line: 0, character: 24} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeArg3.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeArg3.yml new file mode 100644 index 0000000000..fe7e8a8c84 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeArg3.yml @@ -0,0 +1,22 @@ +languageId: perl +command: + version: 4 + spokenForm: change arg + action: {name: clearAndSetSelection} + targets: + - type: primitive + modifiers: + - type: containingScope + scopeType: {type: argumentOrParameter} + usePrePhraseSnapshot: true +initialState: + documentContents: some_funky_func( "and", "three", "args" ) + selections: + - anchor: {line: 0, character: 21} + active: {line: 0, character: 21} + marks: {} +finalState: + documentContents: some_funky_func( , "three", "args" ) + selections: + - anchor: {line: 0, character: 17} + active: {line: 0, character: 17} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeArg4.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeArg4.yml new file mode 100644 index 0000000000..c0d475fef2 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeArg4.yml @@ -0,0 +1,18 @@ +languageId: perl +command: + version: 5 + spokenForm: change arg + action: {name: clearAndSetSelection} + targets: + - type: primitive + modifiers: + - type: containingScope + scopeType: {type: argumentOrParameter} + usePrePhraseSnapshot: true +initialState: + documentContents: some_funky_func( "and", "three", "args" ) + selections: + - anchor: {line: 0, character: 16} + active: {line: 0, character: 16} + marks: {} +thrownError: {name: NoContainingScopeError} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeBranch.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeBranch.yml new file mode 100644 index 0000000000..19e5335d93 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeBranch.yml @@ -0,0 +1,34 @@ +languageId: perl +command: + version: 5 + spokenForm: change branch + action: {name: clearAndSetSelection} + targets: + - type: primitive + modifiers: + - type: containingScope + scopeType: {type: branch} + usePrePhraseSnapshot: true +initialState: + documentContents: | + if ( 1 ) { + 2; + } elsif ( 3 ) { + 4; + } else { + 5; + } + selections: + - anchor: {line: 0, character: 0} + active: {line: 0, character: 0} + marks: {} +finalState: + documentContents: |2 + elsif ( 3 ) { + 4; + } else { + 5; + } + selections: + - anchor: {line: 0, character: 0} + active: {line: 0, character: 0} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeBranch2.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeBranch2.yml new file mode 100644 index 0000000000..8a86c97bf3 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeBranch2.yml @@ -0,0 +1,34 @@ +languageId: perl +command: + version: 5 + spokenForm: change branch + action: {name: clearAndSetSelection} + targets: + - type: primitive + modifiers: + - type: containingScope + scopeType: {type: branch} + usePrePhraseSnapshot: true +initialState: + documentContents: | + if ( 1 ) { + 2; + } elsif ( 3 ) { + 4; + } else { + 5; + } + selections: + - anchor: {line: 2, character: 2} + active: {line: 2, character: 2} + marks: {} +finalState: + documentContents: | + if ( 1 ) { + 2; + } else { + 5; + } + selections: + - anchor: {line: 2, character: 2} + active: {line: 2, character: 2} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeBranch3.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeBranch3.yml new file mode 100644 index 0000000000..67be0e39a3 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeBranch3.yml @@ -0,0 +1,34 @@ +languageId: perl +command: + version: 5 + spokenForm: change branch + action: {name: clearAndSetSelection} + targets: + - type: primitive + modifiers: + - type: containingScope + scopeType: {type: branch} + usePrePhraseSnapshot: true +initialState: + documentContents: | + if ( 1 ) { + 2; + } elsif ( 3 ) { + 4; + } else { + 5; + } + selections: + - anchor: {line: 4, character: 2} + active: {line: 4, character: 2} + marks: {} +finalState: + documentContents: | + if ( 1 ) { + 2; + } elsif ( 3 ) { + 4; + } + selections: + - anchor: {line: 4, character: 2} + active: {line: 4, character: 2} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeCall.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeCall.yml new file mode 100644 index 0000000000..ee458c0df9 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeCall.yml @@ -0,0 +1,28 @@ +languageId: perl +command: + version: 4 + spokenForm: change call + action: { name: clearAndSetSelection } + targets: + - type: primitive + modifiers: + - type: containingScope + scopeType: { type: functionCall } + usePrePhraseSnapshot: true +initialState: + documentContents: |- + my $var = 1; + $var = func(); + $var = 2; + selections: + - anchor: { line: 1, character: 12 } + active: { line: 1, character: 12 } + marks: {} +finalState: + documentContents: |- + my $var = 1; + $var = ; + $var = 2; + selections: + - anchor: { line: 1, character: 7 } + active: { line: 1, character: 7 } diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeCall2.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeCall2.yml new file mode 100644 index 0000000000..c03cc62a83 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeCall2.yml @@ -0,0 +1,28 @@ +languageId: perl +command: + version: 4 + spokenForm: change call + action: { name: clearAndSetSelection } + targets: + - type: primitive + modifiers: + - type: containingScope + scopeType: { type: functionCall } + usePrePhraseSnapshot: true +initialState: + documentContents: |- + my $var = 1; + $var = func_with_params( $var ); + $var = 2; + selections: + - anchor: { line: 1, character: 27 } + active: { line: 1, character: 27 } + marks: {} +finalState: + documentContents: |- + my $var = 1; + $var = ; + $var = 2; + selections: + - anchor: { line: 1, character: 7 } + active: { line: 1, character: 7 } diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeCall3.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeCall3.yml new file mode 100644 index 0000000000..3b0f16d9fa --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeCall3.yml @@ -0,0 +1,28 @@ +languageId: perl +command: + version: 4 + spokenForm: change call + action: { name: clearAndSetSelection } + targets: + - type: primitive + modifiers: + - type: containingScope + scopeType: { type: functionCall } + usePrePhraseSnapshot: true +initialState: + documentContents: |- + my $var = 1; + $var = $object->method( ); + $var = 2; + selections: + - anchor: { line: 1, character: 24 } + active: { line: 1, character: 24 } + marks: {} +finalState: + documentContents: |- + my $var = 1; + $var = ; + $var = 2; + selections: + - anchor: { line: 1, character: 7 } + active: { line: 1, character: 7 } diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeCall4.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeCall4.yml new file mode 100644 index 0000000000..f40999c7f8 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeCall4.yml @@ -0,0 +1,28 @@ +languageId: perl +command: + version: 4 + spokenForm: change call + action: { name: clearAndSetSelection } + targets: + - type: primitive + modifiers: + - type: containingScope + scopeType: { type: functionCall } + usePrePhraseSnapshot: true +initialState: + documentContents: |- + my $var = 1; + $var = Other::Package::func(); + $var = 2; + selections: + - anchor: { line: 1, character: 24 } + active: { line: 1, character: 24 } + marks: {} +finalState: + documentContents: |- + my $var = 1; + $var = ; + $var = 2; + selections: + - anchor: { line: 1, character: 7 } + active: { line: 1, character: 7 } diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeCallee.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeCallee.yml new file mode 100644 index 0000000000..d4f923c2c2 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeCallee.yml @@ -0,0 +1,22 @@ +languageId: perl +command: + version: 5 + spokenForm: change callee + action: {name: clearAndSetSelection} + targets: + - type: primitive + modifiers: + - type: containingScope + scopeType: {type: functionCallee} + usePrePhraseSnapshot: true +initialState: + documentContents: foo(); + selections: + - anchor: {line: 0, character: 4} + active: {line: 0, character: 4} + marks: {} +finalState: + documentContents: (); + selections: + - anchor: {line: 0, character: 0} + active: {line: 0, character: 0} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeCallee2.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeCallee2.yml new file mode 100644 index 0000000000..2986292c9f --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeCallee2.yml @@ -0,0 +1,22 @@ +languageId: perl +command: + version: 5 + spokenForm: change callee + action: {name: clearAndSetSelection} + targets: + - type: primitive + modifiers: + - type: containingScope + scopeType: {type: functionCallee} + usePrePhraseSnapshot: true +initialState: + documentContents: $thing->method( $arg ); + selections: + - anchor: {line: 0, character: 19} + active: {line: 0, character: 19} + marks: {} +finalState: + documentContents: ( $arg ); + selections: + - anchor: {line: 0, character: 0} + active: {line: 0, character: 0} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeCallee3.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeCallee3.yml new file mode 100644 index 0000000000..8b843b4b64 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeCallee3.yml @@ -0,0 +1,22 @@ +languageId: perl +command: + version: 5 + spokenForm: change callee + action: {name: clearAndSetSelection} + targets: + - type: primitive + modifiers: + - type: containingScope + scopeType: {type: functionCallee} + usePrePhraseSnapshot: true +initialState: + documentContents: $foo->(); + selections: + - anchor: {line: 0, character: 7} + active: {line: 0, character: 7} + marks: {} +finalState: + documentContents: (); + selections: + - anchor: {line: 0, character: 0} + active: {line: 0, character: 0} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeCallee4.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeCallee4.yml new file mode 100644 index 0000000000..3d07eb3ab4 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeCallee4.yml @@ -0,0 +1,22 @@ +languageId: perl +command: + version: 5 + spokenForm: change callee + action: {name: clearAndSetSelection} + targets: + - type: primitive + modifiers: + - type: containingScope + scopeType: {type: functionCallee} + usePrePhraseSnapshot: true +initialState: + documentContents: foo( $bar ); + selections: + - anchor: {line: 0, character: 7} + active: {line: 0, character: 7} + marks: {} +finalState: + documentContents: ( $bar ); + selections: + - anchor: {line: 0, character: 0} + active: {line: 0, character: 0} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeCallee5.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeCallee5.yml new file mode 100644 index 0000000000..cbc3a822a5 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeCallee5.yml @@ -0,0 +1,22 @@ +languageId: perl +command: + version: 5 + spokenForm: change callee + action: {name: clearAndSetSelection} + targets: + - type: primitive + modifiers: + - type: containingScope + scopeType: {type: functionCallee} + usePrePhraseSnapshot: true +initialState: + documentContents: Package::Foo->new( $thing ); + selections: + - anchor: {line: 0, character: 23} + active: {line: 0, character: 23} + marks: {} +finalState: + documentContents: ( $thing ); + selections: + - anchor: {line: 0, character: 0} + active: {line: 0, character: 0} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeClassName.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeClassName.yml new file mode 100644 index 0000000000..d31262a779 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeClassName.yml @@ -0,0 +1,18 @@ +languageId: perl +command: + version: 4 + spokenForm: change class name + action: {name: clearAndSetSelection} + targets: + - type: primitive + modifiers: + - type: containingScope + scopeType: {type: className} + usePrePhraseSnapshot: true +initialState: + documentContents: $var = Some::Package::func() + selections: + - anchor: {line: 0, character: 23} + active: {line: 0, character: 23} + marks: {} +thrownError: {name: NoContainingScopeError} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeClassName2.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeClassName2.yml new file mode 100644 index 0000000000..b99e6f531b --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeClassName2.yml @@ -0,0 +1,46 @@ +languageId: perl +command: + version: 4 + spokenForm: change class name + action: {name: clearAndSetSelection} + targets: + - type: primitive + modifiers: + - type: containingScope + scopeType: {type: className} + usePrePhraseSnapshot: true +initialState: + documentContents: |- + package Foo::Bar::Banana; + + # A sort of + # comment + + package Hello::World { + 1; + } + + 1; + selections: + - anchor: {line: 0, character: 13} + active: {line: 0, character: 13} + - anchor: {line: 5, character: 19} + active: {line: 5, character: 19} + marks: {} +finalState: + documentContents: |- + package ; + + # A sort of + # comment + + package { + 1; + } + + 1; + selections: + - anchor: {line: 0, character: 8} + active: {line: 0, character: 8} + - anchor: {line: 5, character: 8} + active: {line: 5, character: 8} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeClassName3.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeClassName3.yml new file mode 100644 index 0000000000..4281a40471 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeClassName3.yml @@ -0,0 +1,46 @@ +languageId: perl +command: + version: 4 + spokenForm: change class name + action: {name: clearAndSetSelection} + targets: + - type: primitive + modifiers: + - type: containingScope + scopeType: {type: className} + usePrePhraseSnapshot: true +initialState: + documentContents: |- + package Foo::Bar::Banana; + + # A sort of + # comment + + package Hello::World { + 1; + } + + 1; + selections: + - anchor: {line: 5, character: 2} + active: {line: 5, character: 2} + - anchor: {line: 0, character: 2} + active: {line: 0, character: 2} + marks: {} +finalState: + documentContents: |- + package ; + + # A sort of + # comment + + package { + 1; + } + + 1; + selections: + - anchor: {line: 0, character: 8} + active: {line: 0, character: 8} + - anchor: {line: 5, character: 8} + active: {line: 5, character: 8} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeClassName4.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeClassName4.yml new file mode 100644 index 0000000000..ef35bec3dd --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeClassName4.yml @@ -0,0 +1,42 @@ +languageId: perl +command: + version: 5 + spokenForm: change class name + action: {name: clearAndSetSelection} + targets: + - type: primitive + modifiers: + - type: containingScope + scopeType: {type: className} + usePrePhraseSnapshot: true +initialState: + documentContents: |- + package Foo::Bar::Banana; + + # A sort of + # comment + + package Hello::World { + 1; + } + + 1; + selections: + - anchor: {line: 6, character: 4} + active: {line: 6, character: 4} + marks: {} +finalState: + documentContents: |- + package Foo::Bar::Banana; + + # A sort of + # comment + + package { + 1; + } + + 1; + selections: + - anchor: {line: 5, character: 8} + active: {line: 5, character: 8} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeComment.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeComment.yml new file mode 100644 index 0000000000..b1019973d2 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeComment.yml @@ -0,0 +1,28 @@ +languageId: perl +command: + version: 4 + spokenForm: change comment + action: { name: clearAndSetSelection } + targets: + - type: primitive + modifiers: + - type: containingScope + scopeType: { type: comment } + usePrePhraseSnapshot: true +initialState: + documentContents: |- + $var = 1; + # An actual comment + $var = 2; + selections: + - anchor: { line: 1, character: 2 } + active: { line: 1, character: 2 } + marks: {} +finalState: + documentContents: |- + $var = 1; + + $var = 2; + selections: + - anchor: { line: 1, character: 0 } + active: { line: 1, character: 0 } diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeCondition.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeCondition.yml new file mode 100644 index 0000000000..206616cc86 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeCondition.yml @@ -0,0 +1,40 @@ +languageId: perl +command: + version: 4 + spokenForm: change condition + action: { name: clearAndSetSelection } + targets: + - type: primitive + modifiers: + - type: containingScope + scopeType: { type: condition } + usePrePhraseSnapshot: true +initialState: + documentContents: |- + while ( $a < 0 ) { + # ... + } + + while ( ( $a < 0 ) ) { + # ... + } + selections: + - anchor: { line: 1, character: 4 } + active: { line: 1, character: 4 } + - anchor: { line: 5, character: 4 } + active: { line: 5, character: 4 } + marks: {} +finalState: + documentContents: |- + while () { + # ... + } + + while () { + # ... + } + selections: + - anchor: { line: 0, character: 7 } + active: { line: 0, character: 7 } + - anchor: { line: 4, character: 7 } + active: { line: 4, character: 7 } diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeCondition2.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeCondition2.yml new file mode 100644 index 0000000000..bdd1f9ea2e --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeCondition2.yml @@ -0,0 +1,22 @@ +languageId: perl +command: + version: 5 + spokenForm: change condition + action: {name: clearAndSetSelection} + targets: + - type: primitive + modifiers: + - type: containingScope + scopeType: {type: condition} + usePrePhraseSnapshot: true +initialState: + documentContents: for my $bbb ( 1 .. 10 ) {} + selections: + - anchor: {line: 0, character: 0} + active: {line: 0, character: 0} + marks: {} +finalState: + documentContents: for my $bbb ( ) {} + selections: + - anchor: {line: 0, character: 14} + active: {line: 0, character: 14} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeCondition3.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeCondition3.yml new file mode 100644 index 0000000000..f3fb102060 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeCondition3.yml @@ -0,0 +1,22 @@ +languageId: perl +command: + version: 5 + spokenForm: change condition + action: {name: clearAndSetSelection} + targets: + - type: primitive + modifiers: + - type: containingScope + scopeType: {type: condition} + usePrePhraseSnapshot: true +initialState: + documentContents: foreach my $aaa ( @bbb ) {} + selections: + - anchor: {line: 0, character: 0} + active: {line: 0, character: 0} + marks: {} +finalState: + documentContents: foreach my $aaa ( ) {} + selections: + - anchor: {line: 0, character: 18} + active: {line: 0, character: 18} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeCondition4.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeCondition4.yml new file mode 100644 index 0000000000..44b23a9990 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeCondition4.yml @@ -0,0 +1,22 @@ +languageId: perl +command: + version: 5 + spokenForm: change condition + action: {name: clearAndSetSelection} + targets: + - type: primitive + modifiers: + - type: containingScope + scopeType: {type: condition} + usePrePhraseSnapshot: true +initialState: + documentContents: count( $_ ) for ( @each ); + selections: + - anchor: {line: 0, character: 14} + active: {line: 0, character: 14} + marks: {} +finalState: + documentContents: count( $_ ) for ( ); + selections: + - anchor: {line: 0, character: 18} + active: {line: 0, character: 18} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeCondition5.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeCondition5.yml new file mode 100644 index 0000000000..680942ea42 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeCondition5.yml @@ -0,0 +1,22 @@ +languageId: perl +command: + version: 5 + spokenForm: change condition + action: {name: clearAndSetSelection} + targets: + - type: primitive + modifiers: + - type: containingScope + scopeType: {type: condition} + usePrePhraseSnapshot: true +initialState: + documentContents: count( $_ ) for ( 1 .. 10 ); + selections: + - anchor: {line: 0, character: 12} + active: {line: 0, character: 12} + marks: {} +finalState: + documentContents: count( $_ ) for ( ); + selections: + - anchor: {line: 0, character: 18} + active: {line: 0, character: 18} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeCondition6.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeCondition6.yml new file mode 100644 index 0000000000..1d8e50f2a8 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeCondition6.yml @@ -0,0 +1,22 @@ +languageId: perl +command: + version: 5 + spokenForm: change condition + action: {name: clearAndSetSelection} + targets: + - type: primitive + modifiers: + - type: containingScope + scopeType: {type: condition} + usePrePhraseSnapshot: true +initialState: + documentContents: for ( my $i = 0; $i < 10; $i += 1 ) {} + selections: + - anchor: {line: 0, character: 17} + active: {line: 0, character: 17} + marks: {} +finalState: + documentContents: for ( my $i = 0; ; $i += 1 ) {} + selections: + - anchor: {line: 0, character: 17} + active: {line: 0, character: 17} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeCondition7.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeCondition7.yml new file mode 100644 index 0000000000..6a5363f415 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeCondition7.yml @@ -0,0 +1,22 @@ +languageId: perl +command: + version: 5 + spokenForm: change condition + action: {name: clearAndSetSelection} + targets: + - type: primitive + modifiers: + - type: containingScope + scopeType: {type: condition} + usePrePhraseSnapshot: true +initialState: + documentContents: for ( my $i = 0; $i < 10; $i += 1 ) {} + selections: + - anchor: {line: 0, character: 0} + active: {line: 0, character: 0} + marks: {} +finalState: + documentContents: for ( my $i = 0; ; $i += 1 ) {} + selections: + - anchor: {line: 0, character: 17} + active: {line: 0, character: 17} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeCondition8.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeCondition8.yml new file mode 100644 index 0000000000..208e567017 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeCondition8.yml @@ -0,0 +1,22 @@ +languageId: perl +command: + version: 5 + spokenForm: change condition + action: {name: clearAndSetSelection} + targets: + - type: primitive + modifiers: + - type: containingScope + scopeType: {type: condition} + usePrePhraseSnapshot: true +initialState: + documentContents: if ( $foo > 1 ) {} + selections: + - anchor: {line: 0, character: 0} + active: {line: 0, character: 0} + marks: {} +finalState: + documentContents: if () {} + selections: + - anchor: {line: 0, character: 4} + active: {line: 0, character: 4} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeCondition9.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeCondition9.yml new file mode 100644 index 0000000000..0c4ce76cb0 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeCondition9.yml @@ -0,0 +1,22 @@ +languageId: perl +command: + version: 5 + spokenForm: change condition + action: {name: clearAndSetSelection} + targets: + - type: primitive + modifiers: + - type: containingScope + scopeType: {type: condition} + usePrePhraseSnapshot: true +initialState: + documentContents: unless ( $the_sky_is_falling ) {} + selections: + - anchor: {line: 0, character: 0} + active: {line: 0, character: 0} + marks: {} +finalState: + documentContents: unless () {} + selections: + - anchor: {line: 0, character: 8} + active: {line: 0, character: 8} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeEveryItem.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeEveryItem.yml new file mode 100644 index 0000000000..5535afb382 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeEveryItem.yml @@ -0,0 +1,26 @@ +languageId: perl +command: + version: 5 + spokenForm: change every item + action: {name: clearAndSetSelection} + targets: + - type: primitive + modifiers: + - type: everyScope + scopeType: {type: collectionItem} + usePrePhraseSnapshot: true +initialState: + documentContents: "@array = ( \"one\", 2, \"_tres\" )" + selections: + - anchor: {line: 0, character: 30} + active: {line: 0, character: 30} + marks: {} +finalState: + documentContents: "@array = ( , , )" + selections: + - anchor: {line: 0, character: 11} + active: {line: 0, character: 11} + - anchor: {line: 0, character: 13} + active: {line: 0, character: 13} + - anchor: {line: 0, character: 15} + active: {line: 0, character: 15} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeFunk.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeFunk.yml new file mode 100644 index 0000000000..c25a1d9363 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeFunk.yml @@ -0,0 +1,25 @@ +languageId: perl +command: + version: 4 + spokenForm: change funk + action: { name: clearAndSetSelection } + targets: + - type: primitive + modifiers: + - type: containingScope + scopeType: { type: namedFunction } + usePrePhraseSnapshot: true +initialState: + documentContents: |- + sub funky { + # ... + } + selections: + - anchor: { line: 1, character: 9 } + active: { line: 1, character: 9 } + marks: {} +finalState: + documentContents: "" + selections: + - anchor: { line: 0, character: 0 } + active: { line: 0, character: 0 } diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeFunk2.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeFunk2.yml new file mode 100644 index 0000000000..2fc0f0ebad --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeFunk2.yml @@ -0,0 +1,25 @@ +languageId: perl +command: + version: 4 + spokenForm: change funk + action: { name: clearAndSetSelection } + targets: + - type: primitive + modifiers: + - type: containingScope + scopeType: { type: namedFunction } + usePrePhraseSnapshot: true +initialState: + documentContents: |- + sub funky_with_prototype ($) { + # ... + } + selections: + - anchor: { line: 1, character: 8 } + active: { line: 1, character: 8 } + marks: {} +finalState: + documentContents: "" + selections: + - anchor: { line: 0, character: 0 } + active: { line: 0, character: 0 } diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeIfState.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeIfState.yml new file mode 100644 index 0000000000..6cf0dd2c58 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeIfState.yml @@ -0,0 +1,22 @@ +languageId: perl +command: + version: 4 + spokenForm: change if state + action: { name: clearAndSetSelection } + targets: + - type: primitive + modifiers: + - type: containingScope + scopeType: { type: ifStatement } + usePrePhraseSnapshot: true +initialState: + documentContents: if ( $this_is_a_test ) { } + selections: + - anchor: { line: 0, character: 24 } + active: { line: 0, character: 24 } + marks: {} +finalState: + documentContents: "" + selections: + - anchor: { line: 0, character: 0 } + active: { line: 0, character: 0 } diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeItem.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeItem.yml new file mode 100644 index 0000000000..cd1db2e350 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeItem.yml @@ -0,0 +1,30 @@ +languageId: perl +command: + version: 4 + spokenForm: change item + action: { name: clearAndSetSelection } + targets: + - type: primitive + modifiers: + - type: containingScope + scopeType: { type: collectionItem } + usePrePhraseSnapshot: true +initialState: + documentContents: |- + %hash = ( + one => 1, + two => 2, + ); + selections: + - anchor: { line: 1, character: 7 } + active: { line: 1, character: 7 } + marks: {} +finalState: + documentContents: |- + %hash = ( + , + two => 2, + ); + selections: + - anchor: {line: 1, character: 4} + active: {line: 1, character: 4} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeKey.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeKey.yml new file mode 100644 index 0000000000..6f7b6b9d48 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeKey.yml @@ -0,0 +1,30 @@ +languageId: perl +command: + version: 4 + spokenForm: change key + action: { name: clearAndSetSelection } + targets: + - type: primitive + modifiers: + - type: containingScope + scopeType: { type: collectionKey } + usePrePhraseSnapshot: true +initialState: + documentContents: |- + %hash = ( + one => 1, + two => 2, + ); + selections: + - anchor: { line: 1, character: 10 } + active: { line: 1, character: 10 } + marks: {} +finalState: + documentContents: |- + %hash = ( + => 1, + two => 2, + ); + selections: + - anchor: { line: 1, character: 4 } + active: { line: 1, character: 4 } diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeKey2.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeKey2.yml new file mode 100644 index 0000000000..d097898bb1 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeKey2.yml @@ -0,0 +1,30 @@ +languageId: perl +command: + version: 4 + spokenForm: change key + action: {name: clearAndSetSelection} + targets: + - type: primitive + modifiers: + - type: containingScope + scopeType: {type: collectionKey} + usePrePhraseSnapshot: true +initialState: + documentContents: |- + %hash = ( + one => 1, + two => 2, + ); + selections: + - anchor: {line: 2, character: 11} + active: {line: 2, character: 11} + marks: {} +finalState: + documentContents: |- + %hash = ( + one => 1, + => 2, + ); + selections: + - anchor: {line: 2, character: 4} + active: {line: 2, character: 4} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeKey3.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeKey3.yml new file mode 100644 index 0000000000..68f8d169b7 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeKey3.yml @@ -0,0 +1,30 @@ +languageId: perl +command: + version: 4 + spokenForm: change key + action: {name: clearAndSetSelection} + targets: + - type: primitive + modifiers: + - type: containingScope + scopeType: {type: collectionKey} + usePrePhraseSnapshot: true +initialState: + documentContents: |- + %hash = ( + one => 1, + two => 2, + ); + selections: + - anchor: {line: 2, character: 8} + active: {line: 2, character: 8} + marks: {} +finalState: + documentContents: |- + %hash = ( + one => 1, + => 2, + ); + selections: + - anchor: {line: 2, character: 4} + active: {line: 2, character: 4} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeKey4.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeKey4.yml new file mode 100644 index 0000000000..f6ea0528e7 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeKey4.yml @@ -0,0 +1,30 @@ +languageId: perl +command: + version: 4 + spokenForm: change key + action: {name: clearAndSetSelection} + targets: + - type: primitive + modifiers: + - type: containingScope + scopeType: {type: collectionKey} + usePrePhraseSnapshot: true +initialState: + documentContents: |- + %hash = ( + one => 1, + two => 2, + ); + selections: + - anchor: {line: 1, character: 5} + active: {line: 1, character: 5} + marks: {} +finalState: + documentContents: |- + %hash = ( + => 1, + two => 2, + ); + selections: + - anchor: {line: 1, character: 4} + active: {line: 1, character: 4} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeLambda.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeLambda.yml new file mode 100644 index 0000000000..23a0516012 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeLambda.yml @@ -0,0 +1,22 @@ +languageId: perl +command: + version: 4 + spokenForm: change lambda + action: { name: clearAndSetSelection } + targets: + - type: primitive + modifiers: + - type: containingScope + scopeType: { type: anonymousFunction } + usePrePhraseSnapshot: true +initialState: + documentContents: $func = sub { 1 }; + selections: + - anchor: { line: 0, character: 14 } + active: { line: 0, character: 14 } + marks: {} +finalState: + documentContents: $func = ; + selections: + - anchor: { line: 0, character: 8 } + active: { line: 0, character: 8 } diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeList.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeList.yml new file mode 100644 index 0000000000..512ed08ed4 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeList.yml @@ -0,0 +1,22 @@ +languageId: perl +command: + version: 4 + spokenForm: change list + action: { name: clearAndSetSelection } + targets: + - type: primitive + modifiers: + - type: containingScope + scopeType: { type: list } + usePrePhraseSnapshot: true +initialState: + documentContents: '@array = ( "one", 2, "_tres" )' + selections: + - anchor: { line: 0, character: 18 } + active: { line: 0, character: 18 } + marks: {} +finalState: + documentContents: "@array = " + selections: + - anchor: { line: 0, character: 9 } + active: { line: 0, character: 9 } diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeMap.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeMap.yml new file mode 100644 index 0000000000..627e987394 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeMap.yml @@ -0,0 +1,26 @@ +languageId: perl +command: + version: 4 + spokenForm: change map + action: { name: clearAndSetSelection } + targets: + - type: primitive + modifiers: + - type: containingScope + scopeType: { type: map } + usePrePhraseSnapshot: true +initialState: + documentContents: |- + %hash = ( + first => "1st", + second => "yup", + ) + selections: + - anchor: { line: 1, character: 0 } + active: { line: 1, character: 0 } + marks: {} +finalState: + documentContents: "%hash = " + selections: + - anchor: { line: 0, character: 8 } + active: { line: 0, character: 8 } diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeName.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeName.yml new file mode 100644 index 0000000000..cd609832b4 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeName.yml @@ -0,0 +1,22 @@ +languageId: perl +command: + version: 5 + spokenForm: change name + action: {name: clearAndSetSelection} + targets: + - type: primitive + modifiers: + - type: containingScope + scopeType: {type: name} + usePrePhraseSnapshot: true +initialState: + documentContents: "%foo = ( bar => \"baz\" );" + selections: + - anchor: {line: 0, character: 18} + active: {line: 0, character: 18} + marks: {} +finalState: + documentContents: "%foo = ( => \"baz\" );" + selections: + - anchor: {line: 0, character: 9} + active: {line: 0, character: 9} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeName2.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeName2.yml new file mode 100644 index 0000000000..f382cd26e5 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeName2.yml @@ -0,0 +1,22 @@ +languageId: perl +command: + version: 5 + spokenForm: change name + action: {name: clearAndSetSelection} + targets: + - type: primitive + modifiers: + - type: containingScope + scopeType: {type: name} + usePrePhraseSnapshot: true +initialState: + documentContents: sub foo {} + selections: + - anchor: {line: 0, character: 9} + active: {line: 0, character: 9} + marks: {} +finalState: + documentContents: sub {} + selections: + - anchor: {line: 0, character: 4} + active: {line: 0, character: 4} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeName3.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeName3.yml new file mode 100644 index 0000000000..853f86c769 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeName3.yml @@ -0,0 +1,22 @@ +languageId: perl +command: + version: 5 + spokenForm: change name + action: {name: clearAndSetSelection} + targets: + - type: primitive + modifiers: + - type: containingScope + scopeType: {type: name} + usePrePhraseSnapshot: true +initialState: + documentContents: sub foo {} + selections: + - anchor: {line: 0, character: 0} + active: {line: 0, character: 0} + marks: {} +finalState: + documentContents: sub {} + selections: + - anchor: {line: 0, character: 4} + active: {line: 0, character: 4} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeName4.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeName4.yml new file mode 100644 index 0000000000..8b656f5f54 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeName4.yml @@ -0,0 +1,22 @@ +languageId: perl +command: + version: 5 + spokenForm: change name + action: {name: clearAndSetSelection} + targets: + - type: primitive + modifiers: + - type: containingScope + scopeType: {type: name} + usePrePhraseSnapshot: true +initialState: + documentContents: foo( bar => "baz" ); + selections: + - anchor: {line: 0, character: 14} + active: {line: 0, character: 14} + marks: {} +finalState: + documentContents: foo( => "baz" ); + selections: + - anchor: {line: 0, character: 5} + active: {line: 0, character: 5} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeRegex.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeRegex.yml new file mode 100644 index 0000000000..7db125dd4d --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeRegex.yml @@ -0,0 +1,22 @@ +languageId: perl +command: + version: 4 + spokenForm: change regex + action: {name: clearAndSetSelection} + targets: + - type: primitive + modifiers: + - type: containingScope + scopeType: {type: regularExpression} + usePrePhraseSnapshot: true +initialState: + documentContents: $str =~ /bananabeast/ + selections: + - anchor: {line: 0, character: 15} + active: {line: 0, character: 15} + marks: {} +finalState: + documentContents: "$str =~ " + selections: + - anchor: {line: 0, character: 8} + active: {line: 0, character: 8} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeRegex2.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeRegex2.yml new file mode 100644 index 0000000000..119292d831 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeRegex2.yml @@ -0,0 +1,22 @@ +languageId: perl +command: + version: 4 + spokenForm: change regex + action: { name: clearAndSetSelection } + targets: + - type: primitive + modifiers: + - type: containingScope + scopeType: { type: regularExpression } + usePrePhraseSnapshot: true +initialState: + documentContents: $str =~ qr/qr match/ + selections: + - anchor: { line: 0, character: 13 } + active: { line: 0, character: 13 } + marks: {} +finalState: + documentContents: "$str =~ " + selections: + - anchor: { line: 0, character: 8 } + active: { line: 0, character: 8 } diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeRegex3.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeRegex3.yml new file mode 100644 index 0000000000..933266c7f8 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeRegex3.yml @@ -0,0 +1,66 @@ +languageId: perl +command: + version: 4 + spokenForm: change regex + action: {name: clearAndSetSelection} + targets: + - type: primitive + modifiers: + - type: containingScope + scopeType: {type: regularExpression} + usePrePhraseSnapshot: true +initialState: + documentContents: |- + $ccc =~ s{cccc}{dddd}; + $aaa =~ s/aaaa/bbbb/ms; + $ddd =~ qr/foooooooo/x; + $ddd =~ qr/foooooool/; + $eee =~ /foobarbeast/; + $fff =~ m/fuballbob/i; + $ggg =~ /foobarbeast/msx; + $hhh =~ m!/some/path/!; + selections: + - anchor: {line: 0, character: 12} + active: {line: 0, character: 12} + - anchor: {line: 1, character: 13} + active: {line: 1, character: 13} + - anchor: {line: 2, character: 13} + active: {line: 2, character: 13} + - anchor: {line: 3, character: 13} + active: {line: 3, character: 13} + - anchor: {line: 4, character: 12} + active: {line: 4, character: 12} + - anchor: {line: 5, character: 13} + active: {line: 5, character: 13} + - anchor: {line: 6, character: 12} + active: {line: 6, character: 12} + - anchor: {line: 7, character: 12} + active: {line: 7, character: 12} + marks: {} +finalState: + documentContents: |- + $ccc =~ ; + $aaa =~ ; + $ddd =~ ; + $ddd =~ ; + $eee =~ ; + $fff =~ ; + $ggg =~ ; + $hhh =~ ; + selections: + - anchor: {line: 0, character: 8} + active: {line: 0, character: 8} + - anchor: {line: 1, character: 8} + active: {line: 1, character: 8} + - anchor: {line: 2, character: 8} + active: {line: 2, character: 8} + - anchor: {line: 3, character: 8} + active: {line: 3, character: 8} + - anchor: {line: 4, character: 8} + active: {line: 4, character: 8} + - anchor: {line: 5, character: 8} + active: {line: 5, character: 8} + - anchor: {line: 6, character: 8} + active: {line: 6, character: 8} + - anchor: {line: 7, character: 8} + active: {line: 7, character: 8} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeRegex4.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeRegex4.yml new file mode 100644 index 0000000000..47ad4f17b7 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeRegex4.yml @@ -0,0 +1,66 @@ +languageId: perl +command: + version: 4 + spokenForm: change regex + action: {name: clearAndSetSelection} + targets: + - type: primitive + modifiers: + - type: containingScope + scopeType: {type: regularExpression} + usePrePhraseSnapshot: true +initialState: + documentContents: |- + $ccc =~ s{cccc}{dddd}; + $aaa =~ s/aaaa/bbbb/ms; + $ddd =~ qr/foooooooo/x; + $ddd =~ qr/foooooool/; + $eee =~ /foobarbeast/; + $fff =~ m/fuballbob/i; + $ggg =~ /foobarbeast/msx; + $hhh =~ m!/some/path/!; + selections: + - anchor: {line: 0, character: 17} + active: {line: 0, character: 17} + - anchor: {line: 1, character: 18} + active: {line: 1, character: 18} + - anchor: {line: 2, character: 18} + active: {line: 2, character: 18} + - anchor: {line: 3, character: 18} + active: {line: 3, character: 18} + - anchor: {line: 4, character: 17} + active: {line: 4, character: 17} + - anchor: {line: 5, character: 18} + active: {line: 5, character: 18} + - anchor: {line: 6, character: 17} + active: {line: 6, character: 17} + - anchor: {line: 7, character: 17} + active: {line: 7, character: 17} + marks: {} +finalState: + documentContents: |- + $ccc =~ ; + $aaa =~ ; + $ddd =~ ; + $ddd =~ ; + $eee =~ ; + $fff =~ ; + $ggg =~ ; + $hhh =~ ; + selections: + - anchor: {line: 0, character: 8} + active: {line: 0, character: 8} + - anchor: {line: 1, character: 8} + active: {line: 1, character: 8} + - anchor: {line: 2, character: 8} + active: {line: 2, character: 8} + - anchor: {line: 3, character: 8} + active: {line: 3, character: 8} + - anchor: {line: 4, character: 8} + active: {line: 4, character: 8} + - anchor: {line: 5, character: 8} + active: {line: 5, character: 8} + - anchor: {line: 6, character: 8} + active: {line: 6, character: 8} + - anchor: {line: 7, character: 8} + active: {line: 7, character: 8} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeString.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeString.yml new file mode 100644 index 0000000000..6a5cb274c8 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeString.yml @@ -0,0 +1,28 @@ +languageId: perl +command: + version: 4 + spokenForm: change string + action: { name: clearAndSetSelection } + targets: + - type: primitive + modifiers: + - type: containingScope + scopeType: { type: surroundingPair, delimiter: string } + usePrePhraseSnapshot: true +initialState: + documentContents: |- + @strings = ( + 'single', + ); + selections: + - anchor: { line: 1, character: 4 } + active: { line: 1, character: 4 } + marks: {} +finalState: + documentContents: |- + @strings = ( + , + ); + selections: + - anchor: { line: 1, character: 4 } + active: { line: 1, character: 4 } diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeString2.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeString2.yml new file mode 100644 index 0000000000..c5f72e166c --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeString2.yml @@ -0,0 +1,28 @@ +languageId: perl +command: + version: 4 + spokenForm: change string + action: { name: clearAndSetSelection } + targets: + - type: primitive + modifiers: + - type: containingScope + scopeType: { type: surroundingPair, delimiter: string } + usePrePhraseSnapshot: true +initialState: + documentContents: |- + @strings = ( + "double $some_var", + ); + selections: + - anchor: { line: 1, character: 4 } + active: { line: 1, character: 4 } + marks: {} +finalState: + documentContents: |- + @strings = ( + , + ); + selections: + - anchor: { line: 1, character: 4 } + active: { line: 1, character: 4 } diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeThirdItem.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeThirdItem.yml new file mode 100644 index 0000000000..1ca0ed112a --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeThirdItem.yml @@ -0,0 +1,24 @@ +languageId: perl +command: + version: 5 + spokenForm: change third item + action: {name: clearAndSetSelection} + targets: + - type: primitive + modifiers: + - type: ordinalScope + scopeType: {type: collectionItem} + start: 2 + length: 1 + usePrePhraseSnapshot: true +initialState: + documentContents: "@array = ( \"one\", 2, \"_tres\" )" + selections: + - anchor: {line: 0, character: 30} + active: {line: 0, character: 30} + marks: {} +finalState: + documentContents: "@array = ( \"one\", 2, )" + selections: + - anchor: {line: 0, character: 21} + active: {line: 0, character: 21} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeValue.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeValue.yml new file mode 100644 index 0000000000..7075a4ead5 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeValue.yml @@ -0,0 +1,24 @@ +languageId: perl +command: + version: 5 + spokenForm: change value + action: {name: clearAndSetSelection} + targets: + - type: primitive + modifiers: + - type: containingScope + scopeType: {type: value} + usePrePhraseSnapshot: true +initialState: + documentContents: | + %foo = ( bar => "baz" ); + selections: + - anchor: {line: 0, character: 16} + active: {line: 0, character: 21} + marks: {} +finalState: + documentContents: | + %foo = ( bar => ); + selections: + - anchor: {line: 0, character: 16} + active: {line: 0, character: 16} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeValue2.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeValue2.yml new file mode 100644 index 0000000000..5bcce09d56 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/changeValue2.yml @@ -0,0 +1,24 @@ +languageId: perl +command: + version: 5 + spokenForm: change value + action: {name: clearAndSetSelection} + targets: + - type: primitive + modifiers: + - type: containingScope + scopeType: {type: value} + usePrePhraseSnapshot: true +initialState: + documentContents: | + %foo = ( bar => "baz" ); + selections: + - anchor: {line: 0, character: 9} + active: {line: 0, character: 9} + marks: {} +finalState: + documentContents: | + %foo = ( bar => ); + selections: + - anchor: {line: 0, character: 16} + active: {line: 0, character: 16} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/chuckArg.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/chuckArg.yml new file mode 100644 index 0000000000..2937807739 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/chuckArg.yml @@ -0,0 +1,22 @@ +languageId: perl +command: + version: 5 + spokenForm: chuck arg + action: {name: remove} + targets: + - type: primitive + modifiers: + - type: containingScope + scopeType: {type: argumentOrParameter} + usePrePhraseSnapshot: true +initialState: + documentContents: some_funky_func( "three", "args" ) + selections: + - anchor: {line: 0, character: 17} + active: {line: 0, character: 17} + marks: {} +finalState: + documentContents: some_funky_func( "args" ) + selections: + - anchor: {line: 0, character: 17} + active: {line: 0, character: 17} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/chuckEveryArg.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/chuckEveryArg.yml new file mode 100644 index 0000000000..6747c7926d --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/chuckEveryArg.yml @@ -0,0 +1,26 @@ +languageId: perl +command: + version: 5 + spokenForm: chuck every arg + action: {name: remove} + targets: + - type: primitive + modifiers: + - type: everyScope + scopeType: {type: argumentOrParameter} + usePrePhraseSnapshot: true +initialState: + documentContents: "some_funky_func( \"and\", \"three\", \"args\" );\r\nsome_other_func( $and, $three, $args );\r\n" + selections: + - anchor: {line: 0, character: 17} + active: {line: 0, character: 17} + - anchor: {line: 1, character: 17} + active: {line: 1, character: 17} + marks: {} +finalState: + documentContents: "some_funky_func( );\r\nsome_other_func( );\r\n" + selections: + - anchor: {line: 0, character: 17} + active: {line: 0, character: 17} + - anchor: {line: 1, character: 17} + active: {line: 1, character: 17} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/chuckFirstItem.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/chuckFirstItem.yml new file mode 100644 index 0000000000..e8e28e115f --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/chuckFirstItem.yml @@ -0,0 +1,24 @@ +languageId: perl +command: + version: 5 + spokenForm: chuck first item + action: {name: remove} + targets: + - type: primitive + modifiers: + - type: ordinalScope + scopeType: {type: collectionItem} + start: 0 + length: 1 + usePrePhraseSnapshot: true +initialState: + documentContents: "@array = ( \"one\", 2, \"_tres\" )" + selections: + - anchor: {line: 0, character: 30} + active: {line: 0, character: 30} + marks: {} +finalState: + documentContents: "@array = ( 2, \"_tres\" )" + selections: + - anchor: {line: 0, character: 23} + active: {line: 0, character: 23} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/chuckItem.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/chuckItem.yml new file mode 100644 index 0000000000..37f1c0be51 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/chuckItem.yml @@ -0,0 +1,29 @@ +languageId: perl +command: + version: 4 + spokenForm: chuck item + action: {name: remove} + targets: + - type: primitive + modifiers: + - type: containingScope + scopeType: {type: collectionItem} + usePrePhraseSnapshot: true +initialState: + documentContents: |- + %hash = ( + one => 1, + two => 2, + ); + selections: + - anchor: {line: 1, character: 8} + active: {line: 1, character: 8} + marks: {} +finalState: + documentContents: |- + %hash = ( + two => 2, + ); + selections: + - anchor: {line: 1, character: 4} + active: {line: 1, character: 4} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/chuckRound.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/chuckRound.yml new file mode 100644 index 0000000000..c6c08d2ea1 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/chuckRound.yml @@ -0,0 +1,30 @@ +languageId: perl +command: + version: 4 + spokenForm: chuck round + action: {name: remove} + targets: + - type: primitive + modifiers: + - type: containingScope + scopeType: {type: surroundingPair, delimiter: parentheses} + usePrePhraseSnapshot: true +initialState: + documentContents: |- + "aaa (bbb) ccc" + 'aaa (bbb) ccc' + selections: + - anchor: {line: 0, character: 7} + active: {line: 0, character: 7} + - anchor: {line: 1, character: 7} + active: {line: 1, character: 7} + marks: {} +finalState: + documentContents: |- + "aaa ccc" + 'aaa ccc' + selections: + - anchor: {line: 0, character: 5} + active: {line: 0, character: 5} + - anchor: {line: 1, character: 5} + active: {line: 1, character: 5} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/chuckSecondArg.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/chuckSecondArg.yml new file mode 100644 index 0000000000..3935ce9a42 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/chuckSecondArg.yml @@ -0,0 +1,24 @@ +languageId: perl +command: + version: 5 + spokenForm: chuck second arg + action: {name: remove} + targets: + - type: primitive + modifiers: + - type: ordinalScope + scopeType: {type: argumentOrParameter} + start: 1 + length: 1 + usePrePhraseSnapshot: true +initialState: + documentContents: some_funky_func( "and", "three", "args" ) + selections: + - anchor: {line: 0, character: 17} + active: {line: 0, character: 17} + marks: {} +finalState: + documentContents: some_funky_func( "and", "args" ) + selections: + - anchor: {line: 0, character: 17} + active: {line: 0, character: 17} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/chuckThirdArg.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/chuckThirdArg.yml new file mode 100644 index 0000000000..c5581b90bf --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/chuckThirdArg.yml @@ -0,0 +1,24 @@ +languageId: perl +command: + version: 5 + spokenForm: chuck third arg + action: {name: remove} + targets: + - type: primitive + modifiers: + - type: ordinalScope + scopeType: {type: argumentOrParameter} + start: 2 + length: 1 + usePrePhraseSnapshot: true +initialState: + documentContents: some_funky_func( "and", "three", "args" ) + selections: + - anchor: {line: 0, character: 17} + active: {line: 0, character: 17} + marks: {} +finalState: + documentContents: some_funky_func( "and", "three" ) + selections: + - anchor: {line: 0, character: 17} + active: {line: 0, character: 17} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/chuckThirdItem.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/chuckThirdItem.yml new file mode 100644 index 0000000000..f9c57cb575 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/chuckThirdItem.yml @@ -0,0 +1,24 @@ +languageId: perl +command: + version: 5 + spokenForm: chuck third item + action: {name: remove} + targets: + - type: primitive + modifiers: + - type: ordinalScope + scopeType: {type: collectionItem} + start: 2 + length: 1 + usePrePhraseSnapshot: true +initialState: + documentContents: "@array = ( \"one\", 2, \"_tres\" )" + selections: + - anchor: {line: 0, character: 30} + active: {line: 0, character: 30} + marks: {} +finalState: + documentContents: "@array = ( \"one\", 2 )" + selections: + - anchor: {line: 0, character: 21} + active: {line: 0, character: 21} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/takeClass.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/takeClass.yml new file mode 100644 index 0000000000..e7f7d8581a --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/takeClass.yml @@ -0,0 +1,44 @@ +languageId: perl +command: + version: 5 + spokenForm: take class + action: {name: setSelection} + targets: + - type: primitive + modifiers: + - type: containingScope + scopeType: {type: class} + usePrePhraseSnapshot: true +initialState: + documentContents: |- + package Foo::Bar::Banana; + + # A sort of + # comment + $foo = 1; + + package Hello::World { + 1; + } + + 1; + selections: + - anchor: {line: 0, character: 3} + active: {line: 0, character: 3} + marks: {} +finalState: + documentContents: |- + package Foo::Bar::Banana; + + # A sort of + # comment + $foo = 1; + + package Hello::World { + 1; + } + + 1; + selections: + - anchor: {line: 0, character: 0} + active: {line: 10, character: 2} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/takeClass2.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/takeClass2.yml new file mode 100644 index 0000000000..95620c5fed --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/takeClass2.yml @@ -0,0 +1,44 @@ +languageId: perl +command: + version: 5 + spokenForm: take class + action: {name: setSelection} + targets: + - type: primitive + modifiers: + - type: containingScope + scopeType: {type: class} + usePrePhraseSnapshot: true +initialState: + documentContents: |- + package Foo::Bar::Banana; + + # A sort of + # comment + $foo = 1; + + package Hello::World { + 1; + } + + 1; + selections: + - anchor: {line: 0, character: 17} + active: {line: 0, character: 17} + marks: {} +finalState: + documentContents: |- + package Foo::Bar::Banana; + + # A sort of + # comment + $foo = 1; + + package Hello::World { + 1; + } + + 1; + selections: + - anchor: {line: 0, character: 0} + active: {line: 10, character: 2} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/takeClass3.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/takeClass3.yml new file mode 100644 index 0000000000..f7ffb36154 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/takeClass3.yml @@ -0,0 +1,44 @@ +languageId: perl +command: + version: 5 + spokenForm: take class + action: {name: setSelection} + targets: + - type: primitive + modifiers: + - type: containingScope + scopeType: {type: class} + usePrePhraseSnapshot: true +initialState: + documentContents: |- + package Foo::Bar::Banana; + + # A sort of + # comment + $foo = 1; + + package Hello::World { + 1; + } + + 1; + selections: + - anchor: {line: 2, character: 6} + active: {line: 2, character: 6} + marks: {} +finalState: + documentContents: |- + package Foo::Bar::Banana; + + # A sort of + # comment + $foo = 1; + + package Hello::World { + 1; + } + + 1; + selections: + - anchor: {line: 0, character: 0} + active: {line: 10, character: 2} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/takeClass4.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/takeClass4.yml new file mode 100644 index 0000000000..0bc321c49b --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/takeClass4.yml @@ -0,0 +1,44 @@ +languageId: perl +command: + version: 5 + spokenForm: take class + action: {name: setSelection} + targets: + - type: primitive + modifiers: + - type: containingScope + scopeType: {type: class} + usePrePhraseSnapshot: true +initialState: + documentContents: |- + package Foo::Bar::Banana; + + # A sort of + # comment + $foo = 1; + + package Hello::World { + 1; + } + + 1; + selections: + - anchor: {line: 6, character: 21} + active: {line: 6, character: 21} + marks: {} +finalState: + documentContents: |- + package Foo::Bar::Banana; + + # A sort of + # comment + $foo = 1; + + package Hello::World { + 1; + } + + 1; + selections: + - anchor: {line: 6, character: 0} + active: {line: 8, character: 1} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/takeClass5.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/takeClass5.yml new file mode 100644 index 0000000000..2dd0efe7e2 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/takeClass5.yml @@ -0,0 +1,44 @@ +languageId: perl +command: + version: 5 + spokenForm: take class + action: {name: setSelection} + targets: + - type: primitive + modifiers: + - type: containingScope + scopeType: {type: class} + usePrePhraseSnapshot: true +initialState: + documentContents: |- + package Foo::Bar::Banana; + + # A sort of + # comment + $foo = 1; + + package Hello::World { + 1; + } + + 1; + selections: + - anchor: {line: 10, character: 0} + active: {line: 10, character: 0} + marks: {} +finalState: + documentContents: |- + package Foo::Bar::Banana; + + # A sort of + # comment + $foo = 1; + + package Hello::World { + 1; + } + + 1; + selections: + - anchor: {line: 0, character: 0} + active: {line: 10, character: 2} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/takeClass6.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/takeClass6.yml new file mode 100644 index 0000000000..04cba31f0a --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/takeClass6.yml @@ -0,0 +1,44 @@ +languageId: perl +command: + version: 5 + spokenForm: take class + action: {name: setSelection} + targets: + - type: primitive + modifiers: + - type: containingScope + scopeType: {type: class} + usePrePhraseSnapshot: true +initialState: + documentContents: |- + package Foo::Bar::Banana; + + # A sort of + # comment + $foo = 1; + + package Hello::World { + 1; + } + + 1; + selections: + - anchor: {line: 6, character: 4} + active: {line: 6, character: 4} + marks: {} +finalState: + documentContents: |- + package Foo::Bar::Banana; + + # A sort of + # comment + $foo = 1; + + package Hello::World { + 1; + } + + 1; + selections: + - anchor: {line: 6, character: 0} + active: {line: 8, character: 1} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/takeClass7.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/takeClass7.yml new file mode 100644 index 0000000000..18df65a5e2 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/takeClass7.yml @@ -0,0 +1,44 @@ +languageId: perl +command: + version: 5 + spokenForm: take class + action: {name: setSelection} + targets: + - type: primitive + modifiers: + - type: containingScope + scopeType: {type: class} + usePrePhraseSnapshot: true +initialState: + documentContents: |- + package Foo::Bar::Banana; + + # A sort of + # comment + $foo = 1; + + package Hello::World { + 1; + } + + 1; + selections: + - anchor: {line: 6, character: 13} + active: {line: 6, character: 13} + marks: {} +finalState: + documentContents: |- + package Foo::Bar::Banana; + + # A sort of + # comment + $foo = 1; + + package Hello::World { + 1; + } + + 1; + selections: + - anchor: {line: 6, character: 0} + active: {line: 8, character: 1} diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/takeClass8.yml b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/takeClass8.yml new file mode 100644 index 0000000000..5866db1546 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/recorded/languages/perl/takeClass8.yml @@ -0,0 +1,34 @@ +languageId: perl +command: + version: 5 + spokenForm: take class + action: {name: setSelection} + targets: + - type: primitive + modifiers: + - type: containingScope + scopeType: {type: class} + usePrePhraseSnapshot: true +initialState: + documentContents: |- + use Modern::Perl; + use Getopt::Long; + + my $aaa = "bbb"; + + exit; + selections: + - anchor: {line: 4, character: 0} + active: {line: 4, character: 0} + marks: {} +finalState: + documentContents: |- + use Modern::Perl; + use Getopt::Long; + + my $aaa = "bbb"; + + exit; + selections: + - anchor: {line: 0, character: 0} + active: {line: 5, character: 5}