pub struct VirtualTextManager { /* private fields */ }Expand description
Manages virtual text entries for a buffer
Uses the marker system for position tracking, so virtual text automatically adjusts when the buffer is edited.
Implementations§
Source§impl VirtualTextManager
impl VirtualTextManager
Sourcepub fn add(
&mut self,
marker_list: &mut MarkerList,
position: usize,
text: String,
style: Style,
vtext_position: VirtualTextPosition,
priority: i32,
) -> VirtualTextId
pub fn add( &mut self, marker_list: &mut MarkerList, position: usize, text: String, style: Style, vtext_position: VirtualTextPosition, priority: i32, ) -> VirtualTextId
Add a virtual text entry
§Arguments
marker_list- The marker list to create a position marker inposition- Byte offset in the buffertext- Text to displaystyle- Styling for the textvtext_position- Whether to render before or after the characterpriority- Ordering priority (higher = later in render order)
§Returns
The ID of the created virtual text entry
Sourcepub fn add_with_id(
&mut self,
marker_list: &mut MarkerList,
position: usize,
text: String,
style: Style,
vtext_position: VirtualTextPosition,
priority: i32,
string_id: String,
) -> VirtualTextId
pub fn add_with_id( &mut self, marker_list: &mut MarkerList, position: usize, text: String, style: Style, vtext_position: VirtualTextPosition, priority: i32, string_id: String, ) -> VirtualTextId
Add a virtual text entry with a string identifier
This is useful for plugins that need to track and remove virtual texts by name.
Sourcepub fn add_line(
&mut self,
marker_list: &mut MarkerList,
position: usize,
text: String,
style: Style,
placement: VirtualTextPosition,
namespace: VirtualTextNamespace,
priority: i32,
) -> VirtualTextId
pub fn add_line( &mut self, marker_list: &mut MarkerList, position: usize, text: String, style: Style, placement: VirtualTextPosition, namespace: VirtualTextNamespace, priority: i32, ) -> VirtualTextId
Add a virtual line (LineAbove or LineBelow) with namespace for bulk removal
This is the primary API for features like git blame headers.
§Arguments
marker_list- The marker list to create a position marker inposition- Byte offset in the buffer (anchors the line to this position)text- Full line content to displaystyle- Styling for the lineplacement- LineAbove or LineBelownamespace- Namespace for bulk removal (e.g., “git-blame”)priority- Ordering when multiple lines at same position
Sourcepub fn remove_by_id(
&mut self,
marker_list: &mut MarkerList,
string_id: &str,
) -> bool
pub fn remove_by_id( &mut self, marker_list: &mut MarkerList, string_id: &str, ) -> bool
Remove a virtual text entry by its string identifier
Sourcepub fn remove_by_prefix(&mut self, marker_list: &mut MarkerList, prefix: &str)
pub fn remove_by_prefix(&mut self, marker_list: &mut MarkerList, prefix: &str)
Remove all virtual text entries whose string_id starts with the given prefix
Sourcepub fn remove(
&mut self,
marker_list: &mut MarkerList,
id: VirtualTextId,
) -> bool
pub fn remove( &mut self, marker_list: &mut MarkerList, id: VirtualTextId, ) -> bool
Remove a virtual text entry
Sourcepub fn clear(&mut self, marker_list: &mut MarkerList)
pub fn clear(&mut self, marker_list: &mut MarkerList)
Clear all virtual text entries
Sourcepub fn query_range(
&self,
marker_list: &MarkerList,
start: usize,
end: usize,
) -> Vec<(usize, &VirtualText)>
pub fn query_range( &self, marker_list: &MarkerList, start: usize, end: usize, ) -> Vec<(usize, &VirtualText)>
Query virtual texts in a byte range
Returns a vector of (byte_position, &VirtualText) pairs, sorted by:
- Byte position (ascending)
- Priority (ascending, so higher priority renders later)
§Arguments
marker_list- The marker list to query positions fromstart- Start byte offset (inclusive)end- End byte offset (exclusive)
Sourcepub fn build_lookup(
&self,
marker_list: &MarkerList,
start: usize,
end: usize,
) -> HashMap<usize, Vec<&VirtualText>>
pub fn build_lookup( &self, marker_list: &MarkerList, start: usize, end: usize, ) -> HashMap<usize, Vec<&VirtualText>>
Build a lookup map for efficient per-character access during rendering
Returns a HashMap where keys are byte positions and values are vectors of virtual texts at that position, sorted by priority.
Sourcepub fn clear_namespace(
&mut self,
marker_list: &mut MarkerList,
namespace: &VirtualTextNamespace,
)
pub fn clear_namespace( &mut self, marker_list: &mut MarkerList, namespace: &VirtualTextNamespace, )
Clear all virtual texts in a namespace
This is the primary way plugins remove their virtual texts (e.g., before updating blame data).
Sourcepub fn query_lines_in_range(
&self,
marker_list: &MarkerList,
start: usize,
end: usize,
) -> Vec<(usize, &VirtualText)>
pub fn query_lines_in_range( &self, marker_list: &MarkerList, start: usize, end: usize, ) -> Vec<(usize, &VirtualText)>
Query only virtual LINES (LineAbove/LineBelow) in a byte range
Used by the render pipeline to inject header/footer lines. Returns (byte_position, &VirtualText) pairs sorted by position then priority.
Sourcepub fn query_inline_in_range(
&self,
marker_list: &MarkerList,
start: usize,
end: usize,
) -> Vec<(usize, &VirtualText)>
pub fn query_inline_in_range( &self, marker_list: &MarkerList, start: usize, end: usize, ) -> Vec<(usize, &VirtualText)>
Query only INLINE virtual texts (BeforeChar/AfterChar) in a byte range
Used by the render pipeline to inject inline hints.
Sourcepub fn build_lines_lookup(
&self,
marker_list: &MarkerList,
start: usize,
end: usize,
) -> HashMap<usize, Vec<&VirtualText>>
pub fn build_lines_lookup( &self, marker_list: &MarkerList, start: usize, end: usize, ) -> HashMap<usize, Vec<&VirtualText>>
Build a lookup map for virtual LINES, keyed by the line’s anchor byte position
For each source line, the renderer can quickly check if there are LineAbove or LineBelow virtual texts anchored to positions within that line.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for VirtualTextManager
impl RefUnwindSafe for VirtualTextManager
impl Send for VirtualTextManager
impl Sync for VirtualTextManager
impl Unpin for VirtualTextManager
impl UnsafeUnpin for VirtualTextManager
impl UnwindSafe for VirtualTextManager
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
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
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