in src/main.rs [401:455]
fn ask_about_patch<'a>(
&mut self,
path: &Path,
old: &'a str,
start_line: usize,
end_line: usize,
new: &'a str,
) -> Result<bool> {
terminal::clear();
let diffs = self.diffs_to_print(old, new);
if diffs.is_empty() {
return Ok(false);
}
if start_line == end_line {
println!("{}:{}", path.to_string_lossy(), start_line);
} else {
println!("{}:{}-{}", path.to_string_lossy(), start_line, end_line);
}
self.print_diff(&diffs);
let mut user_input = if self.yes_to_all {
'y'
} else {
prompt(
"Accept change (y = yes [default], \
n = no, e = edit, A = yes to all, E = yes+edit, q = quit)?\n",
"yneAEq",
Some('y'),
)?
};
if user_input == 'A' {
self.yes_to_all = true;
user_input = 'y';
}
match user_input {
'y' => {
self.save(path, new)?;
Ok(true)
}
'E' => {
self.save(path, new)?;
run_editor(path, start_line)?;
Ok(true)
}
'e' => {
self.record_change(path.to_owned());
run_editor(path, start_line)?;
Ok(true)
}
'q' => exit(0),
'n' => Ok(false),
_ => unreachable!(),
}
}