fix(cli): Don't crash on brief output

This commit is contained in:
Ed Page 2022-11-29 22:25:15 -06:00
parent 8b88f9f340
commit 2a6c8e9a3a

View file

@ -132,13 +132,9 @@ impl Report for PrintLong {
} }
fn print_brief_correction(msg: &Typo, palette: Palette) -> Result<(), std::io::Error> { fn print_brief_correction(msg: &Typo, palette: Palette) -> Result<(), std::io::Error> {
let line = String::from_utf8_lossy(msg.buffer.as_ref()); let start = String::from_utf8_lossy(&msg.buffer[0..msg.byte_offset]);
let line = line.replace('\t', " "); let column_number =
let column = unicode_segmentation::UnicodeSegmentation::graphemes( unicode_segmentation::UnicodeSegmentation::graphemes(start.as_ref(), true).count();
line.get(0..msg.byte_offset).unwrap(),
true,
)
.count();
match &msg.corrections { match &msg.corrections {
typos::Status::Valid => {} typos::Status::Valid => {}
typos::Status::Invalid => { typos::Status::Invalid => {
@ -148,7 +144,7 @@ fn print_brief_correction(msg: &Typo, palette: Palette) -> Result<(), std::io::E
"{}{}{}: {}", "{}{}{}: {}",
palette.info.paint(context_display(&msg.context)), palette.info.paint(context_display(&msg.context)),
palette.info.paint(divider), palette.info.paint(divider),
palette.info.paint(column), palette.info.paint(column_number),
palette palette
.strong .strong
.paint(format_args!("`{}` is disallowed:", msg.typo)), .paint(format_args!("`{}` is disallowed:", msg.typo)),
@ -161,7 +157,7 @@ fn print_brief_correction(msg: &Typo, palette: Palette) -> Result<(), std::io::E
"{}{}{}: {}", "{}{}{}: {}",
palette.info.paint(context_display(&msg.context)), palette.info.paint(context_display(&msg.context)),
palette.info.paint(divider), palette.info.paint(divider),
palette.info.paint(column), palette.info.paint(column_number),
palette.strong.paint(format_args!( palette.strong.paint(format_args!(
"`{}` -> {}", "`{}` -> {}",
msg.typo, msg.typo,