rhysd / tui-textarea

Simple yet powerful multi-line text editor widget for ratatui and tui-rs
https://crates.io/crates/tui-textarea
MIT License
323 stars 61 forks source link

drop tui support #30

Closed pm100 closed 11 months ago

pm100 commented 11 months ago

since tui is now basically dead, textarea should drop support for it and only support ratatui. Why? because new features are being added to ratatui and textarea cannot take advantage of them without getting very messy.

See https://github.com/rhysd/tui-textarea/pull/29

joshka commented 11 months ago

As I understand it, @rhysd's plan is to make ratatui the default in the next release and then deprecate tui in a release after that.

rhysd commented 11 months ago

Why?

Because I don't want to remove compatibility as much as possible until there is some strong motivation. tui.rs was going inactive, but it is still usable and actually many apps are depending on it. When I think it is hard to maintain support for both crates, I would start to consider dropping tui-rs support.

new features are being added to ratatui and textarea cannot take advantage of them

We can add implementation to tui-textarea only when ratatui-* feature gates are enabled.

impl TextArea {
    #[cfg(any(feature = "ratatui-crossterm", feature = "ratatui-termion", feature = "ratatui-your-backend"))]
    pub fn do_something(self) {
        // Do something with features only available with ratatui
    }
}
pm100 commented 11 months ago

OK I will resumbit #29 using the ratatui masked feature. Please can you look at the PR sooner rather than later (once I have resubmitted it) . It took 5 months to get my last request through and my work on gitui was blocked for that duration.

rhysd commented 11 months ago

@pm100 Yes, that's great. Please ping me by @rhysd mention when my response is not good.

pm100 commented 11 months ago

@rhysd - ok the PR is there now. But I had a change of plan. The actual mask code was fairly simple - in fact just a one liner. But it got very complicated with all the feature combinations and fiddly due to it having to be in several places. So instead I just lifted the one liner from ratatuis mask code and dropped it in to replace_tabs, which is really 'prepare_line_for_display'. So now it works with tui and ratatui

rhysd commented 11 months ago

Let me close this for now since there is no strong motivation to do this.