Use saturating_sub() method instead of adhoc equivalent.
This commit is contained in:
parent
f582818387
commit
f95cb7f641
|
@ -326,7 +326,7 @@ impl Buffer {
|
|||
let l_start = self.text.line_to_char(pos.0);
|
||||
let l_end = self.text.line_to_char(pos.0 + 1);
|
||||
return (l_start + pos.1)
|
||||
.min(l_start.max(l_end - 1.min(l_end)))
|
||||
.min(l_start.max(l_end.saturating_sub(1)))
|
||||
.min(self.text.len_chars());
|
||||
} else {
|
||||
return self.text.len_chars();
|
||||
|
|
|
@ -148,7 +148,7 @@ pub trait LineFormatter {
|
|||
let block_slice = line.slice(block_start..block_end);
|
||||
let block_col_i = min(
|
||||
self.v2d_to_index(RopeGraphemes::new(&block_slice), (y, x), rounding),
|
||||
block_len - 1.min(block_len),
|
||||
block_len.saturating_sub(1),
|
||||
);
|
||||
col_i = block_start + block_col_i;
|
||||
|
||||
|
@ -184,10 +184,7 @@ pub trait LineFormatter {
|
|||
(RoundingBehavior::Floor, rounding),
|
||||
);
|
||||
let new_col_i = if (line_i + 1) < buf.line_count() || (block_i + 1) < block_count(&line) {
|
||||
min(
|
||||
block_range.0 + block_col_i,
|
||||
block_range.1 - 1.min(block_range.1),
|
||||
)
|
||||
min(block_range.0 + block_col_i, block_range.1.saturating_sub(1))
|
||||
} else {
|
||||
min(block_range.0 + block_col_i, block_range.1)
|
||||
};
|
||||
|
@ -232,12 +229,12 @@ pub fn find_good_break(slice: &RopeSlice, lower_limit: usize, char_idx: usize) -
|
|||
pub fn char_range_from_block_index(slice: &RopeSlice, block_idx: usize) -> (usize, usize) {
|
||||
let start = {
|
||||
let initial = LINE_BLOCK_LENGTH * block_idx;
|
||||
find_good_break(slice, initial - LINE_BLOCK_FUDGE.min(initial), initial)
|
||||
find_good_break(slice, initial.saturating_sub(LINE_BLOCK_FUDGE), initial)
|
||||
};
|
||||
|
||||
let end = {
|
||||
let initial = LINE_BLOCK_LENGTH * (block_idx + 1);
|
||||
find_good_break(slice, initial - LINE_BLOCK_FUDGE.min(initial), initial)
|
||||
find_good_break(slice, initial.saturating_sub(LINE_BLOCK_FUDGE), initial)
|
||||
};
|
||||
|
||||
(start, end)
|
||||
|
@ -255,7 +252,7 @@ pub fn block_index_and_range(slice: &RopeSlice, char_idx: usize) -> (usize, (usi
|
|||
|
||||
pub fn block_count(slice: &RopeSlice) -> usize {
|
||||
let char_count = slice.len_chars();
|
||||
let mut last_idx = (char_count - 1.min(char_count)) / LINE_BLOCK_LENGTH;
|
||||
let mut last_idx = char_count.saturating_sub(1) / LINE_BLOCK_LENGTH;
|
||||
|
||||
let range = char_range_from_block_index(slice, last_idx + 1);
|
||||
if range.0 < range.1 {
|
||||
|
|
|
@ -416,7 +416,7 @@ impl TermUI {
|
|||
// Jump to line!
|
||||
if !cancel {
|
||||
if let Ok(n) = line.parse::<usize>() {
|
||||
self.editor.jump_to_line(n - 1.min(n));
|
||||
self.editor.jump_to_line(n.saturating_sub(1));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -449,7 +449,7 @@ impl TermUI {
|
|||
};
|
||||
let pstring = format!("{}%", percentage);
|
||||
self.screen.draw(
|
||||
c2.1 - pstring.len().min(c2.1),
|
||||
c2.1.saturating_sub(pstring.len()),
|
||||
c1.0,
|
||||
&pstring[..],
|
||||
STYLE_INFO,
|
||||
|
@ -473,7 +473,7 @@ impl TermUI {
|
|||
nl, soft_tabs_str, editor.soft_tab_width as usize
|
||||
);
|
||||
self.screen
|
||||
.draw(c2.1 - 30.min(c2.1), c1.0, &info_line[..], STYLE_INFO);
|
||||
.draw(c2.1.saturating_sub(30), c1.0, &info_line[..], STYLE_INFO);
|
||||
|
||||
// Draw main text editing area
|
||||
self.draw_editor_text(editor, (c1.0 + 1, c1.1), c2);
|
||||
|
|
Loading…
Reference in New Issue
Block a user