make more use of anyhow

pull/10905/head
Sam Vente 6 months ago
parent a9a72174c1
commit 9cd6a26c5e
No known key found for this signature in database

@ -1,6 +1,5 @@
use std::fmt::Write; use std::fmt::Write;
use std::io::BufReader; use std::io::BufReader;
use std::num::ParseIntError;
use std::ops::Deref; use std::ops::Deref;
use crate::job::Job; use crate::job::Job;
@ -487,10 +486,7 @@ fn register_mark(
]; ];
register_val.extend(ranges_str); register_val.extend(ranges_str);
cx.editor cx.editor.registers.write(register_name, register_val)?;
.registers
.write(register_name, register_val)
.unwrap();
cx.editor cx.editor
.set_status(format!("Saved selection bookmark to [{}]", register_name)); .set_status(format!("Saved selection bookmark to [{}]", register_name));
@ -499,7 +495,7 @@ fn register_mark(
fn parse_mark_register_contents( fn parse_mark_register_contents(
registers_vals: Option<RegisterValues>, registers_vals: Option<RegisterValues>,
) -> Result<(DocumentId, usize, Selection), String> { ) -> anyhow::Result<(DocumentId, usize, Selection)> {
match registers_vals { match registers_vals {
Some(rv) => { Some(rv) => {
let mut rv_iter = rv.into_iter(); let mut rv_iter = rv.into_iter();
@ -509,14 +505,14 @@ fn parse_mark_register_contents(
.and_then(|c| Some(c.into_owned())) .and_then(|c| Some(c.into_owned()))
.and_then(|s| s.try_into().ok()) .and_then(|s| s.try_into().ok())
else { else {
return Err("Register did not contain valid document id".to_string()); return Err(anyhow!("Register did not contain valid document id"));
}; };
let Some(history_rev) = rv_iter let Some(history_rev) = rv_iter
.next() .next()
.and_then(|c| Some(c.into_owned())) .and_then(|c| Some(c.into_owned()))
.and_then(|s| s.parse().ok()) .and_then(|s| s.parse().ok())
else { else {
return Err("Register did not contain valid revision number".to_string()); return Err(anyhow!("Register did not contain valid revision number"));
}; };
let Ok(ranges) = rv_iter let Ok(ranges) = rv_iter
@ -552,7 +548,7 @@ fn parse_mark_register_contents(
.rev() .rev()
.collect::<Result<Vec<Range>, String>>() .collect::<Result<Vec<Range>, String>>()
else { else {
return Err("Some ranges in the register failed to parse!".to_string()); return Err(anyhow!("Some ranges in the register failed to parse!"));
}; };
let mut ranges_iter = ranges.into_iter(); let mut ranges_iter = ranges.into_iter();
@ -565,7 +561,7 @@ fn parse_mark_register_contents(
Ok((doc_id, history_rev, selection)) Ok((doc_id, history_rev, selection))
} }
None => Err("Register was empty".to_string()), None => Err(anyhow!("Register was empty")),
} }
} }
@ -584,9 +580,11 @@ fn goto_mark(
|s| s.as_ref().chars().next(), |s| s.as_ref().chars().next(),
) )
.unwrap_or('^'); .unwrap_or('^');
// use some helper functions to avoid making the borrow checker angry
let registers_vals = read_from_register(cx.editor, register_name); let registers_vals = read_from_register(cx.editor, register_name);
let (doc_id, history_rev, mut selection) = let (doc_id, history_rev, mut selection) = parse_mark_register_contents(registers_vals)?;
parse_mark_register_contents(registers_vals).unwrap();
cx.editor.switch(doc_id, Action::Replace); cx.editor.switch(doc_id, Action::Replace);
let (view, doc) = current!(cx.editor); let (view, doc) = current!(cx.editor);

Loading…
Cancel
Save