Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-db/src/source_change.rs')
-rw-r--r--crates/ide-db/src/source_change.rs15
1 files changed, 6 insertions, 9 deletions
diff --git a/crates/ide-db/src/source_change.rs b/crates/ide-db/src/source_change.rs
index 1cc7be6813..04e62a8e91 100644
--- a/crates/ide-db/src/source_change.rs
+++ b/crates/ide-db/src/source_change.rs
@@ -237,27 +237,24 @@ impl SourceChangeBuilder {
/// Adds a tabstop snippet to place the cursor before `node`
pub fn add_tabstop_before(&mut self, _cap: SnippetCap, node: impl AstNode) {
assert!(node.syntax().parent().is_some());
-
- let snippet_builder = self.snippet_builder.get_or_insert(SnippetBuilder { places: vec![] });
- snippet_builder.places.push(PlaceSnippet::Before(node.syntax().clone()));
- self.source_change.is_snippet = true;
+ self.add_snippet(PlaceSnippet::Before(node.syntax().clone()));
}
/// Adds a tabstop snippet to place the cursor after `node`
pub fn add_tabstop_after(&mut self, _cap: SnippetCap, node: impl AstNode) {
assert!(node.syntax().parent().is_some());
-
- let snippet_builder = self.snippet_builder.get_or_insert(SnippetBuilder { places: vec![] });
- snippet_builder.places.push(PlaceSnippet::After(node.syntax().clone()));
- self.source_change.is_snippet = true;
+ self.add_snippet(PlaceSnippet::After(node.syntax().clone()));
}
/// Adds a snippet to move the cursor selected over `node`
pub fn add_placeholder_snippet(&mut self, _cap: SnippetCap, node: impl AstNode) {
assert!(node.syntax().parent().is_some());
+ self.add_snippet(PlaceSnippet::Over(node.syntax().clone()))
+ }
+ fn add_snippet(&mut self, snippet: PlaceSnippet) {
let snippet_builder = self.snippet_builder.get_or_insert(SnippetBuilder { places: vec![] });
- snippet_builder.places.push(PlaceSnippet::Over(node.syntax().clone()));
+ snippet_builder.places.push(snippet);
self.source_change.is_snippet = true;
}