mirror of
https://github.com/jesseduffield/lazygit.git
synced 2026-06-20 01:19:23 +02:00
Allow customizing the window width/height thresholds for when to use portrait mode (#5452)
This commit is contained in:
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -285,7 +285,7 @@ func TestGetWindowDimensions(t *testing.T) {
|
||||
{
|
||||
name: "half screen mode, enlargedSideViewLocation left",
|
||||
mutateArgs: func(args *WindowArrangementArgs) {
|
||||
args.Height = 20 // smaller height because we don't more here
|
||||
args.Height = 20 // smaller height because we don't need more here
|
||||
args.ScreenMode = types.SCREEN_HALF
|
||||
args.UserConfig.Gui.EnlargedSideViewLocation = "left"
|
||||
},
|
||||
@@ -317,7 +317,7 @@ func TestGetWindowDimensions(t *testing.T) {
|
||||
{
|
||||
name: "half screen mode, enlargedSideViewLocation top",
|
||||
mutateArgs: func(args *WindowArrangementArgs) {
|
||||
args.Height = 20 // smaller height because we don't more here
|
||||
args.Height = 20 // smaller height because we don't need more here
|
||||
args.ScreenMode = types.SCREEN_HALF
|
||||
args.UserConfig.Gui.EnlargedSideViewLocation = "top"
|
||||
},
|
||||
@@ -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": [
|
||||
|
||||
Reference in New Issue
Block a user