mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-04-23 12:18:51 +02:00
For custom commands it is useful to select an earlier command and have it copied to the prompt for further editing. This can be done by hitting 'e' now. For other types of suggestion panels we don't enable this behavior, as you can't create arbitrary new items there that don't already exist as a suggestion.
103 lines
2.4 KiB
Go
103 lines
2.4 KiB
Go
package components
|
|
|
|
type PromptDriver struct {
|
|
t *TestDriver
|
|
hasCheckedTitle bool
|
|
}
|
|
|
|
func (self *PromptDriver) getViewDriver() *ViewDriver {
|
|
return self.t.Views().Confirmation()
|
|
}
|
|
|
|
// asserts that the popup has the expected title
|
|
func (self *PromptDriver) Title(expected *TextMatcher) *PromptDriver {
|
|
self.getViewDriver().Title(expected)
|
|
|
|
self.hasCheckedTitle = true
|
|
|
|
return self
|
|
}
|
|
|
|
// asserts on the text initially present in the prompt
|
|
func (self *PromptDriver) InitialText(expected *TextMatcher) *PromptDriver {
|
|
self.getViewDriver().Content(expected)
|
|
|
|
return self
|
|
}
|
|
|
|
func (self *PromptDriver) Type(value string) *PromptDriver {
|
|
self.t.typeContent(value)
|
|
|
|
return self
|
|
}
|
|
|
|
func (self *PromptDriver) Clear() *PromptDriver {
|
|
self.t.press(ClearKey)
|
|
|
|
return self
|
|
}
|
|
|
|
func (self *PromptDriver) Confirm() {
|
|
self.checkNecessaryChecksCompleted()
|
|
|
|
self.getViewDriver().PressEnter()
|
|
}
|
|
|
|
func (self *PromptDriver) Cancel() {
|
|
self.checkNecessaryChecksCompleted()
|
|
|
|
self.getViewDriver().PressEscape()
|
|
}
|
|
|
|
func (self *PromptDriver) checkNecessaryChecksCompleted() {
|
|
if !self.hasCheckedTitle {
|
|
self.t.Fail("You must check the title of a prompt popup by calling Title() before calling Confirm()/Cancel().")
|
|
}
|
|
}
|
|
|
|
func (self *PromptDriver) SuggestionLines(matchers ...*TextMatcher) *PromptDriver {
|
|
self.t.Views().Suggestions().Lines(matchers...)
|
|
|
|
return self
|
|
}
|
|
|
|
func (self *PromptDriver) SuggestionTopLines(matchers ...*TextMatcher) *PromptDriver {
|
|
self.t.Views().Suggestions().TopLines(matchers...)
|
|
|
|
return self
|
|
}
|
|
|
|
func (self *PromptDriver) ConfirmFirstSuggestion() {
|
|
self.t.press(self.t.keys.Universal.TogglePanel)
|
|
self.t.Views().Suggestions().
|
|
IsFocused().
|
|
SelectedLineIdx(0).
|
|
PressEnter()
|
|
}
|
|
|
|
func (self *PromptDriver) ConfirmSuggestion(matcher *TextMatcher) {
|
|
self.t.press(self.t.keys.Universal.TogglePanel)
|
|
self.t.Views().Suggestions().
|
|
IsFocused().
|
|
NavigateToLine(matcher).
|
|
PressEnter()
|
|
}
|
|
|
|
func (self *PromptDriver) DeleteSuggestion(matcher *TextMatcher) *PromptDriver {
|
|
self.t.press(self.t.keys.Universal.TogglePanel)
|
|
self.t.Views().Suggestions().
|
|
IsFocused().
|
|
NavigateToLine(matcher)
|
|
self.t.press(self.t.keys.Universal.Remove)
|
|
return self
|
|
}
|
|
|
|
func (self *PromptDriver) EditSuggestion(matcher *TextMatcher) *PromptDriver {
|
|
self.t.press(self.t.keys.Universal.TogglePanel)
|
|
self.t.Views().Suggestions().
|
|
IsFocused().
|
|
NavigateToLine(matcher)
|
|
self.t.press(self.t.keys.Universal.Edit)
|
|
return self
|
|
}
|