Shell Script
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.
Scopes
Argument list
1. Argument list: Actual empty
An empty list of arguments in a function call. Insertion delimiter should be empty.2. Argument list: Actual multi line
A multi-line list of arguments in a function call. Insertion delimiter should include a newline.3. Argument list: Actual single line
A single-line list of arguments in a function callArgument or parameter
1. Argument: Actual multi line
A multi-line argument in a function call. Insertion delimiter should include a newline.2. Argument: Actual single line
A single-line argument in a function call3. Argument: Actual (iteration)
Iteration scope for arguments in a function call: the argument list. The domain should be the entire function call.Branch
1. Branch: If
An if branch2. Branch: If elif else
An if-elif-else branch. The removal range for the if branch should include the trailingelse keyword.3. Branch: If else
An if-else branch4. Branch: Switch case
A case/default branch in a switch statement5. Branch: Ternary
A branch in a ternary expression6. Branch: If (iteration)
Iteration scope for if/elif/else branches: the if/elif/else statement.7. Branch: Switch case (iteration)
Iteration scope for case/default branches in a switch statement: the switch statement body.8. Branch: Ternary (iteration)
Iteration scope for ternary expression branches: the ternary expression.Collection key
1. Key: Map pair
Key (LHS) of a key-value pair in a map2. Key: Map pair (iteration)
Iteration scope for keys of key-value pairs in a map: should be between the braces.Comment
1. Comment: Line
A line commentCondition
1. Condition: For
A condition in a for loop2. Condition: If
A condition in an if statement3. Condition: Switch case
A condition in a switch statement4. Condition: Ternary
A condition in a ternary expression5. Condition: While
A condition in a while loop6. Condition: Switch case (iteration)
Iteration scope for conditions in a switch statement: the switch statement body.Function call
1. Function call
A function callFunction callee
1. Function callee
The function being called in a function callIf statement
1. If statement
An if statementInterior
1. Interior: For
The body of a for loop2. Interior: Foreach
The body of a for-each loop3. Interior: Function
The body of a function declaration4. Interior: If
The body of an if/elif/else branch5. Interior: Switch
The body of a switch statement6. Interior: Switch case
The body of a case/default branch in a switch statement7. Interior: While
The body of a while loopList
1. List
A list/arrayMap
1. Map
A map/dictionaryName
1. Name: Assignment
Name (LHS) of an assignment statement2. Name: Assignment compound
Name (LHS) of a compound assignment statement, eg +=/-=3. Name: Constant
Name (LHS) of a constant declaration4. Name: Foreach
Iteration variable name in a for-each loop5. Name: Function
Name of a function declaration6. Name: Variable initialized
Name (LHS) of an initialized variable declaration7. Name: Variable uninitialized
Name (LHS) of an uninitialized variable declaration8. Name (iteration block)
Iteration scope for names: statement blocks (body of functions/if-statements/for-loops/etc).9. Name (iteration document)
Iteration scope for names: the entire document including leading and trailing empty lines.Named function
1. Named function
A named function declaration2. Named function (iteration document)
Iteration scope for named functions: the entire document including leading and trailing empty lines.Regular expression
1. Regular expression
A regular expressionStatement
1. Statement: Assignment
An assignment statement2. Statement: Assignment compound
A compound assignment statement, eg +=/-=3. Statement: Break
A break statement4. Statement: Constant
A constant declaration5. Statement: Continue
A continue statement6. Statement: For
A for loop7. Statement: Foreach
A for-each loop8. Statement: Function
A named function declaration9. Statement: Function call
A function call statement10. Statement: If
An if/elif/else statement11. Statement: Import
An import statement12. Statement: Return
A return statement13. Statement: Switch
A switch statement14. Statement: Update
An update statement, eg ++/--15. Statement: Variable initialized
An initialized variable declaration16. Statement: Variable uninitialized
An uninitialized variable declaration17. Statement: While
A while loop18. Statement (iteration block)
Iteration scope for statements: statement blocks (body of functions/if-statements/for-loops/etc).19. Statement (iteration document)
Iteration scope for statements: the entire document including leading and trailing empty lines.Value
1. Value: Assignment
Value (RHS) of an assignment statement2. Value: Assignment compound
Value (RHS) of a compound assignment statement, eg +=/-=3. Value: Constant
Value (RHS) of a constant declaration4. Value: Foreach
Iterable in a for-each loop5. Value: Map pair
Value (RHS) of a key-value pair in a map6. Value: Return
Return value of a function7. Value: Switch
Value / subject of a switch statement8. Value: Variable
Value (RHS) of a variable declaration9. Value (iteration block)
Iteration scope for values: statement blocks (body of functions/if-statements/for-loops/etc).10. Value (iteration document)
Iteration scope for values: the entire document including leading and trailing empty lines.11. Value: Map pair (iteration)
Iteration scope for values of key-value pairs in a map: should be between the braces.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.