Don't rely on Range::is_empty to check for selection emptiness
This method returns true when `start > end`, so our `backspace` and `delete` implementations were subtly wrong because they always deleted one extra character for reversed selections.
This commit is contained in:
@@ -12,14 +12,11 @@ use display_map::*;
|
||||
use std::{cmp, ops::Range};
|
||||
|
||||
trait RangeExt<T> {
|
||||
fn sorted(&self) -> (T, T);
|
||||
fn sorted(&self) -> Range<T>;
|
||||
}
|
||||
|
||||
impl<T: Ord + Clone> RangeExt<T> for Range<T> {
|
||||
fn sorted(&self) -> (T, T) {
|
||||
(
|
||||
cmp::min(&self.start, &self.end).clone(),
|
||||
cmp::max(&self.start, &self.end).clone(),
|
||||
)
|
||||
fn sorted(&self) -> Self {
|
||||
cmp::min(&self.start, &self.end).clone()..cmp::max(&self.start, &self.end).clone()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user