From 4aa632761f1db5f18338c9bd568156c0259b9252 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Fri, 11 Jan 2019 14:57:19 +0300 Subject: make on dot typed actually work --- crates/ra_ide_api_light/src/assists.rs | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) (limited to 'crates/ra_ide_api_light/src/assists.rs') diff --git a/crates/ra_ide_api_light/src/assists.rs b/crates/ra_ide_api_light/src/assists.rs index 83eabfc85..3495ad967 100644 --- a/crates/ra_ide_api_light/src/assists.rs +++ b/crates/ra_ide_api_light/src/assists.rs @@ -15,10 +15,11 @@ use ra_text_edit::{TextEdit, TextEditBuilder}; use ra_syntax::{ Direction, SyntaxNode, TextUnit, TextRange, SourceFile, AstNode, algo::{find_leaf_at_offset, find_node_at_offset, find_covering_node, LeafAtOffset}, - ast::{self, AstToken}, }; use itertools::Itertools; +use crate::formatting::leading_indent; + pub use self::{ flip_comma::flip_comma, add_derive::add_derive, @@ -165,7 +166,7 @@ impl AssistBuilder { } fn replace_node_and_indent(&mut self, node: &SyntaxNode, replace_with: impl Into) { let mut replace_with = replace_with.into(); - if let Some(indent) = calc_indent(node) { + if let Some(indent) = leading_indent(node) { replace_with = reindent(&replace_with, indent) } self.replace(node.range(), replace_with) @@ -182,12 +183,6 @@ impl AssistBuilder { } } -fn calc_indent(node: &SyntaxNode) -> Option<&str> { - let prev = node.prev_sibling()?; - let ws_text = ast::Whitespace::cast(prev)?.text(); - ws_text.rfind('\n').map(|pos| &ws_text[pos + 1..]) -} - fn reindent(text: &str, indent: &str) -> String { let indent = format!("\n{}", indent); text.lines().intersperse(&indent).collect() -- cgit v1.2.3