diff --git a/helix-term/src/commands.rs b/helix-term/src/commands.rs index 628fd8fb..c9c8e6a9 100644 --- a/helix-term/src/commands.rs +++ b/helix-term/src/commands.rs @@ -3770,12 +3770,15 @@ fn expand_selection(cx: &mut Context) { let text = doc.text().slice(..); let current_selection = doc.selection(view.id); + let selection = object::expand_selection(syntax, text, current_selection.clone()); - // save current selection so it can be restored using shrink_selection - view.object_selections.push(current_selection.clone()); + // check if selection is different from the last one + if *current_selection != selection { + // save current selection so it can be restored using shrink_selection + view.object_selections.push(current_selection.clone()); - let selection = object::expand_selection(syntax, text, current_selection.clone()); - doc.set_selection(view.id, selection); + doc.set_selection(view.id, selection); + } } }; motion(cx.editor);