Enum Action

Source
#[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.

§

MoveSelecting(Movement)

Moves just the selection’s active edge.

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

§

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.

§

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

§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

§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.

§

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.

§

SetParagraphWritingDirection(WritingDirection)

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

§

Cancel

Cancels the current window or operation.

Triggered on most operating systems with escape.

Trait Implementations§

Source§

impl Clone for Action

Source§

fn clone(&self) -> Action

Returns a duplicate of the value. Read more
1.0.0 · Source§

const fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Action

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Hash for Action

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

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

impl PartialEq for Action

Source§

fn eq(&self, other: &Action) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

const fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for Action

Source§

impl Eq for Action

Source§

impl StructuralPartialEq for Action

Auto Trait Implementations§

§

impl Freeze for Action

§

impl RefUnwindSafe for Action

§

impl Send for Action

§

impl Sync for Action

§

impl Unpin for Action

§

impl UnwindSafe for Action

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

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

fn in_current_span(self) -> Instrumented<Self>

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

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> RoundFrom<T> for T

Source§

fn round_from(x: T) -> T

Performs the conversion.
Source§

impl<T, U> RoundInto<U> for T
where U: RoundFrom<T>,

Source§

fn round_into(self) -> U

Performs the conversion.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

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

fn clone_into(&self, target: &mut T)

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

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

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

fn with_current_subscriber(self) -> WithDispatch<Self>

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