mirror of
https://github.com/nushell/nushell
synced 2024-11-10 07:04:13 +00:00
Fix overflow table display in command documentation (#13526)
# Description Check and set table width beforehand. Closes #13520. # User-Facing Changes Before: ```plain ❯ help net cmd1 network Usage: > net cmd1 Flags: -h, --help - Display the help message for this command Input/output types: ╭───┬─────────┬─────────────────────────────────────────────────────────╮ │ # │ input │ output │ ├───┼─────────┼─────────────────────────────────────────────────────────┤ │ 0 │ nothing │ table<name: string, description: string, mac: string, │ │ │ │ ips: table<type: string, addr: string, prefix: int>, │ │ │ │ flags: record<is_up: bool, is_broadcast: bool, │ │ │ │ is_loopback: bool, is_point_to_point: bool, │ │ │ │ is_multicast: bool>> │ ╰───┴─────────┴─────────────────────────────────────────────────────────╯ ``` After: ```plain ❯ help net cmd1 network Usage: > net cmd1 Flags: -h, --help - Display the help message for this command Input/output types: ╭───┬─────────┬───────────────────────────────────────────────────────╮ │ # │ input │ output │ ├───┼─────────┼───────────────────────────────────────────────────────┤ │ 0 │ nothing │ table<name: string, description: string, mac: string, │ │ │ │ ips: table<type: string, addr: string, prefix: int>, │ │ │ │ flags: record<is_up: bool, is_broadcast: bool, │ │ │ │ is_loopback: bool, is_point_to_point: bool, │ │ │ │ is_multicast: bool>> │ ╰───┴─────────┴───────────────────────────────────────────────────────╯ ``` # Tests + Formatting - [x] `cargo fmt --all -- --check` to check standard code formatting (`cargo fmt --all` applies these changes) - [x] `cargo clippy --workspace -- -D warnings -D clippy::unwrap_used` to check that you're using the standard code style - [x] `cargo test --workspace` to check that all tests pass (on Windows make sure to [enable developer mode](https://learn.microsoft.com/en-us/windows/apps/get-started/developer-mode-features-and-debugging)) - [x] `cargo run -- -c "use toolkit.nu; toolkit test stdlib"` to run the tests for the standard library # After Submitting - [x] Bug fix, no doc update.
This commit is contained in:
parent
f4c0d9d45b
commit
20b53067cd
3 changed files with 37 additions and 2 deletions
1
Cargo.lock
generated
1
Cargo.lock
generated
|
@ -3157,6 +3157,7 @@ dependencies = [
|
|||
"nu-path",
|
||||
"nu-protocol",
|
||||
"nu-utils",
|
||||
"terminal_size",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
|
@ -16,6 +16,7 @@ nu-path = { path = "../nu-path", version = "0.96.2" }
|
|||
nu-glob = { path = "../nu-glob", version = "0.96.2" }
|
||||
nu-utils = { path = "../nu-utils", version = "0.96.2" }
|
||||
log = { workspace = true }
|
||||
terminal_size = { workspace = true }
|
||||
|
||||
[features]
|
||||
plugin = []
|
||||
plugin = []
|
||||
|
|
|
@ -7,6 +7,7 @@ use nu_protocol::{
|
|||
Spanned, SyntaxShape, Type, Value,
|
||||
};
|
||||
use std::{collections::HashMap, fmt::Write};
|
||||
use terminal_size::{Height, Width};
|
||||
|
||||
pub fn get_full_help(
|
||||
command: &dyn Command,
|
||||
|
@ -234,6 +235,14 @@ fn get_documentation(
|
|||
}
|
||||
}
|
||||
|
||||
fn get_term_width() -> usize {
|
||||
if let Some((Width(w), Height(_))) = terminal_size::terminal_size() {
|
||||
w as usize
|
||||
} else {
|
||||
80
|
||||
}
|
||||
}
|
||||
|
||||
if !is_parser_keyword && !sig.input_output_types.is_empty() {
|
||||
if let Some(decl_id) = engine_state.find_decl(b"table", &[]) {
|
||||
// FIXME: we may want to make this the span of the help command in the future
|
||||
|
@ -256,7 +265,18 @@ fn get_documentation(
|
|||
&Call {
|
||||
decl_id,
|
||||
head: span,
|
||||
arguments: vec![],
|
||||
arguments: vec![Argument::Named((
|
||||
Spanned {
|
||||
item: "width".to_string(),
|
||||
span: Span::unknown(),
|
||||
},
|
||||
None,
|
||||
Some(Expression::new_unknown(
|
||||
Expr::Int(get_term_width() as i64 - 2), // padding, see below
|
||||
Span::unknown(),
|
||||
Type::Int,
|
||||
)),
|
||||
))],
|
||||
parser_info: HashMap::new(),
|
||||
},
|
||||
PipelineData::Value(Value::list(vals, span), None),
|
||||
|
@ -334,6 +354,19 @@ fn get_documentation(
|
|||
None,
|
||||
))
|
||||
}
|
||||
table_call.add_named((
|
||||
Spanned {
|
||||
item: "expand".to_string(),
|
||||
span: Span::unknown(),
|
||||
},
|
||||
None,
|
||||
Some(Expression::new_unknown(
|
||||
Expr::Int(get_term_width() as i64 - 2),
|
||||
Span::unknown(),
|
||||
Type::Int,
|
||||
)),
|
||||
));
|
||||
|
||||
let table = engine_state
|
||||
.find_decl("table".as_bytes(), &[])
|
||||
.and_then(|decl_id| {
|
||||
|
|
Loading…
Reference in a new issue