From 5326a051176d30060e60a8c8d6e718c9ca8a32d7 Mon Sep 17 00:00:00 2001 From: Ivan Tham Date: Sun, 12 Dec 2021 21:32:55 +0800 Subject: [PATCH] Improve macro error handling --- helix-term/src/commands.rs | 26 ++++++++++---------------- 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/helix-term/src/commands.rs b/helix-term/src/commands.rs index 7b1235f81..e3944cd75 100644 --- a/helix-term/src/commands.rs +++ b/helix-term/src/commands.rs @@ -6031,23 +6031,17 @@ fn record_macro(cx: &mut Context) { fn play_macro(cx: &mut Context) { let reg = cx.register.unwrap_or('@'); - let keys = match cx - .editor - .registers - .get(reg) - .and_then(|reg| reg.read().get(0)) - .context("Register empty") - .and_then(|s| { - s.split_whitespace() - .map(str::parse::) - .collect::, _>>() - .context("Failed to parse macro") - }) { - Ok(keys) => keys, - Err(e) => { - cx.editor.set_error(format!("{}", e)); - return; + let keys: Vec = if let Some([keys]) = cx.editor.registers.read(reg) { + match keys.split_whitespace().map(str::parse).collect() { + Ok(keys) => keys, + Err(err) => { + cx.editor.set_error(format!("Invalid macro: {}", err)); + return; + } } + } else { + cx.editor.set_error(format!("Register [{}] empty", reg)); + return; }; let count = cx.count();