From 57f9493770f91c573bdf0f4aecf034755acbf7e8 Mon Sep 17 00:00:00 2001 From: anikiforov Date: Sun, 19 May 2024 16:07:27 +0400 Subject: [PATCH] Add user config gui.commitAuthorFormat --- docs/Config.md | 5 +++++ pkg/config/user_config.go | 5 +++++ pkg/config/user_config_validation.go | 5 +++++ pkg/gui/presentation/commits.go | 9 +++++++-- schema/config.json | 10 ++++++++++ 5 files changed, 32 insertions(+), 2 deletions(-) diff --git a/docs/Config.md b/docs/Config.md index 7cc602c0b..11cc13333 100644 --- a/docs/Config.md +++ b/docs/Config.md @@ -181,6 +181,11 @@ gui: # If true (default), file icons are shown in the file views. Only relevant if NerdFontsVersion is not empty. showFileIcons: true + # Whether to show full author names or their shortened form in the commit graph. + # One of 'auto' (default) | 'full' | 'short' + # If 'auto', initials will be shown in small windows, and full names - in larger ones. + commitAuthorFormat: auto + # Length of commit hash in commits view. 0 shows '*' if NF icons aren't on. commitHashLength: 8 diff --git a/pkg/config/user_config.go b/pkg/config/user_config.go index c8895710e..47fbe2eea 100644 --- a/pkg/config/user_config.go +++ b/pkg/config/user_config.go @@ -125,6 +125,10 @@ type GuiConfig struct { NerdFontsVersion string `yaml:"nerdFontsVersion" jsonschema:"enum=2,enum=3,enum="` // If true (default), file icons are shown in the file views. Only relevant if NerdFontsVersion is not empty. ShowFileIcons bool `yaml:"showFileIcons"` + // Whether to show full author names or their shortened form in the commit graph. + // One of 'auto' (default) | 'full' | 'short' + // If 'auto', initials will be shown in small windows, and full names - in larger ones. + CommitAuthorFormat string `yaml:"commitAuthorFormat" jsonschema:"enum=auto,enum=short,enum=full"` // Length of commit hash in commits view. 0 shows '*' if NF icons aren't on. CommitHashLength int `yaml:"commitHashLength" jsonschema:"minimum=0"` // If true, show commit hashes alongside branch names in the branches view. @@ -676,6 +680,7 @@ func GetDefaultConfig() *UserConfig { UnstagedChangesColor: []string{"red"}, DefaultFgColor: []string{"default"}, }, + CommitAuthorFormat: "auto", CommitLength: CommitLengthConfig{Show: true}, SkipNoStagedFilesWarning: false, ShowListFooter: true, diff --git a/pkg/config/user_config_validation.go b/pkg/config/user_config_validation.go index 403119ada..ed248fc44 100644 --- a/pkg/config/user_config_validation.go +++ b/pkg/config/user_config_validation.go @@ -7,6 +7,11 @@ import ( ) func (config *UserConfig) Validate() error { + if err := validateEnum("gui.commitAuthorFormat", config.Gui.CommitAuthorFormat, + []string{"auto", "short", "full"}); err != nil { + return err + } + if err := validateEnum("gui.statusPanelView", config.Gui.StatusPanelView, []string{"dashboard", "allBranchesLog"}); err != nil { return err diff --git a/pkg/gui/presentation/commits.go b/pkg/gui/presentation/commits.go index c385d3407..d8e1a45ce 100644 --- a/pkg/gui/presentation/commits.go +++ b/pkg/gui/presentation/commits.go @@ -440,9 +440,14 @@ func displayCommit( mark = fmt.Sprintf("%s ", willBeRebased) } - authorFunc := authors.ShortAuthor - if fullDescription { + var authorFunc func(string) string + switch common.UserConfig.Gui.CommitAuthorFormat { + case "short": + authorFunc = authors.ShortAuthor + case "full": authorFunc = authors.LongAuthor + default: + authorFunc = lo.Ternary(fullDescription, authors.LongAuthor, authors.ShortAuthor) } cols := make([]string, 0, 7) diff --git a/schema/config.json b/schema/config.json index cf25ce007..271fd8be6 100644 --- a/schema/config.json +++ b/schema/config.json @@ -320,6 +320,16 @@ "description": "If true (default), file icons are shown in the file views. Only relevant if NerdFontsVersion is not empty.", "default": true }, + "commitAuthorFormat": { + "type": "string", + "enum": [ + "auto", + "short", + "full" + ], + "description": "Whether to show full author names or their shortened form in the commit graph.\nOne of 'auto' (default) | 'full' | 'short'\nIf 'auto', initials will be shown in small windows, and full names - in larger ones.", + "default": "auto" + }, "commitHashLength": { "type": "integer", "minimum": 0,