From 334d266b7704419a6122b283a740c7baa36695b4 Mon Sep 17 00:00:00 2001 From: "Jeremy A. Kolb" Date: Thu, 4 Oct 2018 09:35:55 -0400 Subject: Simplify extend_single_word_in_comment --- crates/ra_editor/src/extend_selection.rs | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) (limited to 'crates/ra_editor/src/extend_selection.rs') diff --git a/crates/ra_editor/src/extend_selection.rs b/crates/ra_editor/src/extend_selection.rs index 5946824d8..a6cb1acf5 100644 --- a/crates/ra_editor/src/extend_selection.rs +++ b/crates/ra_editor/src/extend_selection.rs @@ -20,7 +20,7 @@ pub(crate) fn extend(root: SyntaxNodeRef, range: TextRange) -> Option LeafAtOffset::None => return None, LeafAtOffset::Single(l) => { if l.kind() == COMMENT { - extend_single_word_in_comment(l, range).unwrap_or_else(||l.range()) + extend_single_word_in_comment(l, offset).unwrap_or_else(||l.range()) } else { l.range() } @@ -42,22 +42,18 @@ pub(crate) fn extend(root: SyntaxNodeRef, range: TextRange) -> Option } } -fn extend_single_word_in_comment(leaf: SyntaxNodeRef, range: TextRange) -> Option { - let text : &str = leaf.leaf_text().unwrap(); - let cursor_position: u32 = (range.start() - leaf.range().start()).into(); +fn extend_single_word_in_comment(leaf: SyntaxNodeRef, offset: TextUnit) -> Option { + let text : &str = leaf.leaf_text()?; + let cursor_position: u32 = (offset - leaf.range().start()).into(); let (before, after) = text.split_at(cursor_position as usize); - let start_idx = before.rfind(char::is_whitespace); - let end_idx = after.find(char::is_whitespace); - - match (start_idx, end_idx) { - (Some(start), Some(end)) => { - let from : TextUnit = (start as u32 + 1).into(); - let to : TextUnit = (cursor_position + (end as u32)).into(); - Some(TextRange::from_to(from, to)) - }, - (_, _) => None - } + let start_idx = before.rfind(char::is_whitespace)?; + let end_idx = after.find(char::is_whitespace)?; + + let from : TextUnit = (start_idx as u32 + 1).into(); + let to : TextUnit = (cursor_position + (end_idx as u32)).into(); + + Some(TextRange::from_to(from, to)) } fn extend_ws(root: SyntaxNodeRef, ws: SyntaxNodeRef, offset: TextUnit) -> TextRange { -- cgit v1.2.3