@@ -237,27 +237,24 @@ impl SourceChangeBuilder {
237237 /// Adds a tabstop snippet to place the cursor before `node`
238238 pub fn add_tabstop_before ( & mut self , _cap : SnippetCap , node : impl AstNode ) {
239239 assert ! ( node. syntax( ) . parent( ) . is_some( ) ) ;
240-
241- let snippet_builder = self . snippet_builder . get_or_insert ( SnippetBuilder { places : vec ! [ ] } ) ;
242- snippet_builder. places . push ( PlaceSnippet :: Before ( node. syntax ( ) . clone ( ) ) ) ;
243- self . source_change . is_snippet = true ;
240+ self . add_snippet ( PlaceSnippet :: Before ( node. syntax ( ) . clone ( ) ) ) ;
244241 }
245242
246243 /// Adds a tabstop snippet to place the cursor after `node`
247244 pub fn add_tabstop_after ( & mut self , _cap : SnippetCap , node : impl AstNode ) {
248245 assert ! ( node. syntax( ) . parent( ) . is_some( ) ) ;
249-
250- let snippet_builder = self . snippet_builder . get_or_insert ( SnippetBuilder { places : vec ! [ ] } ) ;
251- snippet_builder. places . push ( PlaceSnippet :: After ( node. syntax ( ) . clone ( ) ) ) ;
252- self . source_change . is_snippet = true ;
246+ self . add_snippet ( PlaceSnippet :: After ( node. syntax ( ) . clone ( ) ) ) ;
253247 }
254248
255249 /// Adds a snippet to move the cursor selected over `node`
256250 pub fn add_placeholder_snippet ( & mut self , _cap : SnippetCap , node : impl AstNode ) {
257251 assert ! ( node. syntax( ) . parent( ) . is_some( ) ) ;
252+ self . add_snippet ( PlaceSnippet :: Over ( node. syntax ( ) . clone ( ) ) )
253+ }
258254
255+ fn add_snippet ( & mut self , snippet : PlaceSnippet ) {
259256 let snippet_builder = self . snippet_builder . get_or_insert ( SnippetBuilder { places : vec ! [ ] } ) ;
260- snippet_builder. places . push ( PlaceSnippet :: Over ( node . syntax ( ) . clone ( ) ) ) ;
257+ snippet_builder. places . push ( snippet ) ;
261258 self . source_change . is_snippet = true ;
262259 }
263260
0 commit comments