Original commit: 6d3fe6472d
This commit is contained in:
Danilo Guanabara 2020-03-18 17:29:45 -03:00 committed by GitHub
parent cd31d690b3
commit cac0dfc0c3

View File

@ -277,24 +277,6 @@ impl<'a> CursorNavigation<'a> {
Self::next_valid_text_location(line, previous_line, previous_column, line_end) Self::next_valid_text_location(line, previous_line, previous_column, line_end)
} }
/// Calculates the next position of the cursor when navigating right.
fn step_forward(&mut self, position:TextLocation, jumping_words:bool) -> TextLocation {
if jumping_words {
self.next_word_position(&position)
} else {
self.next_char_position(&position)
}.unwrap_or(position)
}
/// Calculates the previous position of the cursor when navigating left.
fn step_backwards(&mut self, position:TextLocation, jumping_words:bool) -> TextLocation {
if jumping_words {
self.prev_word_position(&position)
} else {
self.prev_char_position(&position)
}.unwrap_or(position)
}
/// New position of cursor at `position` after applying `step`. /// New position of cursor at `position` after applying `step`.
fn new_position(&mut self, position: TextLocation, step:Step) -> TextLocation { fn new_position(&mut self, position: TextLocation, step:Step) -> TextLocation {
match step { match step {
@ -718,24 +700,23 @@ mod test {
let content = "first sentence\r\nthis is a second sentence\r\nlast sentence\n"; let content = "first sentence\r\nthis is a second sentence\r\nlast sentence\n";
let content = &mut TextFieldContent::new(content,&mock_properties()); let content = &mut TextFieldContent::new(content,&mock_properties());
let selecting = false; let selecting = false;
let jumping_words = true; let mut navigation = CursorNavigation{content,selecting};
let mut navigation = CursorNavigation{content,selecting,jumping_words};
let mut location = TextLocation::at_document_begin(); let mut location = TextLocation::at_document_begin();
location = navigation.step_forward(location); location = navigation.next_word_position(&location).unwrap();
assert_eq!(location, TextLocation{line:0, column:5}); assert_eq!(location, TextLocation{line:0, column:5});
location = navigation.step_forward(location); location = navigation.next_word_position(&location).unwrap();
assert_eq!(location, TextLocation{line:0, column:14}); assert_eq!(location, TextLocation{line:0, column:14});
location = navigation.step_forward(location); location = navigation.next_word_position(&location).unwrap();
assert_eq!(location, TextLocation{line:1, column:0}); assert_eq!(location, TextLocation{line:1, column:0});
location = navigation.step_forward(location); location = navigation.next_word_position(&location).unwrap();
assert_eq!(location, TextLocation{line:1, column:4}); assert_eq!(location, TextLocation{line:1, column:4});
location = navigation.step_backwards(location); location = navigation.prev_word_position(&location).unwrap();
assert_eq!(location, TextLocation{line:1, column:0}); assert_eq!(location, TextLocation{line:1, column:0});
location = navigation.step_backwards(location); location = navigation.prev_word_position(&location).unwrap();
assert_eq!(location, TextLocation{line:0, column:14}); assert_eq!(location, TextLocation{line:0, column:14});
location = navigation.step_backwards(location); location = navigation.prev_word_position(&location).unwrap();
assert_eq!(location, TextLocation{line:0, column:6}); assert_eq!(location, TextLocation{line:0, column:6});
location = navigation.step_backwards(location); location = navigation.prev_word_position(&location).unwrap();
assert_eq!(location, TextLocation::at_document_begin()); assert_eq!(location, TextLocation::at_document_begin());
} }