diff --git a/pkg/ui/keys.go b/pkg/ui/keys.go index bad9e15..c629168 100644 --- a/pkg/ui/keys.go +++ b/pkg/ui/keys.go @@ -33,6 +33,8 @@ type KeyMap struct { ToggleHelp key.Binding ToggleMessage key.Binding ToggleSelection key.Binding + IncreaseFileTreeWidth key.Binding + DecreaseFileTreeWidth key.Binding } var keys = &KeyMap{ @@ -156,6 +158,14 @@ var keys = &KeyMap{ key.WithKeys("v"), key.WithHelp("v", "toggle selection"), ), + IncreaseFileTreeWidth: key.NewBinding( + key.WithKeys(">"), + key.WithHelp(">", "increase file tree width"), + ), + DecreaseFileTreeWidth: key.NewBinding( + key.WithKeys("<"), + key.WithHelp("<", "decrease file tree width"), + ), } func KeyGroups() [][]key.Binding { @@ -171,6 +181,8 @@ func KeyGroups() [][]key.Binding { keys.CtrlU, keys.ScrollLeft, keys.ScrollRight, + keys.IncreaseFileTreeWidth, + keys.DecreaseFileTreeWidth, }, { keys.ToggleFileTree, keys.SearchFiles, diff --git a/pkg/ui/panes/filetree/filetree.go b/pkg/ui/panes/filetree/filetree.go index ce6e2f9..a240f69 100644 --- a/pkg/ui/panes/filetree/filetree.go +++ b/pkg/ui/panes/filetree/filetree.go @@ -21,10 +21,15 @@ import ( "github.com/dlvhdr/diffnav/pkg/utils" ) +const ( + widthStep = 5 +) + type Model struct { - t tree.Model - files []*gitdiff.File - cfg config.Config + t tree.Model + files []*gitdiff.File + cfg config.Config + currentWidth int } func New(cfg config.Config) Model { @@ -59,6 +64,12 @@ func (m *Model) Update(msg tea.Msg) (*Model, tea.Cmd) { case key.Matches(msg, keys.ToggleNode): m.t.ToggleCurrentNode() + + case key.Matches(msg, keys.IncreaseFileTreeWidth): + m.SetSize(m.Width()+widthStep, 0) + + case key.Matches(msg, keys.DecreaseFileTreeWidth): + m.SetSize(m.Width()-widthStep, 0) } } return m, nil @@ -411,8 +422,10 @@ var indenter = func(children ltree.Children, index int) string { // SetSize implements the Component interface. func (m *Model) SetSize(width, height int) { - m.t.SetSize(width, height) - m.rebuildTree() + if width > 0 { + m.t.SetSize(width, height) + m.rebuildTree() + } } func (m *Model) Width() int { diff --git a/pkg/ui/panes/filetree/keys.go b/pkg/ui/panes/filetree/keys.go index f7a171f..f6ee3d1 100644 --- a/pkg/ui/panes/filetree/keys.go +++ b/pkg/ui/panes/filetree/keys.go @@ -3,9 +3,11 @@ package filetree import "charm.land/bubbles/v2/key" type KeyMap struct { - ExpandNode key.Binding - CollapseNode key.Binding - ToggleNode key.Binding + ExpandNode key.Binding + CollapseNode key.Binding + ToggleNode key.Binding + IncreaseFileTreeWidth key.Binding + DecreaseFileTreeWidth key.Binding } var keys = &KeyMap{ @@ -21,4 +23,12 @@ var keys = &KeyMap{ key.WithKeys("enter"), key.WithHelp("enter", "toggle"), ), + IncreaseFileTreeWidth: key.NewBinding( + key.WithKeys(">"), + key.WithHelp(">", "increase file tree width"), + ), + DecreaseFileTreeWidth: key.NewBinding( + key.WithKeys("<"), + key.WithHelp("<", "decrease file tree width"), + ), }