mirror of
https://github.com/nushell/nushell.git
synced 2025-06-30 22:50:14 +02:00
Update config directly at assignment (#13332)
# Description Allows `Stack` to have a modified local `Config`, which is updated immediately when `$env.config` is assigned to. This means that even within a script, commands that come after `$env.config` changes will always see those changes in `Stack::get_config()`. Also fixed a lot of cases where `engine_state.get_config()` was used even when `Stack` was available. Closes #13324. # User-Facing Changes - Config changes apply immediately after the assignment is executed, rather than whenever config is read by a command that needs it. - Potentially slower performance when executing a lot of lines that change `$env.config` one after another. Recommended to get `$env.config` into a `mut` variable first and do modifications, then assign it back. - Much faster performance when executing a script that made modifications to `$env.config`, as the changes are only parsed once. # Tests + Formatting All passing. # After Submitting - [ ] release notes
This commit is contained in:
@ -70,8 +70,8 @@ impl Command for ToMd {
|
||||
let head = call.head;
|
||||
let pretty = call.has_flag(engine_state, stack, "pretty")?;
|
||||
let per_element = call.has_flag(engine_state, stack, "per-element")?;
|
||||
let config = engine_state.get_config();
|
||||
to_md(input, pretty, per_element, config, head)
|
||||
let config = stack.get_config(engine_state);
|
||||
to_md(input, pretty, per_element, &config, head)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -31,18 +31,19 @@ impl Command for ToText {
|
||||
fn run(
|
||||
&self,
|
||||
engine_state: &EngineState,
|
||||
_stack: &mut Stack,
|
||||
stack: &mut Stack,
|
||||
call: &Call,
|
||||
input: PipelineData,
|
||||
) -> Result<PipelineData, ShellError> {
|
||||
let span = call.head;
|
||||
let input = input.try_expand_range()?;
|
||||
let config = stack.get_config(engine_state);
|
||||
|
||||
match input {
|
||||
PipelineData::Empty => Ok(Value::string(String::new(), span)
|
||||
.into_pipeline_data_with_metadata(update_metadata(None))),
|
||||
PipelineData::Value(value, ..) => {
|
||||
let str = local_into_string(value, LINE_ENDING, engine_state.get_config());
|
||||
let str = local_into_string(value, LINE_ENDING, &config);
|
||||
Ok(
|
||||
Value::string(str, span)
|
||||
.into_pipeline_data_with_metadata(update_metadata(None)),
|
||||
@ -50,7 +51,6 @@ impl Command for ToText {
|
||||
}
|
||||
PipelineData::ListStream(stream, meta) => {
|
||||
let span = stream.span();
|
||||
let config = engine_state.get_config().clone();
|
||||
let iter = stream.into_inner().map(move |value| {
|
||||
let mut str = local_into_string(value, LINE_ENDING, &config);
|
||||
str.push_str(LINE_ENDING);
|
||||
|
Reference in New Issue
Block a user