summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Haller <stefan@haller-berlin.de>2024-01-12 13:16:25 +0100
committerStefan Haller <stefan@haller-berlin.de>2024-01-22 08:40:03 +0100
commit36134006c52269b1a80f2b42857f008b47db7e6c (patch)
treef3b7cafa13773bd43ad79465636f1a630d357ff9
parent321583952402b3e0db9fb74482d63783f186a2d6 (diff)
Add config setting to suppress showing file icons
-rw-r--r--docs/Config.md1
-rw-r--r--pkg/config/user_config.go3
-rw-r--r--pkg/gui/context/commit_files_context.go4
-rw-r--r--pkg/gui/context/working_tree_context.go4
-rw-r--r--pkg/gui/presentation/files.go12
-rw-r--r--pkg/gui/presentation/files_test.go4
-rw-r--r--schema/config.json5
7 files changed, 25 insertions, 8 deletions
diff --git a/docs/Config.md b/docs/Config.md
index dde60382a..312fd77f2 100644
--- a/docs/Config.md
+++ b/docs/Config.md
@@ -79,6 +79,7 @@ gui:
showCommandLog: true
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
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 e9f739a1d..0069c75b0 100644
--- a/pkg/config/user_config.go
+++ b/pkg/config/user_config.go
@@ -121,6 +121,8 @@ type GuiConfig struct {
// One of: '2' | '3' | empty string (default)
// If empty, do not show icons.
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"`
// If true, show commit hashes alongside branch names in the branches view.
ShowBranchCommitHash bool `yaml:"showBranchCommitHash"`
// Height of the command log view
@@ -635,6 +637,7 @@ func GetDefaultConfig() *UserConfig {
ShowRandomTip: true,
ShowIcons: false,
NerdFontsVersion: "",
+ ShowFileIcons: true,
ShowBranchCommitHash: false,
CommandLogSize: 8,
SplitDiff: "auto",
diff --git a/pkg/gui/context/commit_files_context.go b/pkg/gui/context/commit_files_context.go
index 989ca9acb..fbfff7144 100644
--- a/pkg/gui/context/commit_files_context.go
+++ b/pkg/gui/context/commit_files_context.go
@@ -4,6 +4,7 @@ import (
"github.com/jesseduffield/lazygit/pkg/commands/models"
"github.com/jesseduffield/lazygit/pkg/gui/filetree"
"github.com/jesseduffield/lazygit/pkg/gui/presentation"
+ "github.com/jesseduffield/lazygit/pkg/gui/presentation/icons"
"github.com/jesseduffield/lazygit/pkg/gui/style"
"github.com/jesseduffield/lazygit/pkg/gui/types"
"github.com/samber/lo"
@@ -33,7 +34,8 @@ func NewCommitFilesContext(c *ContextCommon) *CommitFilesContext {
return [][]string{{style.FgRed.Sprint("(none)")}}
}
- lines := presentation.RenderCommitFileTree(viewModel, c.Git().Patch.PatchBuilder)
+ showFileIcons := icons.IsIconEnabled() && c.UserConfig.Gui.ShowFileIcons
+ lines := presentation.RenderCommitFileTree(viewModel, c.Git().Patch.PatchBuilder, showFileIcons)
return lo.Map(lines, func(line string, _ int) []string {
return []string{line}
})
diff --git a/pkg/gui/context/working_tree_context.go b/pkg/gui/context/working_tree_context.go
index d286e408a..f3bc91929 100644
--- a/pkg/gui/context/working_tree_context.go
+++ b/pkg/gui/context/working_tree_context.go
@@ -4,6 +4,7 @@ import (
"github.com/jesseduffield/lazygit/pkg/commands/models"
"github.com/jesseduffield/lazygit/pkg/gui/filetree"
"github.com/jesseduffield/lazygit/pkg/gui/presentation"
+ "github.com/jesseduffield/lazygit/pkg/gui/presentation/icons"
"github.com/jesseduffield/lazygit/pkg/gui/types"
"github.com/samber/lo"
)
@@ -24,7 +25,8 @@ func NewWorkingTreeContext(c *ContextCommon) *WorkingTreeContext {
)
getDisplayStrings := func(_ int, _ int) [][]string {
- lines := presentation.RenderFileTree(viewModel, c.Model().Submodules)
+ showFileIcons := icons.IsIconEnabled() && c.UserConfig.Gui.ShowFileIcons
+ lines := presentation.RenderFileTree(viewModel, c.Model().Submodules, showFileIcons)
return lo.Map(lines, func(line string, _ int) []string {
return []string{line}
})
diff --git a/pkg/gui/presentation/files.go b/pkg/gui/presentation/files.go
index 35fc4616a..5941934c6 100644
--- a/pkg/gui/presentation/files.go
+++ b/pkg/gui/presentation/files.go
@@ -21,24 +21,26 @@ const (
func RenderFileTree(
tree filetree.IFileTree,
submoduleConfigs []*models.SubmoduleConfig,
+ showFileIcons bool,
) []string {
collapsedPaths := tree.CollapsedPaths()
return renderAux(tree.GetRoot().Raw(), collapsedPaths, -1, -1, func(node *filetree.Node[models.File], treeDepth int, visualDepth int, isCollapsed bool) string {
fileNode := filetree.NewFileNode(node)
- return getFileLine(isCollapsed, fileNode.GetHasUnstagedChanges(), fileNode.GetHasStagedChanges(), treeDepth, visualDepth, submoduleConfigs, node)
+ return getFileLine(isCollapsed, fileNode.GetHasUnstagedChanges(), fileNode.GetHasStagedChanges(), treeDepth, visualDepth, showFileIcons, submoduleConfigs, node)
})
}
func RenderCommitFileTree(
tree *filetree.CommitFileTreeViewModel,
patchBuilder *patch.PatchBuilder,
+ showFileIcons bool,
) []string {
collapsedPaths := tree.CollapsedPaths()
return renderAux(tree.GetRoot().Raw(), collapsedPaths, -1, -1, func(node *filetree.Node[models.CommitFile], treeDepth int, visualDepth int, isCollapsed bool) string {
status := commitFilePatchStatus(node, tree, patchBuilder)
- return getCommitFileLine(isCollapsed, treeDepth, visualDepth, node, status)
+ return getCommitFileLine(isCollapsed, treeDepth, visualDepth, node, status, showFileIcons)
})
}
@@ -109,6 +111,7 @@ func getFileLine(
hasStagedChanges bool,
treeDepth int,
visualDepth int,
+ showFileIcons bool,
submoduleConfigs []*models.SubmoduleConfig,
node *filetree.Node[models.File],
) string {
@@ -150,7 +153,7 @@ func getFileLine(
isLinkedWorktree := file != nil && file.IsWorktree
isDirectory := file == nil
- if icons.IsIconEnabled() {
+ if showFileIcons {
icon := icons.IconForFile(name, isSubmodule, isLinkedWorktree, isDirectory)
paint := color.C256(icon.Color, false)
output += paint.Sprint(icon.Icon) + nameColor.Sprint(" ")
@@ -189,6 +192,7 @@ func getCommitFileLine(
visualDepth int,
node *filetree.Node[models.CommitFile],
status patch.PatchStatus,
+ showFileIcons bool,
) string {
indentation := strings.Repeat(" ", visualDepth)
name := commitFileNameAtDepth(node, treeDepth)
@@ -236,7 +240,7 @@ func getCommitFileLine(
isSubmodule := false
isLinkedWorktree := false
- if icons.IsIconEnabled() {
+ if showFileIcons {
icon := icons.IconForFile(name, isSubmodule, isLinkedWorktree, isDirectory)
paint := color.C256(icon.Color, false)
output += paint.Sprint(icon.Icon) + " "
diff --git a/pkg/gui/presentation/files_test.go b/pkg/gui/presentation/files_test.go
index b6b543c65..bbaa53947 100644
--- a/pkg/gui/presentation/files_test.go
+++ b/pkg/gui/presentation/files_test.go
@@ -74,7 +74,7 @@ M file1
for _, path := range s.collapsedPaths {
viewModel.ToggleCollapsed(path)
}
- result := RenderFileTree(viewModel, nil)
+ result := RenderFileTree(viewModel, nil, false)
assert.EqualValues(t, s.expected, result)
})
}
@@ -141,7 +141,7 @@ M file1
},
)
patchBuilder.Start("from", "to", false, false)
- result := RenderCommitFileTree(viewModel, patchBuilder)
+ result := RenderCommitFileTree(viewModel, patchBuilder, false)
assert.EqualValues(t, s.expected, result)
})
}
diff --git a/schema/config.json b/schema/config.json
index d5131c0ff..92ee774df 100644
--- a/schema/config.json
+++ b/schema/config.json
@@ -304,6 +304,11 @@
],
"description": "Nerd fonts version to use.\nOne of: '2' | '3' | empty string (default)\nIf empty, do not show icons."
},
+ "showFileIcons": {
+ "type": "boolean",
+ "description": "If true (default), file icons are shown in the file views. Only relevant if NerdFontsVersion is not empty.",
+ "default": true
+ },
"showBranchCommitHash": {
"type": "boolean",
"description": "If true, show commit hashes alongside branch names in the branches view."