Below are visualizations of all our scope tests for this language. These were created primarily for testing purposes rather than as documentation. There are quite a few, and they may feel a bit overwhelming from a documentation standpoint.
Branch
1. Branch: If
An if branch
2. Branch: If elif else
An if-elif-else branch. The removal range for the if branch should include the trailing `else` keyword.
3. Branch: If else
An if-else branch
4. Branch: If (iteration)
Iteration scope for if/elif/else branches: the if-else statement.
Condition
1. Condition: If
A condition in an if statement
Function call
1. Function call
A function call
2. Function call: Chain
A chain of function calls, eg `foo().bar()`
3. Function call: Method
A method call
Function callee
1. Function callee
The function being called in a function call
2. Function callee: Chain
The function being called in a chain of function calls, including parent objects.
3. Function callee: Method
The function being called in a method call, including parent objects.
If statement
1. If statement
An if statement
Interior
1. Interior: Function
The body of a function declaration
2. Interior: If
The body of an if/elif/else branch
Map
1. Map
A map/dictionary
Name
1. Name: Assignment
Name (LHS) of an assignment
2. Name: Variable
Name (LHS) of a variable declaration
Named function
1. Named function
A named function declaration
Statement
1. Statement: If
A if/elif/else statement
Value
1. Value: Assignment
Value (RHS) of an assignment
2. Value: Variable
Value (RHS) of a variable declaration
Internal scopes
The following are internal scopes. They are not intended for user interaction or spoken use. These scopes exist solely for internal Cursorless functionality.
Disqualify delimiter
1. Disqualify delimiter
Used to disqualify a token from being treated as a surrounding pair delimiter. This will usually be operators containing `>` or `<`, eg `<`, `<=`, `->`, etc