Skip to content

Commit 403ea57

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 403ea57

File tree

5 files changed

+28
-8
lines changed

5 files changed

+28
-8
lines changed

internal/action/actions.go

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

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