pub struct RopeBuffer { /* private fields */ }Expand description
The open note’s text, cursor, selection and history.
Implementations§
Source§impl RopeBuffer
impl RopeBuffer
pub fn new(text: Text) -> Self
pub fn text(&self) -> &Text
Sourcepub fn indent_width(&self) -> u8
pub fn indent_width(&self) -> u8
Spaces one indent step inserts. Both backends read this, so >> and Tab
move a line by the same amount.
pub fn set_indent_width(&mut self, spaces: u8)
pub fn hard_tab_indent(&self) -> bool
pub fn set_hard_tab_indent(&mut self, hard: bool)
pub fn snapshot(&self) -> Snapshot
Sourcepub fn rows(&self) -> Vec<String>
pub fn rows(&self) -> Vec<String>
Every row, materialised.
Not a cache: nothing is maintained between calls, so the cost lands on the caller that wants a vector rather than on every edit. That is the whole difference from the shim this replaced.
Sourcepub fn joined_rows(&self, first: usize, last: usize) -> String
pub fn joined_rows(&self, first: usize, last: usize) -> String
Rows first..=last, joined with newlines.
pub fn cursor(&self) -> (usize, usize)
pub fn is_empty(&self) -> bool
pub fn selection_range(&self) -> Option<((usize, usize), (usize, usize))>
pub fn yank_text(&self) -> String
pub fn set_yank_text(&mut self, text: impl Into<String>)
pub fn search_pattern(&self) -> Option<&Regex>
pub fn take_outcome(&mut self) -> EditOutcome
Sourcepub fn edit<R>(&mut self, f: impl FnOnce(&mut Self) -> R) -> R
pub fn edit<R>(&mut self, f: impl FnOnce(&mut Self) -> R) -> R
Run f as one undo group.
Every mutation inside lands in a single history entry, however many primitives it takes. Nested calls belong to the outermost group, so a compound action built from the single-mutation helpers is still one undo.
Sourcepub fn continue_group(&mut self)
pub fn continue_group(&mut self)
The next mutation joins the previous group instead of starting one.
The policy is the backend’s, because only it knows what the user was doing
— mid-word against after a pause, inside an Insert session against having
left it. This is the mechanism; typing_run and the vim engine are the two
callers that hold an opinion.
pub fn insert_str(&mut self, s: impl AsRef<str>) -> bool
pub fn insert_char(&mut self, c: char)
pub fn insert_newline(&mut self)
Sourcepub fn delete_str(&mut self, clusters: usize) -> bool
pub fn delete_str(&mut self, clusters: usize) -> bool
Delete clusters grapheme clusters forward, a line break counting as one.
Clusters and not scalars, because a delete may not leave half a character
behind: forward_by steps whole clusters, so a caller counting scalars
over a flag or a ZWJ emoji spends the difference on the text after it.
Sourcepub fn delete_char(&mut self) -> bool
pub fn delete_char(&mut self) -> bool
Backspace.
Sourcepub fn delete_next_char(&mut self) -> bool
pub fn delete_next_char(&mut self) -> bool
Forward delete.
pub fn delete_word(&mut self) -> bool
pub fn delete_next_word(&mut self) -> bool
pub fn cut(&mut self) -> bool
Sourcepub fn copy(&mut self)
pub fn copy(&mut self)
Copying reads: it leaves the selection where it is, and an empty one leaves the register alone rather than emptying it.
pub fn paste(&mut self) -> bool
pub fn undo(&mut self) -> bool
pub fn redo(&mut self) -> bool
Sourcepub fn move_cursor(&mut self, movement: CursorMove)
pub fn move_cursor(&mut self, movement: CursorMove)
Move the cursor, extending a live selection.
Directional movement keeps the anchor deliberately: that is how vim’s Visual mode extends.
Sourcepub fn jump_to(&mut self, row: usize, col: usize) -> bool
pub fn jump_to(&mut self, row: usize, col: usize) -> bool
Move the cursor to (row, col), refusing a position the buffer cannot
address rather than landing somewhere else.
Sourcepub fn move_to(&mut self, to: Position)
pub fn move_to(&mut self, to: Position)
Move to a position the caller worked out itself — a visual-line motion, which needs a layout the buffer does not have.
pub fn start_selection(&mut self)
pub fn cancel_selection(&mut self)
pub fn select_all(&mut self)
pub fn set_selection( &mut self, start: (usize, usize), end: (usize, usize), ) -> bool
pub fn set_search_pattern(&mut self, pattern: &str) -> Result<(), Error>
Sourcepub fn search_forward(&mut self, match_cursor: bool) -> bool
pub fn search_forward(&mut self, match_cursor: bool) -> bool
Move the cursor to the next match. Never extends a selection.
Sourcepub fn search_back(&mut self, match_cursor: bool) -> bool
pub fn search_back(&mut self, match_cursor: bool) -> bool
Move the cursor to the previous match. Never extends a selection.
Sourcepub fn search_repeat(&mut self, backward: bool) -> bool
pub fn search_repeat(&mut self, backward: bool) -> bool
Repeat the persisted pattern (vim n / N).
Trait Implementations§
Source§impl Debug for RopeBuffer
impl Debug for RopeBuffer
Auto Trait Implementations§
impl Freeze for RopeBuffer
impl RefUnwindSafe for RopeBuffer
impl Send for RopeBuffer
impl Sync for RopeBuffer
impl Unpin for RopeBuffer
impl UnsafeUnpin for RopeBuffer
impl UnwindSafe for RopeBuffer
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<D> OwoColorize for D
impl<D> OwoColorize for D
Source§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
Source§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
Source§fn black(&self) -> FgColorDisplay<'_, Black, Self>
fn black(&self) -> FgColorDisplay<'_, Black, Self>
Source§fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
Source§fn red(&self) -> FgColorDisplay<'_, Red, Self>
fn red(&self) -> FgColorDisplay<'_, Red, Self>
Source§fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
Source§fn green(&self) -> FgColorDisplay<'_, Green, Self>
fn green(&self) -> FgColorDisplay<'_, Green, Self>
Source§fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
Source§fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
Source§fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
Source§fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
Source§fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
Source§fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
Source§fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
Source§fn white(&self) -> FgColorDisplay<'_, White, Self>
fn white(&self) -> FgColorDisplay<'_, White, Self>
Source§fn on_white(&self) -> BgColorDisplay<'_, White, Self>
fn on_white(&self) -> BgColorDisplay<'_, White, Self>
Source§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
Source§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
Source§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
Source§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
Source§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
Source§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
Source§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
Source§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
Source§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
Source§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
Source§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
Source§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
Source§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
Source§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
Source§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
Source§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
Source§fn bold(&self) -> BoldDisplay<'_, Self>
fn bold(&self) -> BoldDisplay<'_, Self>
Source§fn dimmed(&self) -> DimDisplay<'_, Self>
fn dimmed(&self) -> DimDisplay<'_, Self>
Source§fn italic(&self) -> ItalicDisplay<'_, Self>
fn italic(&self) -> ItalicDisplay<'_, Self>
Source§fn underline(&self) -> UnderlineDisplay<'_, Self>
fn underline(&self) -> UnderlineDisplay<'_, Self>
Source§fn blink(&self) -> BlinkDisplay<'_, Self>
fn blink(&self) -> BlinkDisplay<'_, Self>
Source§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
Source§fn reversed(&self) -> ReversedDisplay<'_, Self>
fn reversed(&self) -> ReversedDisplay<'_, Self>
Source§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
Source§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg or
a color-specific method, such as OwoColorize::green, Read moreSource§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg or
a color-specific method, such as OwoColorize::on_yellow, Read more