diff --git a/crates/nu-cli/src/completions/command_completions.rs b/crates/nu-cli/src/completions/command_completions.rs index 77961a6278..891716663f 100644 --- a/crates/nu-cli/src/completions/command_completions.rs +++ b/crates/nu-cli/src/completions/command_completions.rs @@ -199,12 +199,19 @@ impl Completer for CommandCompletion { return subcommands; } + let config = working_set.get_config(); let commands = if matches!(self.flat_shape, nu_parser::FlatShape::External) || matches!(self.flat_shape, nu_parser::FlatShape::InternalCall) || ((span.end - span.start) == 0) { // we're in a gap or at a command - self.complete_commands(working_set, span, offset, true, options.match_algorithm) + self.complete_commands( + working_set, + span, + offset, + config.enable_external_completion, + options.match_algorithm, + ) } else { vec![] }; diff --git a/crates/nu-protocol/src/config.rs b/crates/nu-protocol/src/config.rs index 3d69c38a99..ad78daf614 100644 --- a/crates/nu-protocol/src/config.rs +++ b/crates/nu-protocol/src/config.rs @@ -76,6 +76,7 @@ pub struct Config { pub disable_table_indexes: bool, pub cd_with_abbreviations: bool, pub case_sensitive_completions: bool, + pub enable_external_completion: bool, } impl Default for Config { @@ -107,6 +108,7 @@ impl Default for Config { disable_table_indexes: false, cd_with_abbreviations: false, case_sensitive_completions: false, + enable_external_completion: true, } } } @@ -323,6 +325,13 @@ impl Value { eprintln!("$config.case_sensitive_completions is not a bool") } } + "enable_external_completion" => { + if let Ok(b) = value.as_bool() { + config.enable_external_completion = b; + } else { + eprintln!("$config.enable_external_completion is not a bool") + } + } x => { eprintln!("$config.{} is an unknown config setting", x) } diff --git a/docs/sample_config/default_config.nu b/docs/sample_config/default_config.nu index a77ef4afe1..1514d0442c 100644 --- a/docs/sample_config/default_config.nu +++ b/docs/sample_config/default_config.nu @@ -219,6 +219,7 @@ let-env config = { disable_table_indexes: false # set to true to remove the index column from tables cd_with_abbreviations: false # set to true to allow you to do things like cd s/o/f and nushell expand it to cd some/other/folder case_sensitive_completions: false # set to true to enable case-sensitive completions + enable_external_completion: true # set to false to prevent nushell looking into $env.PATH to find more suggestions, `false` recommended for WSL users as this look up my be very slow hooks: { pre_prompt: [{