summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Haller <stefan@haller-berlin.de>2024-04-28 08:22:48 +0200
committerGitHub <noreply@github.com>2024-04-28 08:22:48 +0200
commitb3a60ce407e78a3e1d41d3fa6cef5f974574eb02 (patch)
tree40414eeae5f34193c1029a026b7fc388847f2ed9
parentaa81e191e2905e6959f1d8e51c8589764ca0c520 (diff)
parentb63321a30293e8c9750f6f59390bfe0d1677ab8c (diff)
Add config options for length of commit hash displayed in commits view (#3505)
- **PR Description** Add a new config option `gui.commitHashLength` to change the length of the commit hash displayed in commits view. default: <img width="472" alt="image" src="https://github.com/jesseduffield/lazygit/assets/98684296/36dced1e-0c74-4dbd-8670-98e17a75d83a"> With config: ```yaml gui: commitHashLength: 3 ``` <img width="463" alt="image" src="https://github.com/jesseduffield/lazygit/assets/98684296/e8023cd8-f138-4af8-ae0e-3661f80206ca"> - Changes - Added the user config option to to `pkg/config/user_config.go` and `schema/config.json` - documented in `docs/Config.md` - Changed the code that displays the hash in `pkg/gui/presentation/commits.go` --- - **Please check if the PR fulfills these requirements** * [x] Cheatsheets are up-to-date (run `go generate ./...`) * [x] Code has been formatted (see [here](https://github.com/jesseduffield/lazygit/blob/master/CONTRIBUTING.md#code-formatting)) * [ ] Tests have been added/updated (see [here](https://github.com/jesseduffield/lazygit/blob/master/pkg/integration/README.md) for the integration test guide) * [ ] Text is internationalised (see [here](https://github.com/jesseduffield/lazygit/blob/master/CONTRIBUTING.md#internationalisation)) * [x] Docs (specifically `docs/Config.md`) have been updated if necessary * [x] You've read through your own file changes for silly mistakes etc
-rw-r--r--docs/Config.md1
-rw-r--r--pkg/config/user_config.go3
-rw-r--r--pkg/gui/presentation/commits.go42
-rw-r--r--schema/config.json6
4 files changed, 39 insertions, 13 deletions
diff --git a/docs/Config.md b/docs/Config.md
index c6f5cbbf9..077637ae8 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 hash in commits view. 0 shows '*' if NF icons aren't enabled
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 29b46e903..c1562fcde 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 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.
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 827648dda..cff36bf30 100644
--- a/pkg/gui/presentation/commits.go
+++ b/pkg/gui/presentation/commits.go
@@ -312,9 +312,33 @@ 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) {
+ hashString = hashColor.Sprint(commit.Hash)
+ } else if hashLength > 0 {
+ hashString = hashColor.Sprint(commit.Hash[:hashLength])
+ } else if !icons.IsIconEnabled() { // hashLength <= 0
+ hashString = hashColor.Sprint("*")
+ }
+
+ divergenceString := ""
+ if commit.Divergence != models.DivergenceNone {
+ divergenceString = hashColor.Sprint(lo.Ternary(commit.Divergence == models.DivergenceLeft, "↑", "↓"))
+ } else if icons.IsIconEnabled() {
+ divergenceString = hashColor.Sprint(icons.IconForCommit(commit))
+ }
+
+ descriptionString := ""
+ if fullDescription {
+ descriptionString = style.FgBlue.Sprint(
+ utils.UnixToDateSmart(now, commit.UnixTimestamp, timeFormat, shortTimeFormat),
+ )
+ }
+
actionString := ""
if commit.Action != models.ActionNone {
todoString := lo.Ternary(commit.Action == models.ActionConflict, "conflict", commit.Action.String())
@@ -368,20 +392,12 @@ func displayCommit(
}
cols := make([]string, 0, 7)
- if commit.Divergence != models.DivergenceNone {
- cols = append(cols, hashColor.Sprint(lo.Ternary(commit.Divergence == models.DivergenceLeft, "↑", "↓")))
- } else if icons.IsIconEnabled() {
- cols = append(cols, hashColor.Sprint(icons.IconForCommit(commit)))
- }
- cols = append(cols, hashColor.Sprint(commit.ShortHash()))
- cols = append(cols, bisectString)
- if fullDescription {
- cols = append(cols, style.FgBlue.Sprint(
- utils.UnixToDateSmart(now, commit.UnixTimestamp, timeFormat, shortTimeFormat),
- ))
- }
cols = append(
cols,
+ divergenceString,
+ hashString,
+ bisectString,
+ descriptionString,
actionString,
authorFunc(commit.AuthorName),
graphLine+mark+tagString+theme.DefaultTextColor.Sprint(name),
diff --git a/schema/config.json b/schema/config.json
index 5d259cbd4..41a8859a4 100644
--- a/schema/config.json
+++ b/schema/config.json
@@ -309,6 +309,12 @@
"description": "If true (default), file icons are shown in the file views. Only relevant if NerdFontsVersion is not empty.",
"default": true
},
+ "commitHashLength": {
+ "type": "integer",
+ "minimum": 0,
+ "description": "Length of commit hash in commits view. 0 shows '*' if NF icons aren't on.",
+ "default": 8
+ },
"showBranchCommitHash": {
"type": "boolean",
"description": "If true, show commit hashes alongside branch names in the branches view."