Interface: Target
typings/target.types.Target
Implemented by
Properties
contentRange
• Readonly
contentRange: Range
The range of the content
Defined in
contentSelection
• Readonly
contentSelection: Selection
The content range and is reversed turned into a selection
Defined in
contentText
• Readonly
contentText: string
The text contained in the content range
Defined in
editor
• Readonly
editor: TextEditor
The text editor used for all ranges
Defined in
hasExplicitRange
• Readonly
hasExplicitRange: boolean
If true
, then this target has an explicit range. This attribute is used
by "every"
to determine whether to return all scopes in the iteration
scope or just the ones that overlap with the given target's
contentRange.
Most targets have explicit ranges. As of writing this comment, the only targets that don't are as follows:
- a decorated mark (
"air"
), or - an empty cursor mark (
"this"
with an empty selection), or - an empty
"that"
mark (eg after saying"chuck air"
).
For example, when the user says "change every state air"
, we clear every
statement in the function, but "change every state this"
with a non-empty
selection will only target statements overlapping the cursor.
Defined in
hasExplicitScopeType
• Readonly
hasExplicitScopeType: boolean
If true
, then this target has an explicit scope type, and so should never
be automatically expanded to a containing scope.
Examples of targets that have explicit scopes are ScopeTypeTarget
(eg "funk"
), TokenTarget (eg "token"
), etc.
As of writing this comment, the only target type that doesn't have an explicit scope type is UntypedTarget, which can be constructed by
- using a decorated mark (
"air"
), or - using any cursor mark (
"this"
), or - using a range between decorated marks or cursor marks (eg
"past air"
or"air past bat"
), or - using any
"that"
mark (eg after saying"copy air"
), though this final behaviour will change with #466.
The primary consumer of this attribute is ModifyIfUntypedStage,
which is used in the following situations to automatically expand to a
particular scope type when hasExplicitScopeType
is false
:
- To expand to
"line"
for"pour"
,"clone"
, and"breakpoint"
- To expand to
"token"
for"leading"
and"trailing"
- To expand to nearest containing pair for
"inside"
,"bounds"
, and"rewrap"
- To expand to SnippetVariable.wrapperScopeType for snippet wrapping
- To expand to Snippet.insertionScopeTypes for snippet insertion
For example, when the user says "pour air"
, the
{@link DecoratedSymbolStage} will return an UntypedTarget, which
has hasExplicitScopeType=false
, so "pour"
will expand to the line
containining the air token and insert a newline after it.
Defined in
insertionDelimiter
• Readonly
insertionDelimiter: string
If this selection has a delimiter use it for inserting before or after the target. For example, new line for a line or paragraph and comma for a list or argument
Defined in
isImplicit
• Readonly
isImplicit: boolean
If true
, this target was not explicitly spoken by the user. For example:
- The implicit destination in the command
"bring air"
- The implicit anchor in the range
"take past air"
Defined in
isLine
• Readonly
isLine: boolean
If true this target should be treated as a line
Defined in
isNotebookCell
• Readonly
isNotebookCell: boolean
If true this target is a notebook cell
Defined in
isRaw
• Readonly
isRaw: boolean
If true this target is a raw selection and its insertion delimiter should not be used on bring action
Defined in
isReversed
• Readonly
isReversed: boolean
If true active is before anchor
Defined in
thatTarget
• Readonly
thatTarget: Target
Internal target that should be used for the that mark
Defined in
Methods
constructChangeEdit
▸ constructChangeEdit(text
): EditWithRangeUpdater
Constructs change/insertion edit. Adds delimiter before/after if needed
Parameters
Name | Type |
---|---|
text | string |
Returns
Defined in
constructRemovalEdit
▸ constructRemovalEdit(): EditWithRangeUpdater
Constructs removal edit
Returns
Defined in
createContinuousRangeTarget
▸ createContinuousRangeTarget(isReversed
, endTarget
, includeStart
, includeEnd
): Target
Parameters
Name | Type |
---|---|
isReversed | boolean |
endTarget | Target |
includeStart | boolean |
includeEnd | boolean |
Returns
Defined in
getBoundaryStrict
▸ getBoundaryStrict(): Target
[]
Returns
Target
[]
Defined in
getEditNewActionType
▸ getEditNewActionType(): EditNewActionType
Returns
Defined in
getInteriorStrict
▸ getInteriorStrict(): Target
[]
Returns
Target
[]
Defined in
getLeadingDelimiterTarget
▸ getLeadingDelimiterTarget(): undefined
| Target
The range of the delimiter before the content selection
Returns
undefined
| Target
Defined in
getRemovalHighlightRange
▸ getRemovalHighlightRange(): Range
Returns
Defined in
getRemovalRange
▸ getRemovalRange(): Range
Returns
Defined in
getTrailingDelimiterTarget
▸ getTrailingDelimiterTarget(): undefined
| Target
The range of the delimiter after the content selection
Returns
undefined
| Target
Defined in
isEqual
▸ isEqual(target
): boolean
Parameters
Name | Type |
---|---|
target | Target |
Returns
boolean
Defined in
toPositionTarget
▸ toPositionTarget(position
): Target
Construct a position target with the given position.
Parameters
Name | Type | Description |
---|---|---|
position | Position | The position to use, eg start , end , before , after |
Returns
Defined in
withContentRange
▸ withContentRange(contentRange
): Target
Parameters
Name | Type |
---|---|
contentRange | Range |
Returns
Defined in
withThatTarget
▸ withThatTarget(thatTarget
): Target
Parameters
Name | Type |
---|---|
thatTarget | Target |