pub struct CodeView<Msg> { /* private fields */ }Expand description
Code with syntax colours, line numbers and wrapping of long lines.
While focused, c copies the code to the clipboard and flashes. The code is a text selection
region: a mouse drag selects inside it (turn it off with
NodeMut::selectable), and clean copies leave out the
line numbers and the signs of marked lines.
For reviews, line_marks shows a diff and
highlight_lines tints lines to look at; either adds a sign column
at the left edge. reveal scrolls the enclosing
ScrollView to a line.
Style keys: code (bg, padding) with focus and pressed; code-line-number;
code-token.<kind> where kind is keyword, type, function, macro, string,
number, comment, attribute, lifetime, punctuation, table, key, variable or
plain; code-line.<look> (bg for the line, fg for its sign) where look is added,
removed, accent or warning. Icons: line-added, line-removed, warning and the
pillar.
Implementations§
Source§impl<Msg: 'static> CodeView<Msg>
impl<Msg: 'static> CodeView<Msg>
Sourcepub fn line_marks(self, marks: impl IntoIterator<Item = LineMark>) -> Self
pub fn line_marks(self, marks: impl IntoIterator<Item = LineMark>) -> Self
Marks lines as a diff: the first mark belongs to line 1, the next to line 2, and lines
past the last mark are unchanged. Added lines are tinted with the success colour and
signed +, removed ones with the danger colour and −, in the sign column at the left
edge.
Sourcepub fn highlight_lines(
self,
lines: impl RangeBounds<usize>,
tone: LineTone,
) -> Self
pub fn highlight_lines( self, lines: impl RangeBounds<usize>, tone: LineTone, ) -> Self
Tints lines (counted from 1, like the line numbers) in tone, over any diff mark, and
puts the tone’s sign in the sign column. Call it again for more lines; where ranges meet,
the later call wins. The tint is separate from a text selection, which draws over it.
Sourcepub fn reveal(self, line: usize) -> Self
pub fn reveal(self, line: usize) -> Self
Scrolls the enclosing ScrollView just enough to show
line (counted from 1; past the end, the last line) with two rows of context, gliding
there unless motion is reduced. It happens when the revealed line changes, so the user
can scroll away afterwards; outside a scroll view it does nothing.
Sourcepub fn line_numbers(self, show: bool) -> Self
pub fn line_numbers(self, show: bool) -> Self
Shows or hides line numbers; shown by default.
Trait Implementations§
Source§impl<Msg: Clone + 'static> Widget<Msg> for CodeView<Msg>
impl<Msg: Clone + 'static> Widget<Msg> for CodeView<Msg>
Source§fn measure(&self, cx: &mut MeasureCx<'_>, available: Size) -> Size
fn measure(&self, cx: &mut MeasureCx<'_>, available: Size) -> Size
available.Source§fn event(&self, cx: &mut EventCx<'_, Msg>, event: &Event) -> bool
fn event(&self, cx: &mut EventCx<'_, Msg>, event: &Event) -> bool
true when the event was used; unused key and scroll events
bubble to the parent widget.Source§fn paint_overlay(&self, _cx: &mut PaintCx<'_>, _anchor: Rect)
fn paint_overlay(&self, _cx: &mut PaintCx<'_>, _anchor: Rect)
PaintCx::request_overlay. anchor is the area the widget was painted in.Source§fn children_mut(&mut self) -> &mut [Node<Msg>]
fn children_mut(&mut self) -> &mut [Node<Msg>]
Auto Trait Implementations§
impl<Msg> Freeze for CodeView<Msg>
impl<Msg> RefUnwindSafe for CodeView<Msg>where
Option<Msg>: RefUnwindSafe,
impl<Msg> Send for CodeView<Msg>
impl<Msg> Sync for CodeView<Msg>
impl<Msg> Unpin for CodeView<Msg>
impl<Msg> UnsafeUnpin for CodeView<Msg>where
Option<Msg>: UnsafeUnpin,
impl<Msg> UnwindSafe for CodeView<Msg>where
Option<Msg>: UnwindSafe,
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> 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 more