From 44967396f63fd779addffccfdf24bf973bb7cd65 Mon Sep 17 00:00:00 2001 From: Andreas Arvidsson Date: Thu, 7 Dec 2023 08:15:38 +0100 Subject: [PATCH] branch --- .../src/scopeSupportFacets/javascript.ts | 19 +++- .../scopeSupportFacetInfos.ts | 58 +++++++--- .../scopeSupportFacets.types.ts | 22 ++-- .../scopes/javascript/branch.if.scope | 103 ++++++++++++++++++ .../scopes/javascript/branch.switchCase.scope | 31 ++++++ .../scopes/javascript/branch.try.scope | 84 ++++++++++++++ ...witch.scope => condition.switchCase.scope} | 0 .../scopes/javascript/string.multiLine.scope | 13 +++ .../scopes/javascript/string.singleLine.scope | 10 ++ 9 files changed, 307 insertions(+), 33 deletions(-) create mode 100644 packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/branch.if.scope create mode 100644 packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/branch.switchCase.scope create mode 100644 packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/branch.try.scope rename packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/{condition.switch.scope => condition.switchCase.scope} (100%) create mode 100644 packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/string.multiLine.scope create mode 100644 packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/string.singleLine.scope diff --git a/packages/common/src/scopeSupportFacets/javascript.ts b/packages/common/src/scopeSupportFacets/javascript.ts index b241d094e3..96e27ec031 100644 --- a/packages/common/src/scopeSupportFacets/javascript.ts +++ b/packages/common/src/scopeSupportFacets/javascript.ts @@ -13,11 +13,6 @@ export const javascriptScopeSupport: LanguageScopeSupportFacetMap = { ifStatement: supported, - functionCall: supported, - "functionCall.constructor": supported, - functionCallee: supported, - "functionCallee.constructor": supported, - class: supported, className: supported, @@ -27,15 +22,27 @@ export const javascriptScopeSupport: LanguageScopeSupportFacetMap = { "anonymousFunction.lambda": supported, functionName: supported, + functionCall: supported, + "functionCall.constructor": supported, + functionCallee: supported, + "functionCallee.constructor": supported, + "comment.line": supported, "comment.block": supported, + "string.singleLine": supported, + "string.multiLine": supported, + + "branch.if": supported, + "branch.try": supported, + "branch.switchCase": supported, + "condition.if": supported, "condition.while": supported, "condition.doWhile": supported, "condition.for": supported, "condition.ternary": supported, - "condition.switch": supported, + "condition.switchCase": supported, "name.foreach": supported, "name.assignment": supported, diff --git a/packages/common/src/scopeSupportFacets/scopeSupportFacetInfos.ts b/packages/common/src/scopeSupportFacets/scopeSupportFacetInfos.ts index 25a55f3702..648ef97852 100644 --- a/packages/common/src/scopeSupportFacets/scopeSupportFacetInfos.ts +++ b/packages/common/src/scopeSupportFacets/scopeSupportFacetInfos.ts @@ -36,23 +36,6 @@ export const scopeSupportFacetInfos: Record< scopeType: "ifStatement", }, - functionCall: { - description: "A function call", - scopeType: "functionCall", - }, - "functionCall.constructor": { - description: "A constructor call", - scopeType: "functionCall", - }, - functionCallee: { - description: "The callee of a function call", - scopeType: "functionCallee", - }, - "functionCallee.constructor": { - description: "The callee of a constructor call", - scopeType: "functionCallee", - }, - class: { description: "A class", scopeType: "class", @@ -83,6 +66,23 @@ export const scopeSupportFacetInfos: Record< scopeType: "functionName", }, + functionCall: { + description: "A function call", + scopeType: "functionCall", + }, + "functionCall.constructor": { + description: "A constructor call", + scopeType: "functionCall", + }, + functionCallee: { + description: "The callee of a function call", + scopeType: "functionCallee", + }, + "functionCallee.constructor": { + description: "The callee of a constructor call", + scopeType: "functionCallee", + }, + "comment.line": { description: "A line comment", scopeType: "comment", @@ -92,6 +92,28 @@ export const scopeSupportFacetInfos: Record< scopeType: "comment", }, + "string.singleLine": { + description: "A single line string", + scopeType: "string", + }, + "string.multiLine": { + description: "A multi line string", + scopeType: "string", + }, + + "branch.if": { + description: "An if/elif/else branch", + scopeType: "branch", + }, + "branch.try": { + description: "A try/catch/finally branch", + scopeType: "branch", + }, + "branch.switchCase": { + description: "A switch/case/default branch", + scopeType: "branch", + }, + "condition.if": { description: "A condition in an if statement", scopeType: "condition", @@ -112,7 +134,7 @@ export const scopeSupportFacetInfos: Record< description: "A condition in a ternary expression", scopeType: "condition", }, - "condition.switch": { + "condition.switchCase": { description: "A condition in a switch statement", scopeType: "condition", }, diff --git a/packages/common/src/scopeSupportFacets/scopeSupportFacets.types.ts b/packages/common/src/scopeSupportFacets/scopeSupportFacets.types.ts index 9bba857003..da3e3b5eb2 100644 --- a/packages/common/src/scopeSupportFacets/scopeSupportFacets.types.ts +++ b/packages/common/src/scopeSupportFacets/scopeSupportFacets.types.ts @@ -10,11 +10,6 @@ const scopeSupportFacets = [ "ifStatement", - "functionCall", - "functionCall.constructor", - "functionCallee", - "functionCallee.constructor", - "class", "className", "namedFunction", @@ -23,15 +18,27 @@ const scopeSupportFacets = [ "anonymousFunction.lambda", "functionName", + "functionCall", + "functionCall.constructor", + "functionCallee", + "functionCallee.constructor", + "comment.line", "comment.block", + "string.singleLine", + "string.multiLine", + + "branch.if", + "branch.try", + "branch.switchCase", + "condition.if", "condition.while", "condition.doWhile", "condition.for", "condition.ternary", - "condition.switch", + "condition.switchCase", "name.assignment", "name.foreach", @@ -52,9 +59,6 @@ const scopeSupportFacets = [ // "statement", - // "branch", - // "string.singleLine", - // "string.multiLine", // "textFragment", // "argumentOrParameter.argument", // "argumentOrParameter.parameter", diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/branch.if.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/branch.if.scope new file mode 100644 index 0000000000..dcfa942f2c --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/branch.if.scope @@ -0,0 +1,103 @@ +if (true) { + +} +else if (false) { + +} +else { + +} +--- + +[#1 Content] = +[#1 Domain] = 0:0-2:1 +0| if (true) { + >----------- +1| + +2| } + -< +3| else if (false) { + +4| + +5| } + +6| else { + +7| + +8| } + + +[#1 Removal] = 0:0-3:5 +0| if (true) { + >----------- +1| + +2| } + - +3| else if (false) { + -----< +4| + +5| } + +6| else { + +7| + +8| } + + +[#1 Insertion delimiter] = "\n" + + +[#2 Content] = +[#2 Removal] = +[#2 Domain] = 3:0-5:1 +0| if (true) { + +1| + +2| } + +3| else if (false) { + >----------------- +4| + +5| } + -< +6| else { + +7| + +8| } + + +[#2 Insertion delimiter] = "\n" + + +[#3 Content] = +[#3 Removal] = +[#3 Domain] = 6:0-8:1 +0| if (true) { + +1| + +2| } + +3| else if (false) { + +4| + +5| } + +6| else { + >------ +7| + +8| } + -< + +[#3 Insertion delimiter] = "\n" diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/branch.switchCase.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/branch.switchCase.scope new file mode 100644 index 0000000000..76e8c4831b --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/branch.switchCase.scope @@ -0,0 +1,31 @@ +switch (value) { + case 0: { } +} +--- + +[Content] = +[Domain] = 1:2-1:13 +0| switch (value) { + +1| case 0: { } + >-----------< +2| } + + +[Removal] = 1:0-1:13 +0| switch (value) { + +1| case 0: { } + >-------------< +2| } + + +[Leading delimiter] = 1:0-1:2 +0| switch (value) { + +1| case 0: { } + >--< +2| } + + +[Insertion delimiter] = "\n" diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/branch.try.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/branch.try.scope new file mode 100644 index 0000000000..e42c7f19df --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/branch.try.scope @@ -0,0 +1,84 @@ +try { + +} +catch(error) { + +} +finally { + +} +--- + +[#1 Content] = +[#1 Removal] = +[#1 Domain] = 0:0-2:1 +0| try { + >----- +1| + +2| } + -< +3| catch(error) { + +4| + +5| } + +6| finally { + +7| + +8| } + + +[#1 Insertion delimiter] = "\n" + + +[#2 Content] = +[#2 Removal] = +[#2 Domain] = 3:0-5:1 +0| try { + +1| + +2| } + +3| catch(error) { + >-------------- +4| + +5| } + -< +6| finally { + +7| + +8| } + + +[#2 Insertion delimiter] = "\n" + + +[#3 Content] = +[#3 Removal] = +[#3 Domain] = 6:0-8:1 +0| try { + +1| + +2| } + +3| catch(error) { + +4| + +5| } + +6| finally { + >--------- +7| + +8| } + -< + +[#3 Insertion delimiter] = "\n" diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/condition.switch.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/condition.switchCase.scope similarity index 100% rename from packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/condition.switch.scope rename to packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/condition.switchCase.scope diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/string.multiLine.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/string.multiLine.scope new file mode 100644 index 0000000000..1720e525c9 --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/string.multiLine.scope @@ -0,0 +1,13 @@ +`Hello +world` +--- + +[Content] = +[Removal] = +[Domain] = 0:0-1:6 +0| `Hello + >------ +1| world` + ------< + +[Insertion delimiter] = " " diff --git a/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/string.singleLine.scope b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/string.singleLine.scope new file mode 100644 index 0000000000..fdfeaf485b --- /dev/null +++ b/packages/cursorless-vscode-e2e/src/suite/fixtures/scopes/javascript/string.singleLine.scope @@ -0,0 +1,10 @@ +"Hello world" +--- + +[Content] = +[Removal] = +[Domain] = 0:0-0:13 +0| "Hello world" + >-------------< + +[Insertion delimiter] = " "