diff options
| author | 2024-07-28 23:59:51 +0200 | |
|---|---|---|
| committer | 2024-07-28 23:59:51 +0200 | |
| commit | 16212eaf52657ea47bba7add7deac378d0bf4b4a (patch) | |
| tree | 27feb673ab07016a48ee1ae491fa7331a349cabb | |
| parent | 1aa0a8fa0d8e5dfe9ab09a11ea7c69f71e19795b (diff) | |
| download | iced-16212eaf52657ea47bba7add7deac378d0bf4b4a.tar.gz iced-16212eaf52657ea47bba7add7deac378d0bf4b4a.tar.bz2 iced-16212eaf52657ea47bba7add7deac378d0bf4b4a.zip  | |
Simplify `highlight` method for `text_editor` widget
| -rw-r--r-- | examples/editor/src/main.rs | 21 | ||||
| -rw-r--r-- | examples/markdown/src/main.rs | 10 | ||||
| -rw-r--r-- | widget/src/text_editor.rs | 23 | 
3 files changed, 31 insertions, 23 deletions
diff --git a/examples/editor/src/main.rs b/examples/editor/src/main.rs index 9ffb4d1a..155e74a1 100644 --- a/examples/editor/src/main.rs +++ b/examples/editor/src/main.rs @@ -1,4 +1,4 @@ -use iced::highlighter::{self, Highlighter}; +use iced::highlighter;  use iced::keyboard;  use iced::widget::{      button, column, container, horizontal_space, pick_list, row, text, @@ -186,18 +186,13 @@ impl Editor {              text_editor(&self.content)                  .height(Fill)                  .on_action(Message::ActionPerformed) -                .highlight::<Highlighter>( -                    highlighter::Settings { -                        theme: self.theme, -                        token: self -                            .file -                            .as_deref() -                            .and_then(Path::extension) -                            .and_then(ffi::OsStr::to_str) -                            .map(str::to_string) -                            .unwrap_or(String::from("rs")), -                    }, -                    |highlight, _theme| highlight.to_format() +                .highlight( +                    self.file +                        .as_deref() +                        .and_then(Path::extension) +                        .and_then(ffi::OsStr::to_str) +                        .unwrap_or("rs"), +                    self.theme,                  ),              status,          ] diff --git a/examples/markdown/src/main.rs b/examples/markdown/src/main.rs index ade6e453..eb51f985 100644 --- a/examples/markdown/src/main.rs +++ b/examples/markdown/src/main.rs @@ -1,4 +1,4 @@ -use iced::highlighter::{self, Highlighter}; +use iced::highlighter;  use iced::widget::{self, markdown, row, scrollable, text_editor};  use iced::{Element, Fill, Font, Task, Theme}; @@ -65,13 +65,7 @@ impl Markdown {              .height(Fill)              .padding(10)              .font(Font::MONOSPACE) -            .highlight::<Highlighter>( -                highlighter::Settings { -                    theme: highlighter::Theme::Base16Ocean, -                    token: "markdown".to_owned(), -                }, -                |highlight, _theme| highlight.to_format(), -            ); +            .highlight("markdown", highlighter::Theme::Base16Ocean);          let preview = markdown(&self.items, markdown::Settings::default())              .map(Message::LinkClicked); diff --git a/widget/src/text_editor.rs b/widget/src/text_editor.rs index 56fb7578..b5092012 100644 --- a/widget/src/text_editor.rs +++ b/widget/src/text_editor.rs @@ -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(  | 
