1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2025-04-27 12:32:37 +02:00

standardise getting selected item

This commit is contained in:
Jesse Duffield 2020-08-16 17:45:12 +10:00
parent c9ae54a8c8
commit ed4574bda9
7 changed files with 67 additions and 88 deletions

View File

@ -46,17 +46,11 @@ func (gui *Gui) currentDiffTerminals() []string {
names := []string{}
switch currentView.Name() {
case "files":
// not supporting files for now
// file, err := gui.getSelectedFile()
// if err == nil {
// names = append(names, file.Name)
// }
// not supporting files for now
case "commitFiles":
// not supporting commit files for now
// file := gui.getSelectedCommitFile()
// if file != nil {
// names = append(names, file.Name)
// }
case "commits":
var commit *commands.Commit
switch gui.getCommitsView().Context {

View File

@ -5,11 +5,8 @@ import (
)
func (gui *Gui) handleCreateDiscardMenu(g *gocui.Gui, v *gocui.View) error {
file, err := gui.getSelectedFile()
if err != nil {
if err != gui.Errors.ErrNoFiles {
return err
}
file := gui.getSelectedFile()
if file == nil {
return nil
}

View File

@ -19,13 +19,13 @@ import (
// list panel functions
func (gui *Gui) getSelectedFile() (*commands.File, error) {
func (gui *Gui) getSelectedFile() *commands.File {
selectedLine := gui.State.Panels.Files.SelectedLine
if selectedLine == -1 {
return &commands.File{}, gui.Errors.ErrNoFiles
return &commands.File{}
}
return gui.State.Files[selectedLine], nil
return gui.State.Files[selectedLine]
}
func (gui *Gui) selectFile(alreadySelected bool) error {
@ -35,11 +35,8 @@ func (gui *Gui) selectFile(alreadySelected bool) error {
return gui.renderDiff()
}
file, err := gui.getSelectedFile()
if err != nil {
if err != gui.Errors.ErrNoFiles {
return err
}
file := gui.getSelectedFile()
if file == nil {
gui.State.SplitMainPanel = false
gui.getMainView().Title = ""
return gui.newStringTask("main", gui.Tr.SLocalize("NoChangedFiles"))
@ -95,7 +92,7 @@ func (gui *Gui) refreshFiles() error {
gui.State.RefreshingFilesMutex.Unlock()
}()
selectedFile, _ := gui.getSelectedFile()
selectedFile := gui.getSelectedFile()
filesView := gui.getFilesView()
if filesView == nil {
@ -111,8 +108,8 @@ func (gui *Gui) refreshFiles() error {
gui.renderDisplayStrings(filesView, displayStrings)
if g.CurrentView() == filesView || (g.CurrentView() == gui.getMainView() && g.CurrentView().Context == "merging") {
newSelectedFile, _ := gui.getSelectedFile()
alreadySelected := newSelectedFile.Name == selectedFile.Name
newSelectedFile := gui.getSelectedFile()
alreadySelected := selectedFile != nil && newSelectedFile != nil && newSelectedFile.Name == selectedFile.Name
return gui.selectFile(alreadySelected)
}
return nil
@ -146,10 +143,11 @@ func (gui *Gui) trackedFiles() []*commands.File {
}
func (gui *Gui) stageSelectedFile(g *gocui.Gui) error {
file, err := gui.getSelectedFile()
if err != nil {
return err
file := gui.getSelectedFile()
if file == nil {
return nil
}
return gui.GitCommand.StageFile(file.Name)
}
@ -158,13 +156,11 @@ func (gui *Gui) handleEnterFile(g *gocui.Gui, v *gocui.View) error {
}
func (gui *Gui) enterFile(forceSecondaryFocused bool, selectedLineIdx int) error {
file, err := gui.getSelectedFile()
if err != nil {
if err != gui.Errors.ErrNoFiles {
return err
}
file := gui.getSelectedFile()
if file == nil {
return nil
}
if file.HasInlineMergeConflicts {
return gui.handleSwitchToMerge()
}
@ -178,12 +174,9 @@ func (gui *Gui) enterFile(forceSecondaryFocused bool, selectedLineIdx int) error
}
func (gui *Gui) handleFilePress() error {
file, err := gui.getSelectedFile()
if err != nil {
if err == gui.Errors.ErrNoFiles {
return nil
}
return err
file := gui.getSelectedFile()
if file == nil {
return nil
}
if file.HasInlineMergeConflicts {
@ -191,12 +184,13 @@ func (gui *Gui) handleFilePress() error {
}
if file.HasUnstagedChanges {
err = gui.GitCommand.StageFile(file.Name)
if err := gui.GitCommand.StageFile(file.Name); err != nil {
return gui.surfaceError(err)
}
} else {
err = gui.GitCommand.UnStageFile(file.Name, file.Tracked)
}
if err != nil {
return gui.surfaceError(err)
if err := gui.GitCommand.UnStageFile(file.Name, file.Tracked); err != nil {
return gui.surfaceError(err)
}
}
if err := gui.refreshSidePanels(refreshOptions{scope: []int{FILES}}); err != nil {
@ -242,9 +236,9 @@ func (gui *Gui) handleStageAll(g *gocui.Gui, v *gocui.View) error {
}
func (gui *Gui) handleIgnoreFile(g *gocui.Gui, v *gocui.View) error {
file, err := gui.getSelectedFile()
if err != nil {
return gui.surfaceError(err)
file := gui.getSelectedFile()
if file == nil {
return nil
}
if file.Tracked {
@ -395,18 +389,18 @@ func (gui *Gui) editFile(filename string) error {
}
func (gui *Gui) handleFileEdit(g *gocui.Gui, v *gocui.View) error {
file, err := gui.getSelectedFile()
if err != nil {
return gui.surfaceError(err)
file := gui.getSelectedFile()
if file == nil {
return nil
}
return gui.editFile(file.Name)
}
func (gui *Gui) handleFileOpen(g *gocui.Gui, v *gocui.View) error {
file, err := gui.getSelectedFile()
if err != nil {
return gui.surfaceError(err)
file := gui.getSelectedFile()
if file == nil {
return nil
}
return gui.openFile(file.Name)
}
@ -419,7 +413,7 @@ func (gui *Gui) refreshStateFiles() error {
// keep track of where the cursor is currently and the current file names
// when we refresh, go looking for a matching name
// move the cursor to there.
selectedFile, _ := gui.getSelectedFile()
selectedFile := gui.getSelectedFile()
// get files to stage
files := gui.GitCommand.GetStatusFiles(commands.GetStatusFileOptions{})
@ -581,13 +575,11 @@ func (gui *Gui) pushFiles(g *gocui.Gui, v *gocui.View) error {
}
func (gui *Gui) handleSwitchToMerge() error {
file, err := gui.getSelectedFile()
if err != nil {
if err != gui.Errors.ErrNoFiles {
return gui.surfaceError(err)
}
file := gui.getSelectedFile()
if file == nil {
return nil
}
if !file.HasInlineMergeConflicts {
return gui.createErrorPanel(gui.Tr.SLocalize("FileNoMergeCons"))
}

View File

@ -15,8 +15,8 @@ func (gui *Gui) handleCreateFilteringMenuPanel(g *gocui.Gui, v *gocui.View) erro
fileName := ""
switch v.Name() {
case "files":
file, err := gui.getSelectedFile()
if err == nil {
file := gui.getSelectedFile()
if file != nil {
fileName = file.Name
}
case "commitFiles":

View File

@ -336,8 +336,8 @@ func (gui *Gui) handleOpenFileAtLine() error {
case "patch-building":
filename = gui.getSelectedCommitFileName()
case "staging":
file, err := gui.getSelectedFile()
if err != nil {
file := gui.getSelectedFile()
if file == nil {
return nil
}
filename = file.Name

View File

@ -113,9 +113,9 @@ func (gui *Gui) isIndexToDelete(i int, conflict commands.Conflict, pick string)
}
func (gui *Gui) resolveConflict(conflict commands.Conflict, pick string) error {
gitFile, err := gui.getSelectedFile()
if err != nil {
return err
gitFile := gui.getSelectedFile()
if gitFile == nil {
return nil
}
file, err := os.Open(gitFile.Name)
if err != nil {
@ -139,9 +139,9 @@ func (gui *Gui) resolveConflict(conflict commands.Conflict, pick string) error {
}
func (gui *Gui) pushFileSnapshot(g *gocui.Gui) error {
gitFile, err := gui.getSelectedFile()
if err != nil {
return err
gitFile := gui.getSelectedFile()
if gitFile == nil {
return nil
}
content, err := gui.GitCommand.CatFile(gitFile.Name)
if err != nil {
@ -156,9 +156,9 @@ func (gui *Gui) handlePopFileSnapshot(g *gocui.Gui, v *gocui.View) error {
return nil
}
prevContent := gui.State.Panels.Merging.EditHistory.Pop().(string)
gitFile, err := gui.getSelectedFile()
if err != nil {
return err
gitFile := gui.getSelectedFile()
if gitFile == nil {
return nil
}
if err := ioutil.WriteFile(gitFile.Name, []byte(prevContent), 0644); err != nil {
return err
@ -249,16 +249,15 @@ func (gui *Gui) refreshMergePanel() error {
}
func (gui *Gui) catSelectedFile(g *gocui.Gui) (string, error) {
item, err := gui.getSelectedFile()
if err != nil {
if err != gui.Errors.ErrNoFiles {
return "", err
}
item := gui.getSelectedFile()
if item == nil {
return "", gui.newStringTask("main", gui.Tr.SLocalize("NoFilesDisplay"))
}
if item.Type != "file" {
return "", gui.newStringTask("main", gui.Tr.SLocalize("NotAFile"))
}
cat, err := gui.GitCommand.CatFile(item.Name)
if err != nil {
gui.Log.Error(err)
@ -353,8 +352,8 @@ func (gui *Gui) canScrollMergePanel() bool {
return false
}
file, err := gui.getSelectedFile()
if err != nil {
file := gui.getSelectedFile()
if file == nil {
return false
}

View File

@ -19,11 +19,8 @@ func (gui *Gui) refreshStagingPanel(forceSecondaryFocused bool, selectedLineIdx
// return err
// }
file, err := gui.getSelectedFile()
if err != nil {
if err != gui.Errors.ErrNoFiles {
return err
}
file := gui.getSelectedFile()
if file == nil {
return gui.handleStagingEscape()
}
@ -131,9 +128,9 @@ func (gui *Gui) handleResetSelection(g *gocui.Gui, v *gocui.View) error {
func (gui *Gui) applySelection(reverse bool) error {
state := gui.State.Panels.LineByLine
file, err := gui.getSelectedFile()
if err != nil {
return err
file := gui.getSelectedFile()
if file == nil {
return nil
}
patch := patch.ModifiedPatchForRange(gui.Log, file.Name, state.Diff, state.FirstLineIdx, state.LastLineIdx, reverse, false)
@ -148,7 +145,7 @@ func (gui *Gui) applySelection(reverse bool) error {
if !reverse || state.SecondaryFocused {
applyFlags = append(applyFlags, "cached")
}
err = gui.GitCommand.ApplyPatch(patch, applyFlags...)
err := gui.GitCommand.ApplyPatch(patch, applyFlags...)
if err != nil {
return gui.surfaceError(err)
}