1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2025-02-09 13:47:11 +02:00

support some more things

This commit is contained in:
Jesse Duffield 2021-03-15 23:00:20 +11:00
parent 418621a9ff
commit c9de6c003b
5 changed files with 37 additions and 10 deletions

View File

@ -203,3 +203,11 @@ func (s *StatusLineNode) GetPathsMatching(test func(*StatusLineNode) bool) []str
return paths return paths
} }
func (s *StatusLineNode) ID() string {
return s.GetPath()
}
func (s *StatusLineNode) Description() string {
return s.GetPath()
}

View File

@ -16,6 +16,7 @@ type CustomCommandObjects struct {
SelectedReflogCommit *models.Commit SelectedReflogCommit *models.Commit
SelectedSubCommit *models.Commit SelectedSubCommit *models.Commit
SelectedFile *models.File SelectedFile *models.File
SelectedPath string
SelectedLocalBranch *models.Branch SelectedLocalBranch *models.Branch
SelectedRemoteBranch *models.RemoteBranch SelectedRemoteBranch *models.RemoteBranch
SelectedRemote *models.Remote SelectedRemote *models.Remote
@ -29,6 +30,7 @@ type CustomCommandObjects struct {
func (gui *Gui) resolveTemplate(templateStr string, promptResponses []string) (string, error) { func (gui *Gui) resolveTemplate(templateStr string, promptResponses []string) (string, error) {
objects := CustomCommandObjects{ objects := CustomCommandObjects{
SelectedFile: gui.getSelectedFile(), SelectedFile: gui.getSelectedFile(),
SelectedPath: gui.getSelectedPath(),
SelectedLocalCommit: gui.getSelectedLocalCommit(), SelectedLocalCommit: gui.getSelectedLocalCommit(),
SelectedReflogCommit: gui.getSelectedReflogCommit(), SelectedReflogCommit: gui.getSelectedReflogCommit(),
SelectedLocalBranch: gui.getSelectedBranch(), SelectedLocalBranch: gui.getSelectedBranch(),

View File

@ -43,6 +43,15 @@ func (gui *Gui) getSelectedFile() *models.File {
return node.File return node.File
} }
func (gui *Gui) getSelectedPath() string {
node := gui.getSelectedStatusNode()
if node == nil {
return ""
}
return node.GetPath()
}
func (gui *Gui) selectFile(alreadySelected bool) error { func (gui *Gui) selectFile(alreadySelected bool) error {
gui.getFilesView().FocusPoint(0, gui.State.Panels.Files.SelectedLineIdx) gui.getFilesView().FocusPoint(0, gui.State.Panels.Files.SelectedLineIdx)
@ -104,7 +113,7 @@ func (gui *Gui) refreshFilesAndSubmodules() error {
gui.Mutexes.RefreshingFilesMutex.Unlock() gui.Mutexes.RefreshingFilesMutex.Unlock()
}() }()
selectedFile := gui.getSelectedFile() selectedPath := gui.getSelectedPath()
filesView := gui.getFilesView() filesView := gui.getFilesView()
if filesView == nil { if filesView == nil {
@ -131,8 +140,8 @@ func (gui *Gui) refreshFilesAndSubmodules() error {
} }
if gui.currentContext().GetKey() == FILES_CONTEXT_KEY || (g.CurrentView() == gui.getMainView() && g.CurrentView().Context == MAIN_MERGING_CONTEXT_KEY) { if gui.currentContext().GetKey() == FILES_CONTEXT_KEY || (g.CurrentView() == gui.getMainView() && g.CurrentView().Context == MAIN_MERGING_CONTEXT_KEY) {
newSelectedFile := gui.getSelectedFile() newSelectedPath := gui.getSelectedPath()
alreadySelected := selectedFile != nil && newSelectedFile != nil && newSelectedFile.Name == selectedFile.Name alreadySelected := selectedPath != "" && newSelectedPath == selectedPath
if err := gui.selectFile(alreadySelected); err != nil { if err := gui.selectFile(alreadySelected); err != nil {
return err return err
} }
@ -461,20 +470,25 @@ func (gui *Gui) editFile(filename string) error {
} }
func (gui *Gui) handleFileEdit(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleFileEdit(g *gocui.Gui, v *gocui.View) error {
file := gui.getSelectedFile() node := gui.getSelectedStatusNode()
if file == nil { if node == nil {
return nil return nil
} }
return gui.editFile(file.Name) if node.File == nil {
return gui.createErrorPanel(gui.Tr.ErrCannotEditDirectory)
}
return gui.editFile(node.GetPath())
} }
func (gui *Gui) handleFileOpen(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleFileOpen(g *gocui.Gui, v *gocui.View) error {
file := gui.getSelectedFile() node := gui.getSelectedStatusNode()
if file == nil { if node == nil {
return nil return nil
} }
return gui.openFile(file.Name)
return gui.openFile(node.GetPath())
} }
func (gui *Gui) handleRefreshFiles(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleRefreshFiles(g *gocui.Gui, v *gocui.View) error {

View File

@ -278,10 +278,11 @@ func (gui *Gui) filesListContext() *ListContext {
return mappedLines return mappedLines
// TODO: Fix this up
return presentation.GetFileListDisplayStrings(gui.State.StatusLineManager.GetAllFiles(), gui.State.Modes.Diffing.Ref, gui.State.Submodules) return presentation.GetFileListDisplayStrings(gui.State.StatusLineManager.GetAllFiles(), gui.State.Modes.Diffing.Ref, gui.State.Submodules)
}, },
SelectedItem: func() (ListItem, bool) { SelectedItem: func() (ListItem, bool) {
item := gui.getSelectedFile() item := gui.getSelectedStatusNode()
return item, item != nil return item, item != nil
}, },
} }

View File

@ -435,6 +435,7 @@ type TranslationSet struct {
PullRequestURLCopiedToClipboard string PullRequestURLCopiedToClipboard string
CommitMessageCopiedToClipboard string CommitMessageCopiedToClipboard string
LcCopiedToClipboard string LcCopiedToClipboard string
ErrCannotEditDirectory string
} }
const englishReleaseNotes = `## lazygit 0.26 Release Notes const englishReleaseNotes = `## lazygit 0.26 Release Notes
@ -993,5 +994,6 @@ func englishTranslationSet() TranslationSet {
PullRequestURLCopiedToClipboard: "Pull request URL copied to clipboard", PullRequestURLCopiedToClipboard: "Pull request URL copied to clipboard",
CommitMessageCopiedToClipboard: "Commit message copied to clipboard", CommitMessageCopiedToClipboard: "Commit message copied to clipboard",
LcCopiedToClipboard: "copied to clipboard", LcCopiedToClipboard: "copied to clipboard",
ErrCannotEditDirectory: "Cannot edit directory: you can only edit individual files",
} }
} }