mirror of
https://github.com/jesseduffield/lazygit.git
synced 2024-12-12 11:15:00 +02:00
79 lines
1.9 KiB
Go
79 lines
1.9 KiB
Go
package gui
|
|
|
|
import (
|
|
"errors"
|
|
|
|
"github.com/jesseduffield/lazygit/pkg/gui/context"
|
|
"github.com/jesseduffield/lazygit/pkg/gui/types"
|
|
)
|
|
|
|
var CONTEXT_KEYS_SHOWING_DIFFS = []types.ContextKey{
|
|
context.FILES_CONTEXT_KEY,
|
|
context.COMMIT_FILES_CONTEXT_KEY,
|
|
context.STASH_CONTEXT_KEY,
|
|
context.LOCAL_COMMITS_CONTEXT_KEY,
|
|
context.SUB_COMMITS_CONTEXT_KEY,
|
|
context.MAIN_STAGING_CONTEXT_KEY,
|
|
context.MAIN_PATCH_BUILDING_CONTEXT_KEY,
|
|
}
|
|
|
|
func isShowingDiff(gui *Gui) bool {
|
|
key := gui.currentStaticContext().GetKey()
|
|
|
|
for _, contextKey := range CONTEXT_KEYS_SHOWING_DIFFS {
|
|
if key == contextKey {
|
|
return true
|
|
}
|
|
}
|
|
return false
|
|
}
|
|
|
|
func (gui *Gui) IncreaseContextInDiffView() error {
|
|
if isShowingDiff(gui) {
|
|
if err := gui.CheckCanChangeContext(); err != nil {
|
|
return gui.c.Error(err)
|
|
}
|
|
|
|
gui.c.UserConfig.Git.DiffContextSize = gui.c.UserConfig.Git.DiffContextSize + 1
|
|
return gui.handleDiffContextSizeChange()
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func (gui *Gui) DecreaseContextInDiffView() error {
|
|
old_size := gui.c.UserConfig.Git.DiffContextSize
|
|
|
|
if isShowingDiff(gui) && old_size > 1 {
|
|
if err := gui.CheckCanChangeContext(); err != nil {
|
|
return gui.c.Error(err)
|
|
}
|
|
|
|
gui.c.UserConfig.Git.DiffContextSize = old_size - 1
|
|
return gui.handleDiffContextSizeChange()
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func (gui *Gui) handleDiffContextSizeChange() error {
|
|
currentContext := gui.currentStaticContext()
|
|
switch currentContext.GetKey() {
|
|
// we make an exception for our staging and patch building contexts because they actually need to refresh their state afterwards.
|
|
case context.MAIN_PATCH_BUILDING_CONTEXT_KEY:
|
|
return gui.handleRefreshPatchBuildingPanel(-1)
|
|
case context.MAIN_STAGING_CONTEXT_KEY:
|
|
return gui.handleRefreshStagingPanel(false, -1)
|
|
default:
|
|
return currentContext.HandleRenderToMain()
|
|
}
|
|
}
|
|
|
|
func (gui *Gui) CheckCanChangeContext() error {
|
|
if gui.git.Patch.PatchManager.Active() {
|
|
return errors.New(gui.c.Tr.CantChangeContextSizeError)
|
|
}
|
|
|
|
return nil
|
|
}
|