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_start = self.text.line_to_char(pos.0);
|
||||||
let l_end = self.text.line_to_char(pos.0 + 1);
|
let l_end = self.text.line_to_char(pos.0 + 1);
|
||||||
return (l_start + pos.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());
|
.min(self.text.len_chars());
|
||||||
} else {
|
} else {
|
||||||
return self.text.len_chars();
|
return self.text.len_chars();
|
||||||
|
|
|
@ -148,7 +148,7 @@ pub trait LineFormatter {
|
||||||
let block_slice = line.slice(block_start..block_end);
|
let block_slice = line.slice(block_start..block_end);
|
||||||
let block_col_i = min(
|
let block_col_i = min(
|
||||||
self.v2d_to_index(RopeGraphemes::new(&block_slice), (y, x), rounding),
|
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;
|
col_i = block_start + block_col_i;
|
||||||
|
|
||||||
|
@ -184,10 +184,7 @@ pub trait LineFormatter {
|
||||||
(RoundingBehavior::Floor, rounding),
|
(RoundingBehavior::Floor, rounding),
|
||||||
);
|
);
|
||||||
let new_col_i = if (line_i + 1) < buf.line_count() || (block_i + 1) < block_count(&line) {
|
let new_col_i = if (line_i + 1) < buf.line_count() || (block_i + 1) < block_count(&line) {
|
||||||
min(
|
min(block_range.0 + block_col_i, block_range.1.saturating_sub(1))
|
||||||
block_range.0 + block_col_i,
|
|
||||||
block_range.1 - 1.min(block_range.1),
|
|
||||||
)
|
|
||||||
} else {
|
} else {
|
||||||
min(block_range.0 + block_col_i, block_range.1)
|
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) {
|
pub fn char_range_from_block_index(slice: &RopeSlice, block_idx: usize) -> (usize, usize) {
|
||||||
let start = {
|
let start = {
|
||||||
let initial = LINE_BLOCK_LENGTH * block_idx;
|
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 end = {
|
||||||
let initial = LINE_BLOCK_LENGTH * (block_idx + 1);
|
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)
|
(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 {
|
pub fn block_count(slice: &RopeSlice) -> usize {
|
||||||
let char_count = slice.len_chars();
|
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);
|
let range = char_range_from_block_index(slice, last_idx + 1);
|
||||||
if range.0 < range.1 {
|
if range.0 < range.1 {
|
||||||
|
|
|
@ -416,7 +416,7 @@ impl TermUI {
|
||||||
// Jump to line!
|
// Jump to line!
|
||||||
if !cancel {
|
if !cancel {
|
||||||
if let Ok(n) = line.parse::<usize>() {
|
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);
|
let pstring = format!("{}%", percentage);
|
||||||
self.screen.draw(
|
self.screen.draw(
|
||||||
c2.1 - pstring.len().min(c2.1),
|
c2.1.saturating_sub(pstring.len()),
|
||||||
c1.0,
|
c1.0,
|
||||||
&pstring[..],
|
&pstring[..],
|
||||||
STYLE_INFO,
|
STYLE_INFO,
|
||||||
|
@ -473,7 +473,7 @@ impl TermUI {
|
||||||
nl, soft_tabs_str, editor.soft_tab_width as usize
|
nl, soft_tabs_str, editor.soft_tab_width as usize
|
||||||
);
|
);
|
||||||
self.screen
|
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
|
// Draw main text editing area
|
||||||
self.draw_editor_text(editor, (c1.0 + 1, c1.1), c2);
|
self.draw_editor_text(editor, (c1.0 + 1, c1.1), c2);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user