mirror of
https://github.com/nushell/nushell.git
synced 2025-08-10 10:38:07 +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:
@ -1,3 +1,5 @@
|
||||
use std::sync::Arc;
|
||||
|
||||
use nu_cmd_base::input_handler::{operate, CmdArgument};
|
||||
use nu_engine::command_prelude::*;
|
||||
use nu_protocol::{into_code, Config};
|
||||
@ -7,7 +9,7 @@ use num_format::ToFormattedString;
|
||||
struct Arguments {
|
||||
decimals_value: Option<i64>,
|
||||
cell_paths: Option<Vec<CellPath>>,
|
||||
config: Config,
|
||||
config: Arc<Config>,
|
||||
}
|
||||
|
||||
impl CmdArgument for Arguments {
|
||||
@ -174,7 +176,7 @@ fn string_helper(
|
||||
})
|
||||
}
|
||||
} else {
|
||||
let config = engine_state.get_config().clone();
|
||||
let config = stack.get_config(engine_state);
|
||||
let args = Arguments {
|
||||
decimals_value,
|
||||
cell_paths,
|
||||
|
Reference in New Issue
Block a user