mirror of
https://github.com/jesseduffield/lazygit.git
synced 2026-09-10 15:46:26 -04:00
Allow customizing the window width/height thresholds for when to use portrait mode
This commit is contained in:
parent
f8fd8d04bc
commit
fde4bc1fb2
|
|
@ -298,6 +298,16 @@ gui:
|
|||
# One of 'auto' (default) | 'always' | 'never'
|
||||
portraitMode: auto
|
||||
|
||||
# In 'auto' mode, portrait mode will be used if the window width is less than or
|
||||
# equal to portraitModeAutoMaxWidth and the window height is greater than or
|
||||
# equal to portraitModeAutoMinHeight. Unused when portraitMode is not 'auto'.
|
||||
portraitModeAutoMaxWidth: 84
|
||||
|
||||
# In 'auto' mode, portrait mode will be used if the window width is less than or
|
||||
# equal to portraitModeAutoMaxWidth and the window height is greater than or
|
||||
# equal to portraitModeAutoMinHeight. Unused when portraitMode is not 'auto'.
|
||||
portraitModeAutoMinHeight: 46
|
||||
|
||||
# How things are filtered when typing '/'.
|
||||
# One of 'substring' (default) | 'fuzzy'
|
||||
filterMode: substring
|
||||
|
|
|
|||
|
|
@ -187,6 +187,10 @@ type GuiConfig struct {
|
|||
// Whether to stack UI components on top of each other.
|
||||
// One of 'auto' (default) | 'always' | 'never'
|
||||
PortraitMode string `yaml:"portraitMode"`
|
||||
// In 'auto' mode, portrait mode will be used if the window width is less than or equal to portraitModeAutoMaxWidth and the window height is greater than or equal to portraitModeAutoMinHeight. Unused when portraitMode is not 'auto'.
|
||||
PortraitModeAutoMaxWidth int `yaml:"portraitModeAutoMaxWidth"`
|
||||
// In 'auto' mode, portrait mode will be used if the window width is less than or equal to portraitModeAutoMaxWidth and the window height is greater than or equal to portraitModeAutoMinHeight. Unused when portraitMode is not 'auto'.
|
||||
PortraitModeAutoMinHeight int `yaml:"portraitModeAutoMinHeight"`
|
||||
// How things are filtered when typing '/'.
|
||||
// One of 'substring' (default) | 'fuzzy'
|
||||
FilterMode string `yaml:"filterMode" jsonschema:"enum=substring,enum=fuzzy"`
|
||||
|
|
@ -820,6 +824,8 @@ func GetDefaultConfig() *UserConfig {
|
|||
Border: "rounded",
|
||||
AnimateExplosion: true,
|
||||
PortraitMode: "auto",
|
||||
PortraitModeAutoMaxWidth: 84,
|
||||
PortraitModeAutoMinHeight: 46,
|
||||
FilterMode: "substring",
|
||||
Spinner: SpinnerConfig{
|
||||
Frames: []string{"|", "/", "-", "\\"},
|
||||
|
|
|
|||
|
|
@ -116,7 +116,8 @@ func shouldUsePortraitMode(args WindowArrangementArgs) bool {
|
|||
case "always":
|
||||
return true
|
||||
default: // "auto" or any garbage values in PortraitMode value
|
||||
return args.Width <= 84 && args.Height > 45
|
||||
return args.Width <= args.UserConfig.Gui.PortraitModeAutoMaxWidth &&
|
||||
args.Height >= args.UserConfig.Gui.PortraitModeAutoMinHeight
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -346,6 +346,105 @@ func TestGetWindowDimensions(t *testing.T) {
|
|||
B: information
|
||||
`,
|
||||
},
|
||||
{
|
||||
name: "portrait auto mode, enabled",
|
||||
mutateArgs: func(args *WindowArrangementArgs) {
|
||||
args.Width = 50
|
||||
args.Height = 20
|
||||
args.UserConfig.Gui.PortraitModeAutoMaxWidth = 50
|
||||
args.UserConfig.Gui.PortraitModeAutoMinHeight = 20
|
||||
},
|
||||
expected: `
|
||||
<status──────────────────────────────────────────>
|
||||
╭files───────────────────────────────────────────╮
|
||||
│ │
|
||||
╰────────────────────────────────────────────────╯
|
||||
<branches────────────────────────────────────────>
|
||||
<commits─────────────────────────────────────────>
|
||||
<stash───────────────────────────────────────────>
|
||||
╭main────────────────────────────────────────────╮
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
│ │
|
||||
╰────────────────────────────────────────────────╯
|
||||
<options─────────────────────────────>A<B────────>
|
||||
A: statusSpacer1
|
||||
B: information
|
||||
`,
|
||||
},
|
||||
{
|
||||
name: "portrait auto mode, disabled because width is too large",
|
||||
mutateArgs: func(args *WindowArrangementArgs) {
|
||||
args.Width = 50
|
||||
args.Height = 20
|
||||
args.UserConfig.Gui.PortraitModeAutoMaxWidth = 49
|
||||
args.UserConfig.Gui.PortraitModeAutoMinHeight = 20
|
||||
},
|
||||
expected: `
|
||||
<status─────────>╭main───────────────────────────╮
|
||||
╭files──────────╮│ │
|
||||
│ ││ │
|
||||
│ ││ │
|
||||
│ ││ │
|
||||
│ ││ │
|
||||
│ ││ │
|
||||
│ ││ │
|
||||
│ ││ │
|
||||
│ ││ │
|
||||
│ ││ │
|
||||
│ ││ │
|
||||
│ ││ │
|
||||
│ ││ │
|
||||
│ ││ │
|
||||
╰───────────────╯│ │
|
||||
<branches───────>│ │
|
||||
<commits────────>│ │
|
||||
<stash──────────>╰───────────────────────────────╯
|
||||
<options─────────────────────────────>A<B────────>
|
||||
A: statusSpacer1
|
||||
B: information
|
||||
`,
|
||||
},
|
||||
{
|
||||
name: "portrait auto mode, disabled because height is too small",
|
||||
mutateArgs: func(args *WindowArrangementArgs) {
|
||||
args.Width = 50
|
||||
args.Height = 20
|
||||
args.UserConfig.Gui.PortraitModeAutoMaxWidth = 50
|
||||
args.UserConfig.Gui.PortraitModeAutoMinHeight = 21
|
||||
},
|
||||
expected: `
|
||||
<status─────────>╭main───────────────────────────╮
|
||||
╭files──────────╮│ │
|
||||
│ ││ │
|
||||
│ ││ │
|
||||
│ ││ │
|
||||
│ ││ │
|
||||
│ ││ │
|
||||
│ ││ │
|
||||
│ ││ │
|
||||
│ ││ │
|
||||
│ ││ │
|
||||
│ ││ │
|
||||
│ ││ │
|
||||
│ ││ │
|
||||
│ ││ │
|
||||
╰───────────────╯│ │
|
||||
<branches───────>│ │
|
||||
<commits────────>│ │
|
||||
<stash──────────>╰───────────────────────────────╯
|
||||
<options─────────────────────────────>A<B────────>
|
||||
A: statusSpacer1
|
||||
B: information
|
||||
`,
|
||||
},
|
||||
{
|
||||
name: "search mode",
|
||||
mutateArgs: func(args *WindowArrangementArgs) {
|
||||
|
|
|
|||
|
|
@ -769,6 +769,16 @@
|
|||
"description": "Whether to stack UI components on top of each other.\nOne of 'auto' (default) | 'always' | 'never'",
|
||||
"default": "auto"
|
||||
},
|
||||
"portraitModeAutoMaxWidth": {
|
||||
"type": "integer",
|
||||
"description": "In 'auto' mode, portrait mode will be used if the window width is less than or equal to portraitModeAutoMaxWidth and the window height is greater than or equal to portraitModeAutoMinHeight. Unused when portraitMode is not 'auto'.",
|
||||
"default": 84
|
||||
},
|
||||
"portraitModeAutoMinHeight": {
|
||||
"type": "integer",
|
||||
"description": "In 'auto' mode, portrait mode will be used if the window width is less than or equal to portraitModeAutoMaxWidth and the window height is greater than or equal to portraitModeAutoMinHeight. Unused when portraitMode is not 'auto'.",
|
||||
"default": 46
|
||||
},
|
||||
"filterMode": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
|
|
|
|||
Loading…
Reference in a new issue