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

Record current directory on switch

This commit is contained in:
David Roman 2022-03-15 14:12:26 +01:00 committed by Jesse Duffield
parent 950bb5090d
commit b8fc829f86
5 changed files with 27 additions and 7 deletions

View File

@ -128,6 +128,11 @@ func NewApp(config config.AppConfigurer, filterPath string) (*App, error) {
return app, err
}
dirName, err := os.Getwd()
if err != nil {
return app, err
}
showRecentRepos, err := app.setupRepo()
if err != nil {
return app, err
@ -135,7 +140,7 @@ func NewApp(config config.AppConfigurer, filterPath string) (*App, error) {
gitConfig := git_config.NewStdCachedGitConfig(app.Log)
app.Gui, err = gui.NewGui(app.Common, config, gitConfig, app.Updater, filterPath, showRecentRepos)
app.Gui, err = gui.NewGui(app.Common, config, gitConfig, app.Updater, filterPath, showRecentRepos, dirName)
if err != nil {
return app, err
}

View File

@ -17,6 +17,6 @@ func NewDummyUpdater() *updates.Updater {
func NewDummyGui() *Gui {
newAppConfig := config.NewDummyAppConfig()
dummyGui, _ := NewGui(utils.NewDummyCommon(), newAppConfig, git_config.NewFakeGitConfig(nil), NewDummyUpdater(), "", false)
dummyGui, _ := NewGui(utils.NewDummyCommon(), newAppConfig, git_config.NewFakeGitConfig(nil), NewDummyUpdater(), "", false, "")
return dummyGui
}

View File

@ -124,6 +124,8 @@ type Gui struct {
PopupHandler PopupHandler
IsNewRepo bool
InitialRepoDir string
}
type listPanelState struct {
@ -447,6 +449,7 @@ func NewGui(
updater *updates.Updater,
filterPath string,
showRecentRepos bool,
initialRepoDir string,
) (*Gui, error) {
gui := &Gui{
Common: cmn,
@ -464,6 +467,8 @@ func NewGui(
// but now we do it via state. So we need to still support the config for the
// sake of backwards compatibility. We're making use of short circuiting here
ShowExtrasWindow: cmn.UserConfig.Gui.ShowCommandLog && !config.GetAppState().HideCommandLog,
InitialRepoDir: initialRepoDir,
}
guiIO := oscommands.NewGuiIO(
@ -590,7 +595,11 @@ func (gui *Gui) RunAndHandleError() error {
switch err {
case gocui.ErrQuit:
if !gui.State.RetainOriginalDir {
if gui.State.RetainOriginalDir {
if err := gui.recordDirectory(gui.InitialRepoDir); err != nil {
return err
}
} else {
if err := gui.recordCurrentDirectory(); err != nil {
return err
}

View File

@ -11,16 +11,18 @@ import (
// shell can then change to that directory. That means you don't get kicked
// back to the directory that you started with.
func (gui *Gui) recordCurrentDirectory() error {
if os.Getenv("LAZYGIT_NEW_DIR_FILE") == "" {
return nil
}
// determine current directory, set it in LAZYGIT_NEW_DIR_FILE
dirName, err := os.Getwd()
if err != nil {
return err
}
return gui.recordDirectory(dirName)
}
func (gui *Gui) recordDirectory(dirName string) error {
if os.Getenv("LAZYGIT_NEW_DIR_FILE") == "" {
return nil
}
return gui.OSCommand.CreateFileWithContent(os.Getenv("LAZYGIT_NEW_DIR_FILE"), dirName)
}

View File

@ -84,6 +84,10 @@ func (gui *Gui) dispatchSwitchToRepo(path string, reuse bool) error {
gui.Mutexes.RefreshingFilesMutex.Lock()
defer gui.Mutexes.RefreshingFilesMutex.Unlock()
if err := gui.recordCurrentDirectory(); err != nil {
return err
}
gui.resetState("", reuse)
return nil