diff --git a/Cargo.lock b/Cargo.lock index ac585d7..c1a7a02 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -43,7 +43,6 @@ dependencies = [ "predicates", "roff", "rstest", - "semver", "serde", "serde_json", "shell-words", diff --git a/Cargo.toml b/Cargo.toml index 6771f4e..b488bbe 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -27,7 +27,6 @@ num_cpus = "1.16" threadpool = "1.8" base64 = "0.22" natord = "1.0" -semver = "1.0" roff = "0.2" [dev-dependencies] diff --git a/src/completions/argc.xsh b/src/completions/argc.xsh index 9b9a46a..3bf4954 100644 --- a/src/completions/argc.xsh +++ b/src/completions/argc.xsh @@ -30,4 +30,8 @@ def _argc_completer(context): return result -_add_one_completer('argc', _argc_completer, 'start') +if 'ARGC_XONSH_SCRIPTS' not in __xonsh__.env: + __xonsh__.env['ARGC_XONSH_SCRIPTS'] = [] + +if 'argc' not in __xonsh__.completers: + _add_one_completer('argc', _argc_completer, 'start') diff --git a/src/completions/mod.rs b/src/completions/mod.rs index 1292d95..d61714c 100644 --- a/src/completions/mod.rs +++ b/src/completions/mod.rs @@ -1,8 +1,5 @@ use crate::Shell; -use semver::Version; -use std::env; - const BASH_SCRIPT: &str = include_str!("argc.bash"); const ELVISH_SCRIPT: &str = include_str!("argc.elv"); const FISH_SCRIPT: &str = include_str!("argc.fish"); @@ -30,19 +27,7 @@ pub fn generate_completions(shell: Shell, commands: &[String]) -> String { FISH_SCRIPT.replace("__COMMANDS__", &commands) } Shell::Generic => String::new(), - Shell::Nushell => { - if env::var("NU_VERSION") - .ok() - .and_then(|v| Version::parse(&v).ok()) - .map(|v| v < Version::new(0, 89, 0)) - .unwrap_or_default() - { - // https://github.com/nushell/nushell/pull/11289 - NUSHELL_SCRIPT.replace("...$args", "$args") - } else { - NUSHELL_SCRIPT.to_string() - } - } + Shell::Nushell => NUSHELL_SCRIPT.to_string(), Shell::Powershell => { let commands = commands .iter() @@ -52,13 +37,7 @@ pub fn generate_completions(shell: Shell, commands: &[String]) -> String { POWERSHELL_SCRIPT.replace("__COMMANDS__", &commands) } Shell::Xonsh => { - let scripts_env_var = "ARGC_XONSH_SCRIPTS"; - if env::var(scripts_env_var).is_ok() { - format!("__xonsh__.env['{scripts_env_var}'].extend({commands:?})") - } else { - let code = format!("__xonsh__.env['{scripts_env_var}'] = {commands:?}"); - format!("{XONSH_SCRIPT}\n{code}") - } + format!("{XONSH_SCRIPT}\n__xonsh__.env['ARGC_XONSH_SCRIPTS'].extend({commands:?})") } Shell::Zsh => { let commands = commands.join(" ");