summaryrefslogtreecommitdiffstats
path: root/pkg/gui/files_panel.go
diff options
context:
space:
mode:
authorJesse Duffield <jessedduffield@gmail.com>2021-03-21 08:41:06 +1100
committerJesse Duffield <jessedduffield@gmail.com>2021-03-30 21:57:00 +1100
commitda6fe01eca531635c09627c60bd38d49bb092906 (patch)
tree79ecf551adaee34fccabaa60f3d083c7792a25a0 /pkg/gui/files_panel.go
parentc27cea6f30c35328a24bb4fb7db4f002ab544ad3 (diff)
allow toggling on/off file tree mode
Diffstat (limited to 'pkg/gui/files_panel.go')
-rw-r--r--pkg/gui/files_panel.go37
1 files changed, 32 insertions, 5 deletions
diff --git a/pkg/gui/files_panel.go b/pkg/gui/files_panel.go
index 30ce0a51f..854be0263 100644
--- a/pkg/gui/files_panel.go
+++ b/pkg/gui/files_panel.go
@@ -239,7 +239,7 @@ func (gui *Gui) handleFilePress() error {
return gui.surfaceError(err)
}
} else {
- if err := gui.GitCommand.UnStageFile(file.Name, file.Tracked); err != nil {
+ if err := gui.GitCommand.UnStageFile(file.Names(), file.Tracked); err != nil {
return gui.surfaceError(err)
}
}
@@ -250,7 +250,7 @@ func (gui *Gui) handleFilePress() error {
}
} else {
// pretty sure it doesn't matter that we're always passing true here
- if err := gui.GitCommand.UnStageFile(node.Path, true); err != nil {
+ if err := gui.GitCommand.UnStageFile([]string{node.Path}, true); err != nil {
return gui.surfaceError(err)
}
}
@@ -307,7 +307,7 @@ func (gui *Gui) handleIgnoreFile() error {
unstageFiles := func() error {
return node.ForEachFile(func(file *models.File) error {
if file.HasStagedChanges {
- if err := gui.GitCommand.UnStageFile(file.Name, file.Tracked); err != nil {
+ if err := gui.GitCommand.UnStageFile(file.Names(), file.Tracked); err != nil {
return err
}
}
@@ -526,8 +526,8 @@ func (gui *Gui) refreshStateFiles() error {
prevSelectedLineIdx := gui.State.Panels.Files.SelectedLineIdx
// get files to stage
- noRenames := gui.State.StatusLineManager.TreeMode
- files := gui.GitCommand.GetStatusFiles(commands.GetStatusFileOptions{NoRenames: noRenames})
+ // noRenames := gui.State.StatusLineManager.TreeMode
+ files := gui.GitCommand.GetStatusFiles(commands.GetStatusFileOptions{})
gui.State.StatusLineManager.SetFiles(
gui.GitCommand.MergeStatusFiles(gui.State.StatusLineManager.GetAllFiles(), files, selectedFile),
)
@@ -800,3 +800,30 @@ func (gui *Gui) handleToggleDirCollapsed() error {
return nil
}
+
+func (gui *Gui) handleToggleFileTreeView() error {
+ // get path of currently selected file
+ node := gui.getSelectedStatusNode()
+ path := ""
+ if node != nil {
+ path = node.Path
+ }
+ gui.State.StatusLineManager.TreeMode = !gui.State.StatusLineManager.TreeMode
+ gui.State.StatusLineManager.SetTree()
+
+ // find that same node in the new format and move the cursor to it
+ if path != "" {
+ index, found := gui.State.StatusLineManager.GetIndexForPath(path)
+ if found {
+ gui.filesListContext().GetPanelState().SetSelectedLineIdx(index)
+ }
+ }
+
+ if gui.getFilesView().Context == FILES_CONTEXT_KEY {
+ if err := gui.Contexts.Files.Context.HandleRender(); err != nil {
+ return err
+ }
+ }
+
+ return nil
+}