diff --git a/packages/app-web-docs/src/docs/contributing/private-scopes/interior.mdx b/packages/app-web-docs/src/docs/contributing/private-scopes/interior.mdx index ce262114b0..7cdec957f1 100644 --- a/packages/app-web-docs/src/docs/contributing/private-scopes/interior.mdx +++ b/packages/app-web-docs/src/docs/contributing/private-scopes/interior.mdx @@ -670,7 +670,7 @@ The following are internal scopes. They are not intended for user interaction or ### Interior: Resource -the body of a 'with' / 'use' / 'using' statement +the body of a `with` / `use` / `using` statement ##### C# diff --git a/packages/app-web-docs/src/docs/user/languages/csharp.mdx b/packages/app-web-docs/src/docs/user/languages/csharp.mdx index e431731694..1f05e42ac3 100644 --- a/packages/app-web-docs/src/docs/user/languages/csharp.mdx +++ b/packages/app-web-docs/src/docs/user/languages/csharp.mdx @@ -692,7 +692,7 @@ Below are visualizations of all our scope tests for this language. These were cr #### 22. Name: Resource -Name in a 'with' / 'use' / 'using' statement +Name in a `with` / `use` / `using` statement @@ -944,7 +944,7 @@ Below are visualizations of all our scope tests for this language. These were cr #### 22. Statement: Resource -A 'with' / 'use' / 'using' statement +A `with` / `use` / `using` statement @@ -1130,7 +1130,7 @@ Below are visualizations of all our scope tests for this language. These were cr #### 15. Type: Resource -Type in a 'with' / 'use' / 'using' statement +Type in a `with` / `use` / `using` statement @@ -1308,7 +1308,7 @@ Below are visualizations of all our scope tests for this language. These were cr #### 14. Value: Resource -Value of a 'with' / 'use' / 'using' statement +Value of a `with` / `use` / `using` statement @@ -1510,7 +1510,7 @@ The following are internal scopes. They are not intended for user interaction or #### 13. Interior: Resource -the body of a 'with' / 'use' / 'using' statement +the body of a `with` / `use` / `using` statement diff --git a/packages/app-web-docs/src/docs/user/languages/java.mdx b/packages/app-web-docs/src/docs/user/languages/java.mdx index 9f0da56c04..93aa5f954d 100644 --- a/packages/app-web-docs/src/docs/user/languages/java.mdx +++ b/packages/app-web-docs/src/docs/user/languages/java.mdx @@ -670,7 +670,7 @@ Below are visualizations of all our scope tests for this language. These were cr #### 18. Name: Resource -Name in a 'with' / 'use' / 'using' statement +Name in a `with` / `use` / `using` statement @@ -902,7 +902,7 @@ Below are visualizations of all our scope tests for this language. These were cr #### 22. Statement: Resource -A 'with' / 'use' / 'using' statement +A `with` / `use` / `using` statement @@ -1076,7 +1076,7 @@ Below are visualizations of all our scope tests for this language. These were cr #### 13. Type: Resource -Type in a 'with' / 'use' / 'using' statement +Type in a `with` / `use` / `using` statement @@ -1202,7 +1202,7 @@ Below are visualizations of all our scope tests for this language. These were cr #### 7. Value: Resource -Value of a 'with' / 'use' / 'using' statement +Value of a `with` / `use` / `using` statement @@ -1344,7 +1344,7 @@ The following are internal scopes. They are not intended for user interaction or #### 11. Interior: Resource -the body of a 'with' / 'use' / 'using' statement +the body of a `with` / `use` / `using` statement diff --git a/packages/app-web-docs/src/docs/user/languages/plaintext.mdx b/packages/app-web-docs/src/docs/user/languages/plaintext.mdx index 81237a3b94..eca622046f 100644 --- a/packages/app-web-docs/src/docs/user/languages/plaintext.mdx +++ b/packages/app-web-docs/src/docs/user/languages/plaintext.mdx @@ -132,6 +132,20 @@ Below are visualizations of all our scope tests for this language. These were cr +### Glyph + +#### 1. Glyph: A + +A single `a` glyph + + + +#### 2. Glyph: Dollar + +A single `$` glyph + + + ### Identifier #### 1. Identifier diff --git a/packages/app-web-docs/src/docs/user/languages/python.mdx b/packages/app-web-docs/src/docs/user/languages/python.mdx index b04400ce8b..6270171a84 100644 --- a/packages/app-web-docs/src/docs/user/languages/python.mdx +++ b/packages/app-web-docs/src/docs/user/languages/python.mdx @@ -640,7 +640,7 @@ Below are visualizations of all our scope tests for this language. These were cr #### 16. Name: Resource -Name in a 'with' / 'use' / 'using' statement +Name in a `with` / `use` / `using` statement @@ -842,7 +842,7 @@ Below are visualizations of all our scope tests for this language. These were cr #### 15. Statement: Resource -A 'with' / 'use' / 'using' statement +A `with` / `use` / `using` statement @@ -1270,7 +1270,7 @@ The following are internal scopes. They are not intended for user interaction or #### 7. Interior: Resource -the body of a 'with' / 'use' / 'using' statement +the body of a `with` / `use` / `using` statement diff --git a/packages/app-web-docs/src/docs/user/scopes/glyph.mdx b/packages/app-web-docs/src/docs/user/scopes/glyph.mdx index e35c433121..593eca25f4 100644 --- a/packages/app-web-docs/src/docs/user/scopes/glyph.mdx +++ b/packages/app-web-docs/src/docs/user/scopes/glyph.mdx @@ -2,6 +2,8 @@ sidebar_label: Glyph --- +import { ScopeVisualizer, ScopeVisualizerOptions, ScopeVisualizerProvider } from "@site/src/docs/components/ScopeVisualizer"; + # Glyph Cursorless ID: `glyph` @@ -17,3 +19,28 @@ Default: `glyph` ## Examples - `"take next glyph air"` - Selects the next `a`. +- `"take every glyph dollar"` - Selects every `$`. + + + +## Scopes + + + +### Glyph: A + +A single `a` glyph + +##### Plaintext + + + +### Glyph: Dollar + +A single `$` glyph + +##### Plaintext + + + + diff --git a/packages/app-web-docs/src/docs/user/scopes/name.mdx b/packages/app-web-docs/src/docs/user/scopes/name.mdx index dd8cc21862..0062a46bc4 100644 --- a/packages/app-web-docs/src/docs/user/scopes/name.mdx +++ b/packages/app-web-docs/src/docs/user/scopes/name.mdx @@ -1196,7 +1196,7 @@ Default: `name` ### Name: Resource -Name in a 'with' / 'use' / 'using' statement +Name in a `with` / `use` / `using` statement ##### C# diff --git a/packages/app-web-docs/src/docs/user/scopes/statement.mdx b/packages/app-web-docs/src/docs/user/scopes/statement.mdx index 4eb9e4cac6..6c33ecca6f 100644 --- a/packages/app-web-docs/src/docs/user/scopes/statement.mdx +++ b/packages/app-web-docs/src/docs/user/scopes/statement.mdx @@ -1198,7 +1198,7 @@ Default: `state` ### Statement: Resource -A 'with' / 'use' / 'using' statement +A `with` / `use` / `using` statement ##### C# diff --git a/packages/app-web-docs/src/docs/user/scopes/type.mdx b/packages/app-web-docs/src/docs/user/scopes/type.mdx index 08527664f1..5a9154d94c 100644 --- a/packages/app-web-docs/src/docs/user/scopes/type.mdx +++ b/packages/app-web-docs/src/docs/user/scopes/type.mdx @@ -642,7 +642,7 @@ Default: `type` ### Type: Resource -Type in a 'with' / 'use' / 'using' statement +Type in a `with` / `use` / `using` statement ##### C# diff --git a/packages/app-web-docs/src/docs/user/scopes/value.mdx b/packages/app-web-docs/src/docs/user/scopes/value.mdx index e2c4e1fbcd..f11399eee8 100644 --- a/packages/app-web-docs/src/docs/user/scopes/value.mdx +++ b/packages/app-web-docs/src/docs/user/scopes/value.mdx @@ -674,7 +674,7 @@ Default: `value` ### Value: Resource -Value of a 'with' / 'use' / 'using' statement +Value of a `with` / `use` / `using` statement ##### C# diff --git a/packages/lib-common/src/references/scopeReferences.ts b/packages/lib-common/src/references/scopeReferences.ts index 22374b6960..26a32bb0e8 100644 --- a/packages/lib-common/src/references/scopeReferences.ts +++ b/packages/lib-common/src/references/scopeReferences.ts @@ -40,6 +40,7 @@ interface ScopeReferenceEntry extends ReferenceEntry { const DEFAULT_PATTERN = VAR_SPOKEN_FORM; const AIR = graphemeDefaultSpokenForms.a; +const DOLLAR = graphemeDefaultSpokenForms["$"]; const PARENTHESIS = pairedDelimiterReferences.parentheses.defaultSpokenForm; const NEXT = modifierExtraReferences.next.defaultSpokenForm; const FIRST = modifierExtraReferences.first.defaultSpokenForm; @@ -359,6 +360,10 @@ When an opening and closing delimiter use the same character and no parse-tree i command: `${SET_SELECTION} ${NEXT} ${VAR_SPOKEN_FORM} ${AIR}`, description: `Selects the next \`a\`.`, }, + { + command: `${SET_SELECTION} ${EVERY} ${VAR_SPOKEN_FORM} ${DOLLAR}`, + description: `Selects every \`$\`.`, + }, ], }, diff --git a/packages/lib-common/src/scopeSupportFacets/PlaintextScopeSupportFacetInfos.ts b/packages/lib-common/src/scopeSupportFacets/PlaintextScopeSupportFacetInfos.ts index e67bc32670..4422e8ae30 100644 --- a/packages/lib-common/src/scopeSupportFacets/PlaintextScopeSupportFacetInfos.ts +++ b/packages/lib-common/src/scopeSupportFacets/PlaintextScopeSupportFacetInfos.ts @@ -98,15 +98,25 @@ export const plaintextScopeSupportFacetInfos: Record< }, "collectionItem.textual": { description: "A text based collection item", - scopeType: { - type: "collectionItem", - }, + scopeType: "collectionItem", }, "collectionItem.textual.iteration": { description: "Iteration scope for text based collection items", + scopeType: "collectionItem", + isIteration: true, + }, + "glyph.a": { + description: "A single `a` glyph", scopeType: { - type: "collectionItem", + type: "glyph", + character: "a", + }, + }, + "glyph.dollar": { + description: "A single `$` glyph", + scopeType: { + type: "glyph", + character: "$", }, - isIteration: true, }, }; diff --git a/packages/lib-common/src/scopeSupportFacets/scopeSupportFacetInfos.ts b/packages/lib-common/src/scopeSupportFacets/scopeSupportFacetInfos.ts index ca8799f7c5..01ecdfdb96 100644 --- a/packages/lib-common/src/scopeSupportFacets/scopeSupportFacetInfos.ts +++ b/packages/lib-common/src/scopeSupportFacets/scopeSupportFacetInfos.ts @@ -244,7 +244,7 @@ export const scopeSupportFacetInfos: Record< scopeType: "statement", }, "statement.resource": { - description: "A 'with' / 'use' / 'using' statement", + description: "A `with` / `use` / `using` statement", scopeType: "statement", }, "statement.command": { @@ -808,7 +808,7 @@ export const scopeSupportFacetInfos: Record< "name.iteration.enum": enumIter("name", "names"), "name.iteration.document": documentIter("name", "names"), "name.resource": { - description: "Name in a 'with' / 'use' / 'using' statement", + description: "Name in a `with` / `use` / `using` statement", scopeType: "name", }, "name.argument.actual": { @@ -958,7 +958,7 @@ export const scopeSupportFacetInfos: Record< "value.iteration.enum": enumIter("value", "values"), "value.iteration.document": documentIter("value", "values"), "value.resource": { - description: "Value of a 'with' / 'use' / 'using' statement", + description: "Value of a `with` / `use` / `using` statement", scopeType: "value", }, "value.argument.actual": { @@ -1119,7 +1119,7 @@ export const scopeSupportFacetInfos: Record< "the type argument list", ), "type.resource": { - description: "Type in a 'with' / 'use' / 'using' statement", + description: "Type in a `with` / `use` / `using` statement", scopeType: "type", }, "type.iteration.block": blockIter("type", "types"), @@ -1200,7 +1200,7 @@ export const scopeSupportFacetInfos: Record< scopeType: { type: "interior" }, }, "interior.resource": { - description: "the body of a 'with' / 'use' / 'using' statement", + description: "the body of a `with` / `use` / `using` statement", scopeType: { type: "interior" }, }, "interior.namespace": { diff --git a/packages/lib-common/src/scopeSupportFacets/scopeSupportFacets.types.ts b/packages/lib-common/src/scopeSupportFacets/scopeSupportFacets.types.ts index 3eaec2ce0b..5ea3dad7b7 100644 --- a/packages/lib-common/src/scopeSupportFacets/scopeSupportFacets.types.ts +++ b/packages/lib-common/src/scopeSupportFacets/scopeSupportFacets.types.ts @@ -368,7 +368,9 @@ export type PlaintextScopeSupportFacet = | "surroundingPair.iteration" | "interior.surroundingPair" | "collectionItem.textual" - | "collectionItem.textual.iteration"; + | "collectionItem.textual.iteration" + | "glyph.a" + | "glyph.dollar"; export type LanguageScopeSupportFacetMap = Partial< Record diff --git a/resources/fixtures/scope-support-facet-infos.md b/resources/fixtures/scope-support-facet-infos.md index 09c260a81d..9ebb63b61c 100644 --- a/resources/fixtures/scope-support-facet-infos.md +++ b/resources/fixtures/scope-support-facet-infos.md @@ -173,6 +173,11 @@ - `functionCallee.generic` The function being called in a function call with generic type arguments - `functionCallee.method` The function being called in a method call, including parent objects. +### glyph + +- `glyph.a` A single `a` glyph +- `glyph.dollar` A single `$` glyph + ### identifier - `identifier` A single alphanumeric identifier in the document @@ -198,7 +203,7 @@ - `interior.lambda` The block body of a lambda/anonymous function - `interior.method` The body of a method declaration - `interior.namespace` the body of a namespace statement -- `interior.resource` the body of a 'with' / 'use' / 'using' statement +- `interior.resource` the body of a `with` / `use` / `using` statement - `interior.static` the body of a static statement ### surroundingPairInterior @@ -265,7 +270,7 @@ - `name.method` Name of a class method - `name.method.interface` Name of a interface method - `name.namespace` Name of a namespace -- `name.resource` Name in a 'with' / 'use' / 'using' statement +- `name.resource` Name in a `with` / `use` / `using` statement - `name.typeAlias` Name of a type alias - `name.variable.destructuring` Name (LHS) of a variable declaration with pattern destructuring - `name.variable.initialized` Name (LHS) of an initialized variable declaration @@ -380,7 +385,7 @@ - `statement.misc` A miscellaneous statement - `statement.namespace` A namespace declaration - `statement.package` A package declaration -- `statement.resource` A 'with' / 'use' / 'using' statement +- `statement.resource` A `with` / `use` / `using` statement - `statement.return` A return statement - `statement.static` A static statement - `statement.switch` A switch statement @@ -456,7 +461,7 @@ - `type.iteration.class` Iteration scope for types: class bodies. - `type.iteration.document` Iteration scope for types: the entire document including leading and trailing empty lines. - `type.iteration.interface` Iteration scope for types: interface bodies. -- `type.resource` Type in a 'with' / 'use' / 'using' statement +- `type.resource` Type in a `with` / `use` / `using` statement - `type.return` Type of a return value in a function declaration - `type.return.lambda` Type of a return value in a lambda declaration - `type.return.method` Type of a return value in a method declaration @@ -501,7 +506,7 @@ - `value.iteration.enum` Iteration scope for values: enum bodies. - `value.mapPair` Value (RHS) of a key-value pair in a map - `value.mapPair.iteration` Iteration scope for values of key-value pairs in a map: should be between the braces. -- `value.resource` Value of a 'with' / 'use' / 'using' statement +- `value.resource` Value of a `with` / `use` / `using` statement - `value.return` Return value of a function - `value.return.lambda` Implicit return value from a lambda - `value.switch` The value / subject of a switch statement diff --git a/resources/fixtures/scopes/plaintext/glyph.a.scope b/resources/fixtures/scopes/plaintext/glyph.a.scope new file mode 100644 index 0000000000..087bb67807 --- /dev/null +++ b/resources/fixtures/scopes/plaintext/glyph.a.scope @@ -0,0 +1,53 @@ +a b a c a +--- + +[#1 Content] = +[#1 Domain] = 0:0-0:1 + >-< +0| a b a c a + +[#1 Removal] = 0:0-0:2 + >--< +0| a b a c a + +[#1 Trailing delimiter] = 0:1-0:2 + >-< +0| a b a c a + +[#1 Insertion delimiter] = " " + + +[#2 Content] = +[#2 Domain] = 0:4-0:5 + >-< +0| a b a c a + +[#2 Removal] = 0:4-0:6 + >--< +0| a b a c a + +[#2 Leading delimiter] = 0:3-0:4 + >-< +0| a b a c a + +[#2 Trailing delimiter] = 0:5-0:6 + >-< +0| a b a c a + +[#2 Insertion delimiter] = " " + + +[#3 Content] = +[#3 Domain] = 0:8-0:9 + >-< +0| a b a c a + +[#3 Removal] = 0:7-0:9 + >--< +0| a b a c a + +[#3 Leading delimiter] = 0:7-0:8 + >-< +0| a b a c a + +[#3 Insertion delimiter] = " " diff --git a/resources/fixtures/scopes/plaintext/glyph.dollar.scope b/resources/fixtures/scopes/plaintext/glyph.dollar.scope new file mode 100644 index 0000000000..0da92c5c02 --- /dev/null +++ b/resources/fixtures/scopes/plaintext/glyph.dollar.scope @@ -0,0 +1,53 @@ +$ b $ c $ +--- + +[#1 Content] = +[#1 Domain] = 0:0-0:1 + >-< +0| $ b $ c $ + +[#1 Removal] = 0:0-0:2 + >--< +0| $ b $ c $ + +[#1 Trailing delimiter] = 0:1-0:2 + >-< +0| $ b $ c $ + +[#1 Insertion delimiter] = " " + + +[#2 Content] = +[#2 Domain] = 0:4-0:5 + >-< +0| $ b $ c $ + +[#2 Removal] = 0:4-0:6 + >--< +0| $ b $ c $ + +[#2 Leading delimiter] = 0:3-0:4 + >-< +0| $ b $ c $ + +[#2 Trailing delimiter] = 0:5-0:6 + >-< +0| $ b $ c $ + +[#2 Insertion delimiter] = " " + + +[#3 Content] = +[#3 Domain] = 0:8-0:9 + >-< +0| $ b $ c $ + +[#3 Removal] = 0:7-0:9 + >--< +0| $ b $ c $ + +[#3 Leading delimiter] = 0:7-0:8 + >-< +0| $ b $ c $ + +[#3 Insertion delimiter] = " "