From 961c3bc9212bd6223b3280e44ddec625e636bb7d Mon Sep 17 00:00:00 2001 From: Olivia Bahr Date: Fri, 19 Apr 2024 14:53:03 -0600 Subject: [PATCH] Add config option for length of commit hash displayed in commits view - Added the user config option to to pkg/config/user_config.go and schema/config.json and documented in docs/Config.md - Changed the code that displays the hash in pkg/gui/presentation/commits.go --- docs/Config.md | 1 + pkg/config/user_config.go | 3 +++ pkg/gui/presentation/commits.go | 12 ++++++++++-- schema/config.json | 7 +++++++ 4 files changed, 21 insertions(+), 2 deletions(-) diff --git a/docs/Config.md b/docs/Config.md index c6f5cbbf951..2997c1ccecb 100644 --- a/docs/Config.md +++ b/docs/Config.md @@ -80,6 +80,7 @@ gui: showIcons: false # deprecated: use nerdFontsVersion instead nerdFontsVersion: "" # nerd fonts version to use ("2" or "3"); empty means don't show nerd font icons showFileIcons: true # for hiding file icons in the file views + commitHashLength: 8 # length of commit ID/ref (hash) in commits view commandLogSize: 8 splitDiff: 'auto' # one of 'auto' | 'always' skipRewordInEditorWarning: false # for skipping the confirmation before launching the reword editor diff --git a/pkg/config/user_config.go b/pkg/config/user_config.go index 29b46e903d0..3c28d83fe1f 100644 --- a/pkg/config/user_config.go +++ b/pkg/config/user_config.go @@ -123,6 +123,8 @@ 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"` + // Length of commit ID/ref (hash) in commits view. + CommitHashLength int `yaml:"commitHashLength" jsonschema:"minimum=1,maximum=12"` // If true, show commit hashes alongside branch names in the branches view. ShowBranchCommitHash bool `yaml:"showBranchCommitHash"` // Height of the command log view @@ -675,6 +677,7 @@ func GetDefaultConfig() *UserConfig { ShowIcons: false, NerdFontsVersion: "", ShowFileIcons: true, + CommitHashLength: 8, ShowBranchCommitHash: false, CommandLogSize: 8, SplitDiff: "auto", diff --git a/pkg/gui/presentation/commits.go b/pkg/gui/presentation/commits.go index 1fc2c7d919b..16adc469b13 100644 --- a/pkg/gui/presentation/commits.go +++ b/pkg/gui/presentation/commits.go @@ -312,9 +312,17 @@ func displayCommit( bisectInfo *git_commands.BisectInfo, isYouAreHereCommit bool, ) []string { - hashColor := getHashColor(commit, diffName, cherryPickedCommitHashSet, bisectStatus, bisectInfo) bisectString := getBisectStatusText(bisectStatus, bisectInfo) + hashString := "" + hashColor := getHashColor(commit, diffName, cherryPickedCommitHashSet, bisectStatus, bisectInfo) + hashLength := common.UserConfig.Gui.CommitHashLength + if hashLength > len(commit.Hash) || hashLength < 1 { + hashString = hashColor.Sprint(commit.ShortHash()) + } else { + hashString = hashColor.Sprint(commit.Hash[:hashLength]) + } + actionString := "" if commit.Action != models.ActionNone { todoString := lo.Ternary(commit.Action == models.ActionConflict, "conflict", commit.Action.String()) @@ -373,7 +381,7 @@ func displayCommit( } else if icons.IsIconEnabled() { cols = append(cols, hashColor.Sprint(icons.IconForCommit(commit))) } - cols = append(cols, hashColor.Sprint(commit.ShortHash())) + cols = append(cols, hashString) cols = append(cols, bisectString) if fullDescription { cols = append(cols, style.FgBlue.Sprint( diff --git a/schema/config.json b/schema/config.json index 5d259cbd418..5c352ccb30b 100644 --- a/schema/config.json +++ b/schema/config.json @@ -309,6 +309,13 @@ "description": "If true (default), file icons are shown in the file views. Only relevant if NerdFontsVersion is not empty.", "default": true }, + "commitHashLength": { + "type": "integer", + "maximum": 12, + "minimum": 1, + "description": "Length of commit ID/ref (hash) in commits view.", + "default": 8 + }, "showBranchCommitHash": { "type": "boolean", "description": "If true, show commit hashes alongside branch names in the branches view."