mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-07-15 01:34:26 +02:00
Merge pull request #2731 from jesseduffield/config-for-nerd-fonts-version
Add config for nerd fonts version
This commit is contained in:
@ -62,7 +62,8 @@ gui:
|
||||
experimentalShowBranchHeads: false # visualize branch heads with (*) in commits list
|
||||
showBottomLine: true # for hiding the bottom information line (unless it has important information to tell you)
|
||||
showCommandLog: true
|
||||
showIcons: false
|
||||
showIcons: false # deprecated: use nerdFontsVersion instead
|
||||
nerdFontsVersion: "" # nerd fonts version to use ("2" or "3"); empty means don't show nerd font icons
|
||||
commandLogSize: 8
|
||||
splitDiff: 'auto' # one of 'auto' | 'always'
|
||||
skipRewordInEditorWarning: false # for skipping the confirmation before launching the reword editor
|
||||
@ -420,9 +421,12 @@ If you are using [Nerd Fonts](https://www.nerdfonts.com), you can display icons.
|
||||
|
||||
```yaml
|
||||
gui:
|
||||
showIcons: true
|
||||
nerdFontsVersion: "3"
|
||||
```
|
||||
|
||||
Supported versions are "2" and "3". The deprecated config `showIcons` sets the
|
||||
version to "2" for backwards compatibility.
|
||||
|
||||
## Keybindings
|
||||
|
||||
For all possible keybinding options, check [Custom_Keybindings.md](https://github.com/jesseduffield/lazygit/blob/master/docs/keybindings/Custom_Keybindings.md)
|
||||
|
@ -49,6 +49,7 @@ type GuiConfig struct {
|
||||
ShowCommandLog bool `yaml:"showCommandLog"`
|
||||
ShowBottomLine bool `yaml:"showBottomLine"`
|
||||
ShowIcons bool `yaml:"showIcons"`
|
||||
NerdFontsVersion string `yaml:"nerdFontsVersion"`
|
||||
ShowBranchCommitHash bool `yaml:"showBranchCommitHash"`
|
||||
ExperimentalShowBranchHeads bool `yaml:"experimentalShowBranchHeads"`
|
||||
CommandLogSize int `yaml:"commandLogSize"`
|
||||
@ -426,6 +427,7 @@ func GetDefaultConfig() *UserConfig {
|
||||
ShowFileTree: true,
|
||||
ShowRandomTip: true,
|
||||
ShowIcons: false,
|
||||
NerdFontsVersion: "",
|
||||
ExperimentalShowBranchHeads: false,
|
||||
ShowBranchCommitHash: false,
|
||||
CommandLogSize: 8,
|
||||
|
@ -496,7 +496,11 @@ func NewGui(
|
||||
gui.c = helperCommon
|
||||
|
||||
authors.SetCustomAuthors(gui.UserConfig.Gui.AuthorColors)
|
||||
icons.SetIconEnabled(gui.UserConfig.Gui.ShowIcons)
|
||||
if gui.UserConfig.Gui.NerdFontsVersion != "" {
|
||||
icons.SetNerdFontsVersion(gui.UserConfig.Gui.NerdFontsVersion)
|
||||
} else if gui.UserConfig.Gui.ShowIcons {
|
||||
icons.SetNerdFontsVersion("2")
|
||||
}
|
||||
presentation.SetCustomBranches(gui.UserConfig.Gui.BranchColors)
|
||||
|
||||
gui.BackgroundRoutineMgr = &BackgroundRoutineMgr{gui: gui}
|
||||
|
@ -89,13 +89,13 @@ var extIconMap = map[string]string{
|
||||
".cp": "\ue61d", //
|
||||
".cpio": "\uf410", //
|
||||
".cpp": "\ue61d", //
|
||||
".cs": "\uf81a", //
|
||||
".cs": "\U000f031b", //
|
||||
".csh": "\uf489", //
|
||||
".cshtml": "\uf1fa", //
|
||||
".csproj": "\uf81a", //
|
||||
".csproj": "\U000f031b", //
|
||||
".css": "\ue749", //
|
||||
".csv": "\uf1c3", //
|
||||
".csx": "\uf81a", //
|
||||
".csx": "\U000f031b", //
|
||||
".cxx": "\ue61d", //
|
||||
".d": "\ue7af", //
|
||||
".dart": "\ue798", //
|
||||
@ -184,7 +184,7 @@ var extIconMap = map[string]string{
|
||||
".latex": "\uf034", //
|
||||
".less": "\ue758", //
|
||||
".lhs": "\ue777", //
|
||||
".license": "\uf718", //
|
||||
".license": "\U000f0219", //
|
||||
".localized": "\uf179", //
|
||||
".lock": "\uf023", //
|
||||
".log": "\uf18d", //
|
||||
@ -210,7 +210,7 @@ var extIconMap = map[string]string{
|
||||
".msi": "\ue70f", //
|
||||
".mustache": "\ue60f", //
|
||||
".nix": "\uf313", //
|
||||
".node": "\uf898", //
|
||||
".node": "\U000f0399", //
|
||||
".npmignore": "\ue71e", //
|
||||
".odp": "\uf1c4", //
|
||||
".ods": "\uf1c3", //
|
||||
@ -251,7 +251,7 @@ var extIconMap = map[string]string{
|
||||
".rspec_parallel": "\ue21e", //
|
||||
".rspec_status": "\ue21e", //
|
||||
".rss": "\uf09e", //
|
||||
".rtf": "\uf718", //
|
||||
".rtf": "\U000f0219", //
|
||||
".ru": "\ue21e", //
|
||||
".rubydoc": "\ue73b", //
|
||||
".sass": "\ue603", //
|
||||
@ -290,7 +290,7 @@ var extIconMap = map[string]string{
|
||||
".tzo": "\uf410", //
|
||||
".video": "\uf03d", //
|
||||
".vim": "\ue62b", //
|
||||
".vue": "\ufd42", // ﵂
|
||||
".vue": "\U000f0844", //
|
||||
".war": "\ue256", //
|
||||
".wav": "\uf001", //
|
||||
".webm": "\uf03d", //
|
||||
@ -313,6 +313,16 @@ var extIconMap = map[string]string{
|
||||
".zst": "\uf410", //
|
||||
}
|
||||
|
||||
func patchFileIconsForNerdFontsV2() {
|
||||
extIconMap[".cs"] = "\uf81a" //
|
||||
extIconMap[".csproj"] = "\uf81a" //
|
||||
extIconMap[".csx"] = "\uf81a" //
|
||||
extIconMap[".license"] = "\uf718" //
|
||||
extIconMap[".node"] = "\uf898" //
|
||||
extIconMap[".rtf"] = "\uf718" //
|
||||
extIconMap[".vue"] = "\ufd42" // ﵂
|
||||
}
|
||||
|
||||
func IconForFile(name string, isSubmodule bool, isDirectory bool) string {
|
||||
base := filepath.Base(name)
|
||||
if icon, ok := nameIconMap[base]; ok {
|
||||
|
@ -6,26 +6,30 @@ import (
|
||||
"github.com/jesseduffield/lazygit/pkg/commands/models"
|
||||
)
|
||||
|
||||
const (
|
||||
BRANCH_ICON = "\ufb2b" // שׂ
|
||||
var (
|
||||
BRANCH_ICON = "\U000f062c" //
|
||||
DETACHED_HEAD_ICON = "\ue729" //
|
||||
TAG_ICON = "\uf02b" //
|
||||
COMMIT_ICON = "\ufc16" // ﰖ
|
||||
MERGE_COMMIT_ICON = "\ufb2c" // שּׁ
|
||||
DEFAULT_REMOTE_ICON = "\uf7a1" //
|
||||
COMMIT_ICON = "\U000f0718" //
|
||||
MERGE_COMMIT_ICON = "\U000f062d" //
|
||||
DEFAULT_REMOTE_ICON = "\uf02a2" //
|
||||
STASH_ICON = "\uf01c" //
|
||||
)
|
||||
|
||||
type remoteIcon struct {
|
||||
domain string
|
||||
icon string
|
||||
var remoteIcons = map[string]string{
|
||||
"github.com": "\ue709", //
|
||||
"bitbucket.org": "\ue703", //
|
||||
"gitlab.com": "\uf296", //
|
||||
"dev.azure.com": "\U000f0805", //
|
||||
}
|
||||
|
||||
var remoteIcons = []remoteIcon{
|
||||
{domain: "github.com", icon: "\ue709"}, //
|
||||
{domain: "bitbucket.org", icon: "\ue703"}, //
|
||||
{domain: "gitlab.com", icon: "\uf296"}, //
|
||||
{domain: "dev.azure.com", icon: "\ufd03"}, // ﴃ
|
||||
func patchGitIconsForNerdFontsV2() {
|
||||
BRANCH_ICON = "\ufb2b" // שׂ
|
||||
COMMIT_ICON = "\ufc16" // ﰖ
|
||||
MERGE_COMMIT_ICON = "\ufb2c" // שּׁ
|
||||
DEFAULT_REMOTE_ICON = "\uf7a1" //
|
||||
|
||||
remoteIcons["dev.azure.com"] = "\ufd03" // ﴃ
|
||||
}
|
||||
|
||||
func IconForBranch(branch *models.Branch) string {
|
||||
@ -51,10 +55,10 @@ func IconForCommit(commit *models.Commit) string {
|
||||
}
|
||||
|
||||
func IconForRemote(remote *models.Remote) string {
|
||||
for _, r := range remoteIcons {
|
||||
for domain, icon := range remoteIcons {
|
||||
for _, url := range remote.Urls {
|
||||
if strings.Contains(url, r.domain) {
|
||||
return r.icon
|
||||
if strings.Contains(url, domain) {
|
||||
return icon
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,11 +1,26 @@
|
||||
package icons
|
||||
|
||||
import (
|
||||
"log"
|
||||
|
||||
"github.com/samber/lo"
|
||||
)
|
||||
|
||||
var isIconEnabled = false
|
||||
|
||||
func IsIconEnabled() bool {
|
||||
return isIconEnabled
|
||||
}
|
||||
|
||||
func SetIconEnabled(showIcons bool) {
|
||||
isIconEnabled = showIcons
|
||||
func SetNerdFontsVersion(version string) {
|
||||
if !lo.Contains([]string{"2", "3"}, version) {
|
||||
log.Fatalf("Unsupported nerdFontVersion %s", version)
|
||||
}
|
||||
|
||||
if version == "2" {
|
||||
patchGitIconsForNerdFontsV2()
|
||||
patchFileIconsForNerdFontsV2()
|
||||
}
|
||||
|
||||
isIconEnabled = true
|
||||
}
|
||||
|
Reference in New Issue
Block a user