diff --git a/crates/nu-cli/src/completions.rs b/crates/nu-cli/src/completions.rs index 7891ec9ac5..7c5d25b2aa 100644 --- a/crates/nu-cli/src/completions.rs +++ b/crates/nu-cli/src/completions.rs @@ -12,11 +12,15 @@ const SEP: char = std::path::MAIN_SEPARATOR; #[derive(Clone)] pub struct NuCompleter { engine_state: EngineState, + config: Option, } impl NuCompleter { - pub fn new(engine_state: EngineState) -> Self { - Self { engine_state } + pub fn new(engine_state: EngineState, config: Option) -> Self { + Self { + engine_state, + config, + } } fn external_command_completion(&self, prefix: &str) -> Vec { @@ -235,14 +239,19 @@ impl NuCompleter { let mut stack = Stack::new(); // Set up our initial config to start from - stack.vars.insert( - CONFIG_VARIABLE_ID, - Value::Record { - cols: vec![], - vals: vec![], - span: Span { start: 0, end: 0 }, - }, - ); + if let Some(conf) = &self.config { + stack.vars.insert(CONFIG_VARIABLE_ID, conf.clone()); + } else { + stack.vars.insert( + CONFIG_VARIABLE_ID, + Value::Record { + cols: vec![], + vals: vec![], + span: Span { start: 0, end: 0 }, + }, + ); + } + let result = eval_block( &self.engine_state, &mut stack, diff --git a/src/repl.rs b/src/repl.rs index fe0103d076..ef91589559 100644 --- a/src/repl.rs +++ b/src/repl.rs @@ -138,7 +138,10 @@ pub(crate) fn evaluate(engine_state: &mut EngineState) -> Result<()> { .with_validator(Box::new(NuValidator { engine_state: engine_state.clone(), })) - .with_completer(Box::new(NuCompleter::new(engine_state.clone()))) + .with_completer(Box::new(NuCompleter::new( + engine_state.clone(), + stack.vars.get(&CONFIG_VARIABLE_ID).cloned(), + ))) .with_quick_completions(config.quick_completions) .with_ansi_colors(config.use_ansi_coloring);