Simplify highlight method for text_editor widget

This commit is contained in:
Héctor Ramón Jiménez 2024-07-28 23:59:51 +02:00
parent 1aa0a8fa0d
commit 16212eaf52
No known key found for this signature in database
GPG key ID: 7CC46565708259A7
3 changed files with 31 additions and 23 deletions

View file

@ -13,7 +13,7 @@ use crate::core::text::{self, LineHeight, Text};
use crate::core::widget::operation;
use crate::core::widget::{self, Widget};
use crate::core::{
Background, Border, Color, Element, Length, Padding, Pixels, Point,
self, Background, Border, Color, Element, Length, Padding, Pixels, Point,
Rectangle, Shell, Size, SmolStr, Theme, Vector,
};
@ -146,9 +146,28 @@ where
self
}
/// Highlights the [`TextEditor`] using the given syntax and theme.
#[cfg(feature = "highlighter")]
pub fn highlight(
self,
syntax: &str,
theme: iced_highlighter::Theme,
) -> TextEditor<'a, iced_highlighter::Highlighter, Message, Theme, Renderer>
where
Renderer: text::Renderer<Font = core::Font>,
{
self.highlight_with::<iced_highlighter::Highlighter>(
iced_highlighter::Settings {
theme,
token: syntax.to_owned(),
},
|highlight, _theme| highlight.to_format(),
)
}
/// Highlights the [`TextEditor`] with the given [`Highlighter`] and
/// a strategy to turn its highlights into some text format.
pub fn highlight<H: text::Highlighter>(
pub fn highlight_with<H: text::Highlighter>(
self,
settings: H::Settings,
to_format: fn(