mirror of
https://github.com/crate-ci/typos.git
synced 2026-10-17 17:45:10 +02:00
fix: Fix misalignment in report highlight and indent
Previous method misaligns highlights when there are double width asian characters ``` 39 | 한글 eglish | ^^^^^^ ``` This commit fixes the highlight to have correct alignment. ``` 39 | 한글 eglish | ^^^^^^ ``` `unicode-rs` crate is used by the Rust compiler [1]. [1]: https://github.com/rust-lang/rust/blob/34a6c9f26e2ce32cad0d71f5e342365b09f4d12c/compiler/rustc_errors/src/emitter.rs#L861
This commit is contained in:
Generated
+1
@@ -1576,6 +1576,7 @@ dependencies = [
|
||||
"typos-vars",
|
||||
"unicase",
|
||||
"unicode-segmentation",
|
||||
"unicode-width",
|
||||
"varcon-core",
|
||||
"yansi",
|
||||
]
|
||||
|
||||
@@ -91,6 +91,7 @@ encoding = "0.2"
|
||||
kstring = { version = "2.0.0", features = ["serde"] }
|
||||
typed-arena = "2.0.1"
|
||||
maplit = "1.0"
|
||||
unicode-width = "0.1.9"
|
||||
|
||||
[dev-dependencies]
|
||||
assert_fs = "1.0"
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
use std::io::{self, Write};
|
||||
use std::sync::atomic;
|
||||
|
||||
use unicode_width::UnicodeWidthStr;
|
||||
|
||||
use typos_cli::report::{Context, Message, Report, Typo};
|
||||
|
||||
#[derive(Copy, Clone, Debug)]
|
||||
@@ -218,8 +220,11 @@ fn print_long_correction(msg: &Typo, palette: Palette) -> Result<(), std::io::Er
|
||||
let line_num = context.line_num.to_string();
|
||||
let line_indent: String = itertools::repeat_n(" ", line_num.len()).collect();
|
||||
|
||||
let hl_indent: String = itertools::repeat_n(" ", column).collect();
|
||||
let hl: String = itertools::repeat_n("^", msg.typo.len()).collect();
|
||||
let visible_column = UnicodeWidthStr::width(start.as_ref());
|
||||
let visible_len = UnicodeWidthStr::width(msg.typo);
|
||||
|
||||
let hl_indent: String = itertools::repeat_n(" ", visible_column).collect();
|
||||
let hl: String = itertools::repeat_n("^", visible_len).collect();
|
||||
|
||||
writeln!(handle, "{} |", line_indent)?;
|
||||
writeln!(
|
||||
|
||||
Reference in New Issue
Block a user