Enum druid_shell::text::Action[][src]

#[non_exhaustive]
pub enum Action {
Show 21 variants Move(Movement), MoveSelecting(Movement), SelectAll, SelectLine, SelectParagraph, SelectWord, Delete(Movement), DecomposingBackspace, UppercaseSelection, LowercaseSelection, TitlecaseSelection, InsertNewLine { ignore_hotkey: bool, newline_type: char, }, InsertTab { ignore_hotkey: bool, }, InsertBacktab, InsertSingleQuoteIgnoringSmartQuotes, InsertDoubleQuoteIgnoringSmartQuotes, Scroll(VerticalMovement), ScrollToSelection, SetSelectionWritingDirection(WritingDirection), SetParagraphWritingDirection(WritingDirection), Cancel,
}
Expand description

A special text editing command sent from the platform to the application.

Variants (Non-exhaustive)

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
Move(Movement)

Moves the selection.

Before moving, if the active and the anchor of the selection are not at the same position (it’s a non-caret selection), then:

  1. First set both active and anchor to the same position: the selection’s upstream index if Movement is an upstream movement, or the downstream index if Movement is a downstream movement.

  2. If Movement is Grapheme, then stop. Otherwise, apply the Movement as per the usual rules.

Tuple Fields of Move

0: Movement
MoveSelecting(Movement)

Moves just the selection’s active edge.

Equivalent to holding shift while performing movements or clicks on most operating systems.

Tuple Fields of MoveSelecting

0: Movement
SelectAll

Select the entire document.

SelectLine

Expands the selection to the entire soft-wrapped line.

If multiple lines are already selected, expands the selection to encompass all soft-wrapped lines that intersected with the prior selection. If the selection is a caret is on a soft line break, uses the affinity of the caret to determine which of the two lines to select. SelectLine should be idempotent: it should never expand onto adjacent lines.

SelectParagraph

Expands the selection to the entire hard-wrapped line.

If multiple lines are already selected, expands the selection to encompass all hard-wrapped lines that intersected with the prior selection. SelectParagraph should be idempotent: it should never expand onto adjacent lines.

SelectWord

Expands the selection to the entire word.

If multiple words are already selected, expands the selection to encompass all words that intersected with the prior selection. If the selection is a caret is on a word boundary, selects the word downstream of the caret. SelectWord should be idempotent: it should never expand onto adjacent words.

For more information on what these so-called “words” are, see Unicode Text Segmentation.

Delete(Movement)

Deletes some text.

If some text is already selected, Movement is ignored, and the selection is deleted. If the selection’s anchor is the same as the active, then first apply MoveSelecting(Movement) and then delete the resulting selection.

Tuple Fields of Delete

0: Movement
DecomposingBackspace

Delete backwards, potentially breaking graphemes.

A special kind of backspace that, instead of deleting the entire grapheme upstream of the caret, may in some cases and character sets delete a subset of that grapheme’s code points.

UppercaseSelection

Maps the characters in the selection to uppercase.

For more information on case mapping, see the Unicode Case Mapping FAQ

LowercaseSelection

Maps the characters in the selection to lowercase.

For more information on case mapping, see the Unicode Case Mapping FAQ

TitlecaseSelection

Maps the characters in the selection to titlecase.

When calculating whether a character is at the beginning of a word, you may have to peek outside the selection to other characters in the document.

For more information on case mapping, see the Unicode Case Mapping FAQ

InsertNewLine

Inserts a newline character into the document.

Fields of InsertNewLine

ignore_hotkey: bool

If true, then always insert a newline, even if normally you would run a keyboard shortcut attached to the return key, like sending a message or activating autocomplete.

On macOS, this is triggered by pressing option-return.

newline_type: char

Either U+000A, U+2029, or U+2028. For instance, on macOS, control-enter inserts U+2028.

InsertTab

Inserts a tab character into the document.

Fields of InsertTab

ignore_hotkey: bool

If true, then always insert a tab, even if normally you would run a keyboard shortcut attached to the return key, like indenting a line or activating autocomplete.

On macOS, this is triggered by pressing option-tab.

InsertBacktab

Indicates the reverse of inserting tab; corresponds to shift-tab on most operating systems.

InsertSingleQuoteIgnoringSmartQuotes
InsertDoubleQuoteIgnoringSmartQuotes
Scroll(VerticalMovement)

Scrolls the text field without modifying the selection.

Tuple Fields of Scroll

0: VerticalMovement
ScrollToSelection

Centers the selection vertically in the text field.

The average of the anchor’s y and the active’s y should be exactly halfway down the field. If the selection is taller than the text field’s visible height, then instead scrolls the minimum distance such that the text field is completely vertically filled by the selection.

SetSelectionWritingDirection(WritingDirection)

Sets the writing direction of the selected text or caret.

Tuple Fields of SetSelectionWritingDirection

0: WritingDirection
SetParagraphWritingDirection(WritingDirection)

Sets the writing direction of all paragraphs that partially or fully intersect with the selection or caret.

Tuple Fields of SetParagraphWritingDirection

0: WritingDirection
Cancel

Cancels the current window or operation.

Triggered on most operating systems with escape.

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Formats the value using the given formatter. Read more

Feeds this value into the given Hasher. Read more

Feeds a slice of this type into the given Hasher. Read more

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more

Instruments this type with the current Span, returning an Instrumented wrapper. Read more

Performs the conversion.

Performs the conversion.

Performs the conversion.

The resulting type after obtaining ownership.

Creates owned data from borrowed data, usually by cloning. Read more

🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

Uses borrowed data to replace owned data, usually by cloning. Read more

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more