Prefer keybinding with least modifiers when not in conflict mode

Agus Zubiaga created

Change summary

crates/editor/src/editor.rs | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)

Detailed changes

crates/editor/src/editor.rs 🔗

@@ -1608,6 +1608,7 @@ impl Editor {
     ) -> AcceptEditPredictionBinding {
         let key_context = self.key_context_internal(true, window, cx);
         let in_conflict = self.edit_prediction_in_conflict();
+
         AcceptEditPredictionBinding(
             window
                 .bindings_for_action_in_context(&AcceptEditPrediction, key_context)
@@ -1620,7 +1621,12 @@ impl Editor {
                             .map_or(false, |keystroke| keystroke.modifiers.modified())
                 })
                 .rev()
-                .next(),
+                .min_by_key(|binding| {
+                    binding
+                        .keystrokes()
+                        .first()
+                        .map_or(u8::MAX, |k| k.modifiers.number_of_modifiers())
+                }),
         )
     }