Skip to content

Commit bb9fd3e

Browse files
committed
Action: Add DeleteSelections action and update default keybindings
This commit introduces a new `DeleteSelections` action that acts as a global check for active selections across all cursors. If any selections exist, it deletes them and returns true, preventing subsequent chained actions from executing. The default keybindings for `deleteWordLeft` (Alt-Backspace/Ctrl-H) have been updated to chain `DeleteSelections|DeleteWordLeft`. This ensures predictable behavior in multi-cursor scenarios: If any cursor has a selection, the "Delete Selection" behavior takes precedence over directional word deletion, preventing accidental deletion of adjacent text when selections are present.
1 parent 5e6bc3a commit bb9fd3e

5 files changed

Lines changed: 30 additions & 8 deletions

File tree

internal/action/actions.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -828,6 +828,26 @@ func (h *BufPane) Delete() bool {
828828
return true
829829
}
830830

831+
// DeleteSelections checks for any active cursors selections and
832+
// if there are it deletes them and returns true. It returns false when
833+
// there are no selections.
834+
func (h *BufPane) DeleteSelections() bool {
835+
hasSelection := false
836+
for _, c := range h.Buf.GetCursors() {
837+
if c.HasSelection() {
838+
c.DeleteSelection()
839+
c.ResetSelection()
840+
hasSelection = true
841+
}
842+
}
843+
844+
if hasSelection {
845+
h.Relocate()
846+
return true
847+
}
848+
return false
849+
}
850+
831851
// IndentSelection indents the current selection
832852
func (h *BufPane) IndentSelection() bool {
833853
if h.Cursor.HasSelection() {

internal/action/bufpane.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -762,6 +762,7 @@ var BufKeyActions = map[string]BufKeyAction{
762762
"InsertNewline": (*BufPane).InsertNewline,
763763
"Backspace": (*BufPane).Backspace,
764764
"Delete": (*BufPane).Delete,
765+
"DeleteSelections": (*BufPane).DeleteSelections,
765766
"InsertTab": (*BufPane).InsertTab,
766767
"Save": (*BufPane).Save,
767768
"SaveAll": (*BufPane).SaveAll,

internal/action/defaults_darwin.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@ var bufdefaults = map[string]string{
3131
"CtrlH": "Backspace",
3232
"Backspace": "Backspace",
3333
"OldBackspace": "Backspace",
34-
"Alt-CtrlH": "DeleteWordLeft",
35-
"Alt-Backspace": "DeleteWordLeft",
34+
"Alt-CtrlH": "DeleteSelections|DeleteWordLeft",
35+
"Alt-Backspace": "DeleteSelections|DeleteWordLeft",
3636
"Tab": "Autocomplete|IndentSelection|InsertTab",
3737
"Backtab": "CycleAutocompleteBack|OutdentSelection|OutdentLine",
3838
"Ctrl-o": "OpenFile",

internal/action/defaults_other.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@ var bufdefaults = map[string]string{
3434
"CtrlH": "Backspace",
3535
"Backspace": "Backspace",
3636
"OldBackspace": "Backspace",
37-
"Alt-CtrlH": "DeleteWordLeft",
38-
"Alt-Backspace": "DeleteWordLeft",
37+
"Alt-CtrlH": "DeleteSelections|DeleteWordLeft",
38+
"Alt-Backspace": "DeleteSelections|DeleteWordLeft",
3939
"Tab": "Autocomplete|IndentSelection|InsertTab",
4040
"Backtab": "CycleAutocompleteBack|OutdentSelection|OutdentLine",
4141
"Ctrl-o": "OpenFile",

runtime/help/keybindings.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,7 @@ SelectToParagraphNext
252252
InsertNewline
253253
Backspace
254254
Delete
255+
DeleteSelections
255256
InsertTab
256257
Save
257258
SaveAll
@@ -559,8 +560,8 @@ conventions for text editing defaults.
559560
"Enter": "InsertNewline",
560561
"Ctrl-h": "Backspace",
561562
"Backspace": "Backspace",
562-
"Alt-CtrlH": "DeleteWordLeft",
563-
"Alt-Backspace": "DeleteWordLeft",
563+
"Alt-CtrlH": "DeleteSelections|DeleteWordLeft",
564+
"Alt-Backspace": "DeleteSelections|DeleteWordLeft",
564565
"Tab": "Autocomplete|IndentSelection|InsertTab",
565566
"Backtab": "OutdentSelection|OutdentLine",
566567
"Ctrl-o": "OpenFile",
@@ -693,8 +694,8 @@ are given below:
693694
"CtrlH": "Backspace",
694695
"Backspace": "Backspace",
695696
"OldBackspace": "Backspace",
696-
"Alt-CtrlH": "DeleteWordLeft",
697-
"Alt-Backspace": "DeleteWordLeft",
697+
"Alt-CtrlH": "DeleteSelections|DeleteWordLeft",
698+
"Alt-Backspace": "DeleteSelections|DeleteWordLeft",
698699
"Tab": "CommandComplete",
699700
"Backtab": "CycleAutocompleteBack",
700701
"Ctrl-z": "Undo",

0 commit comments

Comments
 (0)