Improve macro error handling

pull/1387/head
Ivan Tham 3 years ago committed by Blaž Hrastnik
parent c7a59e24e6
commit 5326a05117

@ -6031,23 +6031,17 @@ fn record_macro(cx: &mut Context) {
fn play_macro(cx: &mut Context) { fn play_macro(cx: &mut Context) {
let reg = cx.register.unwrap_or('@'); let reg = cx.register.unwrap_or('@');
let keys = match cx let keys: Vec<KeyEvent> = if let Some([keys]) = cx.editor.registers.read(reg) {
.editor match keys.split_whitespace().map(str::parse).collect() {
.registers Ok(keys) => keys,
.get(reg) Err(err) => {
.and_then(|reg| reg.read().get(0)) cx.editor.set_error(format!("Invalid macro: {}", err));
.context("Register empty") return;
.and_then(|s| { }
s.split_whitespace()
.map(str::parse::<KeyEvent>)
.collect::<Result<Vec<_>, _>>()
.context("Failed to parse macro")
}) {
Ok(keys) => keys,
Err(e) => {
cx.editor.set_error(format!("{}", e));
return;
} }
} else {
cx.editor.set_error(format!("Register [{}] empty", reg));
return;
}; };
let count = cx.count(); let count = cx.count();

Loading…
Cancel
Save