mirror of
https://github.com/jesseduffield/lazygit.git
synced 2026-09-10 15:46:26 -04:00
Add user config gui.showSelectionInFocusedMainView
This commit is contained in:
parent
ba9373575f
commit
64cc4ccd32
|
|
@ -157,6 +157,9 @@ gui:
|
|||
# staging view.
|
||||
useHunkModeInStagingView: true
|
||||
|
||||
# If true, show a selection when the main view is focused.
|
||||
showSelectionInFocusedMainView: false
|
||||
|
||||
# One of 'auto' (default) | 'en' | 'zh-CN' | 'zh-TW' | 'pl' | 'nl' | 'ja' | 'ko'
|
||||
# | 'ru' | 'pt'
|
||||
language: auto
|
||||
|
|
|
|||
|
|
@ -157,6 +157,9 @@ gui:
|
|||
# staging view.
|
||||
useHunkModeInStagingView: true
|
||||
|
||||
# If true, show a selection when the main view is focused.
|
||||
showSelectionInFocusedMainView: false
|
||||
|
||||
# One of 'auto' (default) | 'en' | 'zh-CN' | 'zh-TW' | 'pl' | 'nl' | 'ja' | 'ko'
|
||||
# | 'ru' | 'pt'
|
||||
language: auto
|
||||
|
|
|
|||
|
|
@ -133,6 +133,8 @@ type GuiConfig struct {
|
|||
WrapLinesInStagingView bool `yaml:"wrapLinesInStagingView"`
|
||||
// If true, hunk selection mode will be enabled by default when entering the staging view.
|
||||
UseHunkModeInStagingView bool `yaml:"useHunkModeInStagingView"`
|
||||
// If true, show a selection when the main view is focused.
|
||||
ShowSelectionInFocusedMainView bool `yaml:"showSelectionInFocusedMainView"`
|
||||
// One of 'auto' (default) | 'en' | 'zh-CN' | 'zh-TW' | 'pl' | 'nl' | 'ja' | 'ko' | 'ru' | 'pt'
|
||||
Language string `yaml:"language" jsonschema:"enum=auto,enum=en,enum=zh-TW,enum=zh-CN,enum=pl,enum=nl,enum=ja,enum=ko,enum=ru"`
|
||||
// Format used when displaying time e.g. commit time.
|
||||
|
|
@ -874,13 +876,14 @@ func GetDefaultConfigForPlatform(platform string) *UserConfig {
|
|||
{"commits", "reflog"},
|
||||
{"stash"},
|
||||
},
|
||||
MainPanelSplitMode: "flexible",
|
||||
EnlargedSideViewLocation: "left",
|
||||
WrapLinesInStagingView: true,
|
||||
UseHunkModeInStagingView: true,
|
||||
Language: "auto",
|
||||
TimeFormat: "02 Jan 06",
|
||||
ShortTimeFormat: time.Kitchen,
|
||||
MainPanelSplitMode: "flexible",
|
||||
EnlargedSideViewLocation: "left",
|
||||
WrapLinesInStagingView: true,
|
||||
UseHunkModeInStagingView: true,
|
||||
ShowSelectionInFocusedMainView: false,
|
||||
Language: "auto",
|
||||
TimeFormat: "02 Jan 06",
|
||||
ShortTimeFormat: time.Kitchen,
|
||||
Theme: ThemeConfig{
|
||||
ActiveBorderColor: []string{"green", "bold"},
|
||||
SearchingActiveBorderColor: []string{"cyan", "bold"},
|
||||
|
|
|
|||
|
|
@ -253,3 +253,7 @@ func (self *BaseContext) Title() string {
|
|||
func (self *BaseContext) TotalContentHeight() int {
|
||||
return self.view.ViewLinesHeight()
|
||||
}
|
||||
|
||||
func (self *BaseContext) SetHighlightOnFocus(value bool) {
|
||||
self.highlightOnFocus = value
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ func NewMainContext(
|
|||
WindowName: windowName,
|
||||
Key: key,
|
||||
Focusable: true,
|
||||
HighlightOnFocus: false,
|
||||
HighlightOnFocus: c.UserConfig().Gui.ShowSelectionInFocusedMainView,
|
||||
})),
|
||||
SearchTrait: NewSearchTrait(c),
|
||||
}
|
||||
|
|
|
|||
|
|
@ -89,6 +89,10 @@ func (self *MainViewController) escape() error {
|
|||
}
|
||||
|
||||
func (self *MainViewController) onClickInAlreadyFocusedView(opts gocui.ViewMouseBindingOpts) error {
|
||||
if self.context.GetView().Highlight && !opts.IsDoubleClick {
|
||||
return nil
|
||||
}
|
||||
|
||||
sidePanelContext := self.c.Context().NextInStack(self.context)
|
||||
if sidePanelContext != nil && sidePanelContext.GetOnClickFocusedMainView() != nil {
|
||||
return sidePanelContext.GetOnClickFocusedMainView()(self.context.GetViewName(), opts.Y)
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ package controllers
|
|||
import (
|
||||
"github.com/jesseduffield/lazygit/pkg/gocui"
|
||||
"github.com/jesseduffield/lazygit/pkg/gui/types"
|
||||
"github.com/samber/lo"
|
||||
)
|
||||
|
||||
type ViewSelectionControllerFactory struct {
|
||||
|
|
@ -51,11 +52,22 @@ func (self *ViewSelectionController) GetMouseKeybindings(opts types.KeybindingsO
|
|||
|
||||
func (self *ViewSelectionController) handleLineChange(delta int) {
|
||||
v := self.Context().GetView()
|
||||
if delta < 0 {
|
||||
v.ScrollUp(-delta)
|
||||
if self.context.GetView().Highlight {
|
||||
lineIdxBefore := v.CursorY() + v.OriginY()
|
||||
lineIdxAfter := lo.Clamp(lineIdxBefore+delta, 0, v.ViewLinesHeight()-1)
|
||||
if delta == -1 {
|
||||
checkScrollUp(self.Context().GetViewTrait(), self.c.UserConfig(), lineIdxBefore, lineIdxAfter)
|
||||
} else if delta == 1 {
|
||||
checkScrollDown(self.Context().GetViewTrait(), self.c.UserConfig(), lineIdxBefore, lineIdxAfter)
|
||||
}
|
||||
v.FocusPoint(0, lineIdxAfter, true)
|
||||
} else {
|
||||
v.ScrollDown(delta)
|
||||
self.c.ReadLinesToFillView(v)
|
||||
if delta < 0 {
|
||||
v.ScrollUp(-delta)
|
||||
} else {
|
||||
v.ScrollDown(delta)
|
||||
self.c.ReadLinesToFillView(v)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -81,7 +93,11 @@ func (self *ViewSelectionController) handleNextPage() error {
|
|||
|
||||
func (self *ViewSelectionController) handleGotoTop() error {
|
||||
v := self.Context().GetView()
|
||||
self.handleLineChange(-v.ViewLinesHeight())
|
||||
if self.context.GetView().Highlight {
|
||||
v.FocusPoint(0, 0, true)
|
||||
} else {
|
||||
self.handleLineChange(-v.ViewLinesHeight())
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
@ -90,7 +106,11 @@ func (self *ViewSelectionController) handleGotoBottom() error {
|
|||
manager.ReadToEnd(func() {
|
||||
self.c.OnUIThread(func() error {
|
||||
v := self.Context().GetView()
|
||||
self.handleLineChange(v.ViewLinesHeight())
|
||||
if self.context.GetView().Highlight {
|
||||
v.FocusPoint(0, v.ViewLinesHeight()-1, true)
|
||||
} else {
|
||||
self.handleLineChange(v.ViewLinesHeight())
|
||||
}
|
||||
return nil
|
||||
})
|
||||
})
|
||||
|
|
|
|||
|
|
@ -517,6 +517,11 @@ func (gui *Gui) onUserConfigLoaded() error {
|
|||
|
||||
gui.g.Mouse = userConfig.Gui.MouseEvents
|
||||
|
||||
if gui.State != nil {
|
||||
gui.Contexts().Normal.SetHighlightOnFocus(userConfig.Gui.ShowSelectionInFocusedMainView)
|
||||
gui.Contexts().NormalSecondary.SetHighlightOnFocus(userConfig.Gui.ShowSelectionInFocusedMainView)
|
||||
}
|
||||
|
||||
// originally we could only hide the command log permanently via the config
|
||||
// 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
|
||||
|
|
|
|||
|
|
@ -693,6 +693,11 @@
|
|||
"description": "If true, hunk selection mode will be enabled by default when entering the staging view.",
|
||||
"default": true
|
||||
},
|
||||
"showSelectionInFocusedMainView": {
|
||||
"type": "boolean",
|
||||
"description": "If true, show a selection when the main view is focused.",
|
||||
"default": false
|
||||
},
|
||||
"language": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
|
|
|
|||
|
|
@ -693,6 +693,11 @@
|
|||
"description": "If true, hunk selection mode will be enabled by default when entering the staging view.",
|
||||
"default": true
|
||||
},
|
||||
"showSelectionInFocusedMainView": {
|
||||
"type": "boolean",
|
||||
"description": "If true, show a selection when the main view is focused.",
|
||||
"default": false
|
||||
},
|
||||
"language": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
|
|
|
|||
Loading…
Reference in a new issue