@ -266,6 +266,7 @@ impl MappableCommand {
change_selection_noyank , "Change selection (delete and enter insert mode, without yanking)" ,
change_selection_noyank , "Change selection (delete and enter insert mode, without yanking)" ,
collapse_selection , "Collapse selection onto a single cursor" ,
collapse_selection , "Collapse selection onto a single cursor" ,
flip_selections , "Flip selection cursor and anchor" ,
flip_selections , "Flip selection cursor and anchor" ,
ensure_selections_forward , "Ensure the selection is in forward direction" ,
insert_mode , "Insert before selection" ,
insert_mode , "Insert before selection" ,
append_mode , "Insert after selection (append)" ,
append_mode , "Insert after selection (append)" ,
command_mode , "Enter command mode" ,
command_mode , "Enter command mode" ,
@ -1904,7 +1905,21 @@ fn flip_selections(cx: &mut Context) {
let selection = doc
let selection = doc
. selection ( view . id )
. selection ( view . id )
. clone ( )
. clone ( )
. transform ( | range | Range ::new ( range . head , range . anchor ) ) ;
. transform ( | range | range . flip ( ) ) ;
doc . set_selection ( view . id , selection ) ;
}
fn ensure_selections_forward ( cx : & mut Context ) {
let ( view , doc ) = current ! ( cx . editor ) ;
let selection = doc
. selection ( view . id )
. clone ( )
. transform ( | r | match r . direction ( ) {
Direction ::Forward = > r ,
Direction ::Backward = > r . flip ( ) ,
} ) ;
doc . set_selection ( view . id , selection ) ;
doc . set_selection ( view . id , selection ) ;
}
}