mirror of
https://github.com/nushell/nushell.git
synced 2025-03-26 23:36:20 +01:00
Fix the way the output of table
is printed in print()
(#12895)
# Description Forgot that I fixed this already on my branch, but when printing without a display output hook, the implicit call to `table` gets its output mangled with newlines (since #12774). This happens when running `nu -c` or a script file. Here's that fix in one PR so it can be merged easily. # Tests + Formatting - 🟢 `toolkit fmt` - 🟢 `toolkit clippy` - 🟢 `toolkit test` - 🟢 `toolkit test stdlib`
This commit is contained in:
parent
8adf3406e5
commit
59f7c523fa
@ -543,16 +543,15 @@ impl PipelineData {
|
||||
if let Some(decl_id) = engine_state.table_decl_id {
|
||||
let command = engine_state.get_decl(decl_id);
|
||||
if command.get_block_id().is_some() {
|
||||
self.write_all_and_flush(engine_state, no_newline, to_stderr)?;
|
||||
self.write_all_and_flush(engine_state, no_newline, to_stderr)
|
||||
} else {
|
||||
let call = Call::new(Span::new(0, 0));
|
||||
let table = command.run(engine_state, stack, &call, self)?;
|
||||
table.write_all_and_flush(engine_state, no_newline, to_stderr)?;
|
||||
table.write_all_and_flush(engine_state, no_newline, to_stderr)
|
||||
}
|
||||
} else {
|
||||
self.write_all_and_flush(engine_state, no_newline, to_stderr)?;
|
||||
self.write_all_and_flush(engine_state, no_newline, to_stderr)
|
||||
}
|
||||
Ok(None)
|
||||
}
|
||||
}
|
||||
|
||||
@ -561,27 +560,32 @@ impl PipelineData {
|
||||
engine_state: &EngineState,
|
||||
no_newline: bool,
|
||||
to_stderr: bool,
|
||||
) -> Result<(), ShellError> {
|
||||
let config = engine_state.get_config();
|
||||
for item in self {
|
||||
let mut out = if let Value::Error { error, .. } = item {
|
||||
return Err(*error);
|
||||
} else {
|
||||
item.to_expanded_string("\n", config)
|
||||
};
|
||||
) -> Result<Option<ExitStatus>, ShellError> {
|
||||
if let PipelineData::ByteStream(stream, ..) = self {
|
||||
// Copy ByteStreams directly
|
||||
stream.print(to_stderr)
|
||||
} else {
|
||||
let config = engine_state.get_config();
|
||||
for item in self {
|
||||
let mut out = if let Value::Error { error, .. } = item {
|
||||
return Err(*error);
|
||||
} else {
|
||||
item.to_expanded_string("\n", config)
|
||||
};
|
||||
|
||||
if !no_newline {
|
||||
out.push('\n');
|
||||
if !no_newline {
|
||||
out.push('\n');
|
||||
}
|
||||
|
||||
if to_stderr {
|
||||
stderr_write_all_and_flush(out)?
|
||||
} else {
|
||||
stdout_write_all_and_flush(out)?
|
||||
}
|
||||
}
|
||||
|
||||
if to_stderr {
|
||||
stderr_write_all_and_flush(out)?
|
||||
} else {
|
||||
stdout_write_all_and_flush(out)?
|
||||
}
|
||||
Ok(None)
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user