mirror of
https://github.com/clap-rs/clap
synced 2025-03-05 07:47:40 +00:00
Reorganize optionally depending on term_width
This commit is contained in:
parent
3224e2e1cd
commit
ac97edde90
3 changed files with 116 additions and 114 deletions
|
@ -25,7 +25,6 @@ unicode-width = "0.1.4"
|
||||||
textwrap = "0.8.0"
|
textwrap = "0.8.0"
|
||||||
strsim = { version = "0.6.0", optional = true }
|
strsim = { version = "0.6.0", optional = true }
|
||||||
ansi_term = { version = "0.9.0", optional = true }
|
ansi_term = { version = "0.9.0", optional = true }
|
||||||
term_size = { version = "0.3.0", optional = true }
|
|
||||||
yaml-rust = { version = "0.3.5", optional = true }
|
yaml-rust = { version = "0.3.5", optional = true }
|
||||||
clippy = { version = "~0.0.131", optional = true }
|
clippy = { version = "~0.0.131", optional = true }
|
||||||
atty = { version = "0.2.2", optional = true }
|
atty = { version = "0.2.2", optional = true }
|
||||||
|
@ -37,10 +36,10 @@ lazy_static = "0.2"
|
||||||
version-sync = "0.3"
|
version-sync = "0.3"
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
default = ["suggestions", "color", "wrap_help", "vec_map"]
|
default = ["suggestions", "color", "vec_map"]
|
||||||
suggestions = ["strsim"]
|
suggestions = ["strsim"]
|
||||||
color = ["ansi_term", "atty"]
|
color = ["ansi_term", "atty"]
|
||||||
wrap_help = ["term_size"]
|
wrap_help = ["textwrap/term_size"]
|
||||||
yaml = ["yaml-rust"]
|
yaml = ["yaml-rust"]
|
||||||
unstable = [] # for building with unstable clap features (doesn't require nightly Rust) (currently none)
|
unstable = [] # for building with unstable clap features (doesn't require nightly Rust) (currently none)
|
||||||
nightly = [] # for building with unstable Rust features (currently none)
|
nightly = [] # for building with unstable Rust features (currently none)
|
||||||
|
|
|
@ -16,13 +16,16 @@ use map::VecMap;
|
||||||
|
|
||||||
// Third Party
|
// Third Party
|
||||||
use unicode_width::UnicodeWidthStr;
|
use unicode_width::UnicodeWidthStr;
|
||||||
#[cfg(feature = "wrap_help")]
|
|
||||||
use term_size;
|
|
||||||
use textwrap;
|
use textwrap;
|
||||||
|
|
||||||
|
#[cfg(feature = "wrap_help")]
|
||||||
|
fn term_width() -> usize {
|
||||||
|
textwrap::termwidth()
|
||||||
|
}
|
||||||
|
|
||||||
#[cfg(not(feature = "wrap_help"))]
|
#[cfg(not(feature = "wrap_help"))]
|
||||||
mod term_size {
|
fn term_width() -> usize {
|
||||||
pub fn dimensions() -> Option<(usize, usize)> { None }
|
120
|
||||||
}
|
}
|
||||||
|
|
||||||
fn str_width(s: &str) -> usize { UnicodeWidthStr::width(s) }
|
fn str_width(s: &str) -> usize { UnicodeWidthStr::width(s) }
|
||||||
|
@ -101,7 +104,7 @@ impl<'a> Help<'a> {
|
||||||
term_w: match term_w {
|
term_w: match term_w {
|
||||||
Some(width) => if width == 0 { usize::MAX } else { width },
|
Some(width) => if width == 0 { usize::MAX } else { width },
|
||||||
None => {
|
None => {
|
||||||
cmp::min(term_size::dimensions().map_or(120, |(w, _)| w),
|
cmp::min(term_width(),
|
||||||
match max_w {
|
match max_w {
|
||||||
None | Some(0) => usize::MAX,
|
None | Some(0) => usize::MAX,
|
||||||
Some(mw) => mw,
|
Some(mw) => mw,
|
||||||
|
|
|
@ -329,7 +329,9 @@
|
||||||
//!
|
//!
|
||||||
//! * `suggestions`: Turns on the `Did you mean '--myoption'?` feature for when users make typos. (builds dependency `strsim`)
|
//! * `suggestions`: Turns on the `Did you mean '--myoption'?` feature for when users make typos. (builds dependency `strsim`)
|
||||||
//! * `color`: Turns on colored error messages. This feature only works on non-Windows OSs. (builds dependency `ansi-term` and `atty`)
|
//! * `color`: Turns on colored error messages. This feature only works on non-Windows OSs. (builds dependency `ansi-term` and `atty`)
|
||||||
//! * `wrap_help`: Wraps the help at the actual terminal width when available, instead of 120 chracters. (builds dependency `term_size`)
|
//! * `wrap_help`: Wraps the help at the actual terminal width when
|
||||||
|
//! available, instead of 120 chracters. (builds dependency `textwrap`
|
||||||
|
//! with feature `term_size`)
|
||||||
//!
|
//!
|
||||||
//! To disable these, add this to your `Cargo.toml`:
|
//! To disable these, add this to your `Cargo.toml`:
|
||||||
//!
|
//!
|
||||||
|
@ -541,8 +543,6 @@ extern crate unicode_width;
|
||||||
extern crate bitflags;
|
extern crate bitflags;
|
||||||
#[cfg(feature = "vec_map")]
|
#[cfg(feature = "vec_map")]
|
||||||
extern crate vec_map;
|
extern crate vec_map;
|
||||||
#[cfg(feature = "wrap_help")]
|
|
||||||
extern crate term_size;
|
|
||||||
extern crate textwrap;
|
extern crate textwrap;
|
||||||
#[cfg(feature = "color")]
|
#[cfg(feature = "color")]
|
||||||
extern crate atty;
|
extern crate atty;
|
||||||
|
|
Loading…
Add table
Reference in a new issue