on master help sign in
Enhance :toggle to support cycling numbers (#7877)
commit48eb0d47925586a9dadea577fad607776631b4ab authorAlex Vinyals <alevinval@gmail.com> dateWed 9 Aug 2023, 03:56 (3 years ago) parent294aa66
1 file changed+17−2
helix-term/src/commands/typed.rs+17−2
helix-term/src/commands/typed.rs+17−2
@@ -1856,14 +1856,29 @@ fn toggle_option(
18561856 .to_string(),
18571857 )
18581858 }
1859− Value::Null | Value::Object(_) | Value::Array(_) | Value::Number(_) => {
1859+ Value::Number(ref value) => {
1860+ ensure!(
1861+ args.len() > 2,
1862+ "Bad arguments. For number configurations use: `:toggle key val1 val2 ...`",
1863+ );
1864+
1865+ Value::Number(
1866+ args[1..]
1867+ .iter()
1868+ .skip_while(|&e| value.to_string() != *e.to_string())
1869+ .nth(1)
1870+ .unwrap_or_else(|| &args[1])
1871+ .parse()?,
1872+ )
1873+ }
1874+ Value::Null | Value::Object(_) | Value::Array(_) => {
18601875 anyhow::bail!("Configuration {key} does not support toggle yet")
18611876 }
18621877 };
18631878
18641879 let status = format!("'{key}' is now set to {value}");
18651880 let config = serde_json::from_value(config)
1866− .map_err(|_| anyhow::anyhow!("Could not parse field: `{:?}`", &args))?;
1881+ .map_err(|err| anyhow::anyhow!("Cannot parse `{:?}`, {}", &args, err))?;
18671882
18681883 cx.editor
18691884 .config_events