diff options
-rw-r--r-- | helix-core/src/lib.rs | 3 | ||||
-rw-r--r-- | helix-core/src/line_ending.rs | 10 | ||||
-rw-r--r-- | helix-term/src/commands.rs | 22 |
3 files changed, 23 insertions, 12 deletions
diff --git a/helix-core/src/lib.rs b/helix-core/src/lib.rs index 3f6bea5a..c02d41f8 100644 --- a/helix-core/src/lib.rs +++ b/helix-core/src/lib.rs @@ -111,6 +111,7 @@ pub use diagnostic::Diagnostic; pub use state::State; pub use line_ending::{ - auto_detect_line_ending, rope_slice_to_line_ending, LineEnding, DEFAULT_LINE_ENDING, get_line_ending + auto_detect_line_ending, get_line_ending, rope_slice_to_line_ending, LineEnding, + DEFAULT_LINE_ENDING, }; pub use transaction::{Assoc, Change, ChangeSet, Operation, Transaction}; diff --git a/helix-core/src/line_ending.rs b/helix-core/src/line_ending.rs index 423f4b92..2cc5b5d8 100644 --- a/helix-core/src/line_ending.rs +++ b/helix-core/src/line_ending.rs @@ -95,12 +95,18 @@ pub fn auto_detect_line_ending(doc: &Rope) -> Option<LineEnding> { /// Returns the passed line's line ending, if any. pub fn get_line_ending(line: &RopeSlice) -> Option<LineEnding> { // Last character as str. - let g1 = line.slice(line.len_chars().saturating_sub(1)..).as_str().unwrap(); + let g1 = line + .slice(line.len_chars().saturating_sub(1)..) + .as_str() + .unwrap(); // Last two characters as str, or empty str if they're not contiguous. // It's fine to punt on the non-contiguous case, because Ropey guarantees // that CRLF is always contiguous. - let g2 = line.slice(line.len_chars().saturating_sub(2)..).as_str().unwrap_or(""); + let g2 = line + .slice(line.len_chars().saturating_sub(2)..) + .as_str() + .unwrap_or(""); // First check the two-character case for CRLF, then check the single-character case. str_to_line_ending(g2).or_else(|| str_to_line_ending(g1)) diff --git a/helix-term/src/commands.rs b/helix-term/src/commands.rs index d894a646..463869f6 100644 --- a/helix-term/src/commands.rs +++ b/helix-term/src/commands.rs @@ -1,11 +1,11 @@ use helix_core::{ - comment, coords_at_pos, find_first_non_whitespace_char, find_root, graphemes, indent, - match_brackets, + comment, coords_at_pos, find_first_non_whitespace_char, find_root, get_line_ending, graphemes, + indent, match_brackets, movement::{self, Direction}, object, pos_at_coords, regex::{self, Regex}, register::{self, Register, Registers}, - search, selection, Change, ChangeSet, LineEnding, Position, Range, Rope, RopeSlice, Selection, get_line_ending, + search, selection, Change, ChangeSet, LineEnding, Position, Range, Rope, RopeSlice, Selection, SmallVec, Tendril, Transaction, }; @@ -183,9 +183,11 @@ pub fn move_line_end(cx: &mut Context) { let text = doc.text(); let line = text.char_to_line(range.head); - let pos = text - .line_to_char(line + 1) - .saturating_sub(get_line_ending(&text.line(line)).map(|le| le.len_chars()).unwrap_or(0)); + let pos = text.line_to_char(line + 1).saturating_sub( + get_line_ending(&text.line(line)) + .map(|le| le.len_chars()) + .unwrap_or(0), + ); Range::new(pos, pos) }); @@ -606,9 +608,11 @@ pub fn extend_line_end(cx: &mut Context) { let text = doc.text(); let line = text.char_to_line(range.head); - let pos = text - .line_to_char(line + 1) - .saturating_sub(get_line_ending(&text.line(line)).map(|le| le.len_chars()).unwrap_or(0)); + let pos = text.line_to_char(line + 1).saturating_sub( + get_line_ending(&text.line(line)) + .map(|le| le.len_chars()) + .unwrap_or(0), + ); Range::new(range.anchor, pos) }); |