mirror of
https://github.com/jesseduffield/lazygit.git
synced 2026-09-10 07:36:27 -04:00
Add a forwardDeleteWord keybinding
Bound to alt-delete on Mac, and ctrl-delete on Windows and Linux.
This commit is contained in:
parent
976dbec9ff
commit
bfdea2bb4f
|
|
@ -639,6 +639,9 @@ keybinding:
|
|||
|
||||
# <a-backspace> on Mac
|
||||
backspaceWord: <c-backspace>
|
||||
|
||||
# <a-delete> on Mac
|
||||
forwardDeleteWord: <c-delete>
|
||||
optionMenu: <disabled>
|
||||
optionMenu-alt1: '?'
|
||||
select: <space>
|
||||
|
|
|
|||
|
|
@ -454,9 +454,10 @@ type KeybindingUniversalConfig struct {
|
|||
NextMatch string `yaml:"nextMatch"`
|
||||
PrevMatch string `yaml:"prevMatch"`
|
||||
StartSearch string `yaml:"startSearch"`
|
||||
MoveWordLeft string `yaml:"moveWordLeft"` // <a-left> on Mac
|
||||
MoveWordRight string `yaml:"moveWordRight"` // <a-right> on Mac
|
||||
BackspaceWord string `yaml:"backspaceWord"` // <a-backspace> on Mac
|
||||
MoveWordLeft string `yaml:"moveWordLeft"` // <a-left> on Mac
|
||||
MoveWordRight string `yaml:"moveWordRight"` // <a-right> on Mac
|
||||
BackspaceWord string `yaml:"backspaceWord"` // <a-backspace> on Mac
|
||||
ForwardDeleteWord string `yaml:"forwardDeleteWord"` // <a-delete> on Mac
|
||||
OptionMenu string `yaml:"optionMenu"`
|
||||
OptionMenuAlt1 string `yaml:"optionMenu-alt1"`
|
||||
Select string `yaml:"select"`
|
||||
|
|
@ -939,6 +940,7 @@ func GetDefaultConfigForPlatform(platform string) *UserConfig {
|
|||
MoveWordLeft: platformKeyBinding(platform, map[string]string{"darwin": "<a-left>"}, "<c-left>"),
|
||||
MoveWordRight: platformKeyBinding(platform, map[string]string{"darwin": "<a-right>"}, "<c-right>"),
|
||||
BackspaceWord: platformKeyBinding(platform, map[string]string{"darwin": "<a-backspace>"}, "<c-backspace>"),
|
||||
ForwardDeleteWord: platformKeyBinding(platform, map[string]string{"darwin": "<a-delete>"}, "<c-delete>"),
|
||||
OptionMenu: "<disabled>",
|
||||
OptionMenuAlt1: "?",
|
||||
Select: "<space>",
|
||||
|
|
|
|||
|
|
@ -23,9 +23,10 @@ func (f EditorFunc) Edit(v *View, key Key) bool {
|
|||
var DefaultEditor Editor = EditorFunc(SimpleEditor)
|
||||
|
||||
var (
|
||||
moveWordLeftKeybinding = NewKey(KeyArrowLeft, "", ModCtrl)
|
||||
moveWordRightKeybinding = NewKey(KeyArrowRight, "", ModCtrl)
|
||||
backspaceWordKeybinding = NewKey(KeyBackspace, "", ModCtrl)
|
||||
moveWordLeftKeybinding = NewKey(KeyArrowLeft, "", ModCtrl)
|
||||
moveWordRightKeybinding = NewKey(KeyArrowRight, "", ModCtrl)
|
||||
backspaceWordKeybinding = NewKey(KeyBackspace, "", ModCtrl)
|
||||
forwardDeleteWordKeybinding = NewKey(KeyDelete, "", ModCtrl)
|
||||
)
|
||||
|
||||
// SimpleEditor is used as the default gocui editor.
|
||||
|
|
@ -34,6 +35,9 @@ func SimpleEditor(v *View, key Key) bool {
|
|||
case key.Equals(backspaceWordKeybinding),
|
||||
key.Equals(NewKeyStrMod("w", ModCtrl)):
|
||||
v.TextArea.BackSpaceWord()
|
||||
case key.Equals(forwardDeleteWordKeybinding),
|
||||
key.Equals(NewKeyStrMod("d", ModAlt)):
|
||||
v.TextArea.ForwardDeleteWord()
|
||||
case key.Equals(NewKeyName(KeyBackspace)):
|
||||
v.TextArea.BackSpaceChar()
|
||||
case key.Equals(NewKeyStrMod("d", ModCtrl)),
|
||||
|
|
|
|||
|
|
@ -1630,8 +1630,9 @@ func (g *Gui) Snapshot() string {
|
|||
return builder.String()
|
||||
}
|
||||
|
||||
func (g *Gui) SetEditKeybindings(moveWordLeft, moveWordRight, backspaceWord Key) {
|
||||
func (g *Gui) SetEditKeybindings(moveWordLeft, moveWordRight, backspaceWord, forwardDeleteWord Key) {
|
||||
moveWordLeftKeybinding = moveWordLeft
|
||||
moveWordRightKeybinding = moveWordRight
|
||||
backspaceWordKeybinding = backspaceWord
|
||||
forwardDeleteWordKeybinding = forwardDeleteWord
|
||||
}
|
||||
|
|
|
|||
|
|
@ -340,13 +340,12 @@ func (self *TextArea) MoveLeftWord() {
|
|||
self.cursor = self.newCursorForMoveLeftWord()
|
||||
}
|
||||
|
||||
func (self *TextArea) MoveRightWord() {
|
||||
func (self *TextArea) newCursorForMoveRightWord() int {
|
||||
if self.atEnd() {
|
||||
return
|
||||
return self.cursor
|
||||
}
|
||||
if self.atLineEnd() {
|
||||
self.cursor++
|
||||
return
|
||||
return self.cursor + 1
|
||||
}
|
||||
|
||||
cellCursor := self.contentCursorToCellCursor(self.cursor)
|
||||
|
|
@ -364,7 +363,11 @@ func (self *TextArea) MoveRightWord() {
|
|||
}
|
||||
}
|
||||
|
||||
self.cursor = self.cellCursorToContentCursor(cellCursor)
|
||||
return self.cellCursorToContentCursor(cellCursor)
|
||||
}
|
||||
|
||||
func (self *TextArea) MoveRightWord() {
|
||||
self.cursor = self.newCursorForMoveRightWord()
|
||||
}
|
||||
|
||||
func (self *TextArea) MoveCursorUp() {
|
||||
|
|
@ -559,6 +562,20 @@ func (self *TextArea) BackSpaceWord() {
|
|||
self.updateCells()
|
||||
}
|
||||
|
||||
func (self *TextArea) ForwardDeleteWord() {
|
||||
newCursor := self.newCursorForMoveRightWord()
|
||||
if newCursor == self.cursor {
|
||||
return
|
||||
}
|
||||
|
||||
clipboard := self.content[self.cursor:newCursor]
|
||||
if clipboard != "\n" {
|
||||
self.clipboard = clipboard
|
||||
}
|
||||
self.content = self.content[:self.cursor] + self.content[newCursor:]
|
||||
self.updateCells()
|
||||
}
|
||||
|
||||
func (self *TextArea) Yank() {
|
||||
self.TypeString(self.clipboard)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -478,6 +478,7 @@ func (gui *Gui) onUserConfigLoaded() error {
|
|||
config.GetValidatedKeyBindingKey(userConfig.Keybinding.Universal.MoveWordLeft),
|
||||
config.GetValidatedKeyBindingKey(userConfig.Keybinding.Universal.MoveWordRight),
|
||||
config.GetValidatedKeyBindingKey(userConfig.Keybinding.Universal.BackspaceWord),
|
||||
config.GetValidatedKeyBindingKey(userConfig.Keybinding.Universal.ForwardDeleteWord),
|
||||
)
|
||||
|
||||
gui.g.ShowListFooter = userConfig.Gui.ShowListFooter
|
||||
|
|
|
|||
|
|
@ -1425,6 +1425,11 @@
|
|||
"description": "\u003ca-backspace\u003e on Mac",
|
||||
"default": "\u003cc-backspace\u003e"
|
||||
},
|
||||
"forwardDeleteWord": {
|
||||
"type": "string",
|
||||
"description": "\u003ca-delete\u003e on Mac",
|
||||
"default": "\u003cc-delete\u003e"
|
||||
},
|
||||
"optionMenu": {
|
||||
"type": "string",
|
||||
"default": "\u003cdisabled\u003e"
|
||||
|
|
|
|||
Loading…
Reference in a new issue