From 70f7b95874ffd47516508bf1852e06bf50dcfecd Mon Sep 17 00:00:00 2001 From: rhysd Date: Tue, 24 Oct 2023 16:16:36 +0900 Subject: [PATCH] simplify ratatui/tui-rs feature groups by adding `ratatui` and `tuirs` features --- .github/workflows/ci.yml | 12 ++++++------ Cargo.toml | 16 +++++++++------- src/highlight.rs | 17 ++++------------- src/lib.rs | 27 +++------------------------ src/textarea.rs | 17 ++++------------- 5 files changed, 26 insertions(+), 63 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ec63526..0985d39 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -18,8 +18,8 @@ jobs: - run: cargo test --no-default-features --features=tuirs-crossterm,search -- --skip .rs - run: cargo test --no-default-features --features=tuirs-termion,search -- --skip .rs if: ${{ matrix.os != 'windows-latest' }} - - run: cargo test --no-default-features --features=your-backend,search -- --skip .rs - - run: cargo test --no-default-features --features=tuirs-your-backend,search -- --skip .rs + - run: cargo test --no-default-features --features=no-backend,search -- --skip .rs + - run: cargo test --no-default-features --features=tuirs-no-backend,search -- --skip .rs lint: runs-on: ubuntu-latest steps: @@ -33,12 +33,12 @@ jobs: - run: cargo clippy --examples --features search -- -D warnings - run: cargo clippy --examples --no-default-features --features termion -- -D warnings - run: cargo clippy --examples --no-default-features --features termion,search -- -D warnings - - run: cargo clippy --examples --no-default-features --features your-backend -- -D warnings - - run: cargo clippy --examples --no-default-features --features your-backend,search -- -D warnings + - run: cargo clippy --examples --no-default-features --features no-backend -- -D warnings + - run: cargo clippy --examples --no-default-features --features no-backend,search -- -D warnings - run: cargo clippy --examples --no-default-features --features tuirs-crossterm -- -D warnings - run: cargo clippy --examples --no-default-features --features tuirs-crossterm,search -- -D warnings - run: cargo clippy --examples --no-default-features --features tuirs-termion -- -D warnings - run: cargo clippy --examples --no-default-features --features tuirs-termion,search -- -D warnings - - run: cargo clippy --examples --no-default-features --features tuirs-your-backend -- -D warnings - - run: cargo clippy --examples --no-default-features --features tuirs-your-backend,search -- -D warnings + - run: cargo clippy --examples --no-default-features --features tuirs-no-backend -- -D warnings + - run: cargo clippy --examples --no-default-features --features tuirs-no-backend,search -- -D warnings - run: cargo rustdoc --features=search -p tui-textarea -- -D warnings diff --git a/Cargo.toml b/Cargo.toml index 30d2f07..3561c81 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -25,14 +25,16 @@ include = [ [features] default = ["crossterm"] # Features to use ratatui -crossterm = ["dep:crossterm", "ratatui/crossterm"] -termion = ["dep:termion", "ratatui/termion"] -termwiz = ["dep:termwiz", "ratatui/termwiz"] -no-backend = ["dep:ratatui"] +ratatui = ["dep:ratatui"] +crossterm = ["ratatui", "dep:crossterm", "ratatui/crossterm"] +termion = ["ratatui", "dep:termion", "ratatui/termion"] +termwiz = ["ratatui", "dep:termwiz", "ratatui/termwiz"] +no-backend = ["ratatui"] # Features to use tui-rs -tuirs-crossterm = ["dep:crossterm-025", "tui/crossterm"] -tuirs-termion = ["dep:termion", "tui/termion"] -tuirs-no-backend = ["dep:tui"] +tuirs = ["dep:tui"] +tuirs-crossterm = ["tuirs", "dep:crossterm-025", "tui/crossterm"] +tuirs-termion = ["tuirs", "dep:termion", "tui/termion"] +tuirs-no-backend = ["tuirs"] # Other optional features search = ["dep:regex"] diff --git a/src/highlight.rs b/src/highlight.rs index f5de743..545f9a9 100644 --- a/src/highlight.rs +++ b/src/highlight.rs @@ -1,22 +1,13 @@ use crate::ratatui::style::Style; -#[cfg(any( - feature = "crossterm", - feature = "termion", - feature = "termwiz", - feature = "no-backend", -))] -use crate::ratatui::text::Line; use crate::ratatui::text::Span; -#[cfg(any( - feature = "tuirs-crossterm", - feature = "tuirs-termion", - feature = "tuirs-no-backend", -))] -use crate::ratatui::text::Spans as Line; use crate::util::{num_digits, spaces}; +#[cfg(feature = "ratatui")] +use ratatui::text::Line; use std::borrow::Cow; use std::cmp::Ordering; use std::iter; +#[cfg(feature = "tuirs")] +use tui::text::Spans as Line; use unicode_width::UnicodeWidthChar as _; enum Boundary { diff --git a/src/lib.rs b/src/lib.rs index 48e5fb5..c21aee5 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -4,19 +4,7 @@ #![cfg_attr(docsrs, feature(doc_cfg))] #![doc = include_str!("../README.md")] -#[cfg(all( - any( - feature = "crossterm", - feature = "termion", - feature = "termwiz", - feature = "no-backend", - ), - any( - feature = "tuirs-crossterm", - feature = "tuirs-termion", - feature = "tuirs-no-backend", - ), -))] +#[cfg(all(feature = "ratatui", feature = "tuirs"))] compile_error!("ratatui support and tui-rs support are exclussive. only one of them can be enabled at the same time. see https://github.com/rhysd/tui-textarea#installation"); mod cursor; @@ -31,19 +19,10 @@ mod util; mod widget; mod word; -#[cfg(any( - feature = "crossterm", - feature = "termion", - feature = "termwiz", - feature = "no-backend", -))] +#[cfg(feature = "ratatui")] #[allow(clippy::single_component_path_imports)] use ratatui; -#[cfg(any( - feature = "tuirs-crossterm", - feature = "tuirs-termion", - feature = "tuirs-no-backend", -))] +#[cfg(feature = "tuirs")] use tui as ratatui; #[cfg(feature = "crossterm")] diff --git a/src/textarea.rs b/src/textarea.rs index f72bf6e..2d4c620 100644 --- a/src/textarea.rs +++ b/src/textarea.rs @@ -4,19 +4,6 @@ use crate::history::{Edit, EditKind, History}; use crate::input::{Input, Key}; use crate::ratatui::layout::Alignment; use crate::ratatui::style::{Color, Modifier, Style}; -#[cfg(any( - feature = "crossterm", - feature = "termion", - feature = "termwiz", - feature = "no-backend", -))] -use crate::ratatui::text::Line; -#[cfg(any( - feature = "tuirs-crossterm", - feature = "tuirs-termion", - feature = "tuirs-no-backend", -))] -use crate::ratatui::text::Spans as Line; use crate::ratatui::widgets::{Block, Widget}; use crate::scroll::Scrolling; #[cfg(feature = "search")] @@ -24,6 +11,10 @@ use crate::search::Search; use crate::util::spaces; use crate::widget::{Renderer, Viewport}; use crate::word::{find_word_end_forward, find_word_start_backward}; +#[cfg(feature = "ratatui")] +use ratatui::text::Line; +#[cfg(feature = "tuirs")] +use tui::text::Spans as Line; use unicode_width::UnicodeWidthChar as _; /// A type to manage state of textarea.