From 6ab5d7f69ba51f9b261cc2179ef8f82cfa35be81 Mon Sep 17 00:00:00 2001 From: Stefan Haller <stefan@haller-berlin.de> Date: Thu, 15 Jun 2023 13:25:32 +0200 Subject: [PATCH 1/2] Turn remoteIcons into a map We don't actually use it to do map lookups; we still iterate over it in the same way as before. However, using a map makes it easier to patch elements; see the next commit. --- pkg/gui/presentation/icons/git_icons.go | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/pkg/gui/presentation/icons/git_icons.go b/pkg/gui/presentation/icons/git_icons.go index a66149b55..342e015fe 100644 --- a/pkg/gui/presentation/icons/git_icons.go +++ b/pkg/gui/presentation/icons/git_icons.go @@ -16,16 +16,11 @@ const ( STASH_ICON = "\uf01c" // ) -type remoteIcon struct { - domain string - icon string -} - -var remoteIcons = []remoteIcon{ - {domain: "github.com", icon: "\ue709"}, // - {domain: "bitbucket.org", icon: "\ue703"}, // - {domain: "gitlab.com", icon: "\uf296"}, // - {domain: "dev.azure.com", icon: "\ufd03"}, // ﴃ +var remoteIcons = map[string]string{ + "github.com": "\ue709", // + "bitbucket.org": "\ue703", // + "gitlab.com": "\uf296", // + "dev.azure.com": "\ufd03", // ﴃ } func IconForBranch(branch *models.Branch) string { @@ -51,10 +46,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 } } } From 77c5d1761d0743b6704b660b956deeee0d963a65 Mon Sep 17 00:00:00 2001 From: Stefan Haller <stefan@haller-berlin.de> Date: Thu, 15 Jun 2023 13:39:11 +0200 Subject: [PATCH 2/2] Add nerdFontsVersion config --- docs/Config.md | 8 +- pkg/config/user_config.go | 2 + pkg/gui/gui.go | 6 +- pkg/gui/presentation/icons/file_icons.go | 518 ++++++++++++----------- pkg/gui/presentation/icons/git_icons.go | 33 +- pkg/gui/presentation/icons/icons.go | 19 +- 6 files changed, 315 insertions(+), 271 deletions(-) diff --git a/docs/Config.md b/docs/Config.md index 938aaba29..5c14b2da9 100644 --- a/docs/Config.md +++ b/docs/Config.md @@ -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) diff --git a/pkg/config/user_config.go b/pkg/config/user_config.go index 597253e3d..dcc0e0ef6 100644 --- a/pkg/config/user_config.go +++ b/pkg/config/user_config.go @@ -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, diff --git a/pkg/gui/gui.go b/pkg/gui/gui.go index b429bda27..b922c5f77 100644 --- a/pkg/gui/gui.go +++ b/pkg/gui/gui.go @@ -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} diff --git a/pkg/gui/presentation/icons/file_icons.go b/pkg/gui/presentation/icons/file_icons.go index 6e647038b..b4ff58919 100644 --- a/pkg/gui/presentation/icons/file_icons.go +++ b/pkg/gui/presentation/icons/file_icons.go @@ -57,260 +57,270 @@ var nameIconMap = map[string]string{ } var extIconMap = map[string]string{ - ".ai": "\ue7b4", // - ".android": "\ue70e", // - ".apk": "\ue70e", // - ".apple": "\uf179", // - ".avi": "\uf03d", // - ".avif": "\uf1c5", // - ".avro": "\ue60b", // - ".awk": "\uf489", // - ".bash": "\uf489", // - ".bash_history": "\uf489", // - ".bash_profile": "\uf489", // - ".bashrc": "\uf489", // - ".bat": "\uf17a", // - ".bats": "\uf489", // - ".bmp": "\uf1c5", // - ".bz": "\uf410", // - ".bz2": "\uf410", // - ".c": "\ue61e", // - ".c++": "\ue61d", // - ".cab": "\ue70f", // - ".cc": "\ue61d", // - ".cfg": "\ue615", // - ".class": "\ue256", // - ".clj": "\ue768", // - ".cljs": "\ue76a", // - ".cls": "\uf034", // - ".cmd": "\ue70f", // - ".coffee": "\uf0f4", // - ".conf": "\ue615", // - ".cp": "\ue61d", // - ".cpio": "\uf410", // - ".cpp": "\ue61d", // - ".cs": "\uf81a", // - ".csh": "\uf489", // - ".cshtml": "\uf1fa", // - ".csproj": "\uf81a", // - ".css": "\ue749", // - ".csv": "\uf1c3", // - ".csx": "\uf81a", // - ".cxx": "\ue61d", // - ".d": "\ue7af", // - ".dart": "\ue798", // - ".db": "\uf1c0", // - ".deb": "\ue77d", // - ".diff": "\uf440", // - ".djvu": "\uf02d", // - ".dll": "\ue70f", // - ".doc": "\uf1c2", // - ".docx": "\uf1c2", // - ".ds_store": "\uf179", // - ".DS_store": "\uf179", // - ".dump": "\uf1c0", // - ".ebook": "\ue28b", // - ".ebuild": "\uf30d", // - ".editorconfig": "\ue615", // - ".ejs": "\ue618", // - ".elm": "\ue62c", // - ".env": "\uf462", // - ".eot": "\uf031", // - ".epub": "\ue28a", // - ".erb": "\ue73b", // - ".erl": "\ue7b1", // - ".ex": "\ue62d", // - ".exe": "\uf17a", // - ".exs": "\ue62d", // - ".fish": "\uf489", // - ".flac": "\uf001", // - ".flv": "\uf03d", // - ".font": "\uf031", // - ".fs": "\ue7a7", // - ".fsi": "\ue7a7", // - ".fsx": "\ue7a7", // - ".gdoc": "\uf1c2", // - ".gem": "\ue21e", // - ".gemfile": "\ue21e", // - ".gemspec": "\ue21e", // - ".gform": "\uf298", // - ".gif": "\uf1c5", // - ".git": "\uf1d3", // - ".gitattributes": "\uf1d3", // - ".gitignore": "\uf1d3", // - ".gitmodules": "\uf1d3", // - ".go": "\ue626", // - ".gradle": "\ue256", // - ".groovy": "\ue775", // - ".gsheet": "\uf1c3", // - ".gslides": "\uf1c4", // - ".guardfile": "\ue21e", // - ".gz": "\uf410", // - ".h": "\uf0fd", // - ".hbs": "\ue60f", // - ".hpp": "\uf0fd", // - ".hs": "\ue777", // - ".htm": "\uf13b", // - ".html": "\uf13b", // - ".hxx": "\uf0fd", // - ".ico": "\uf1c5", // - ".image": "\uf1c5", // - ".iml": "\ue7b5", // - ".ini": "\uf17a", // - ".ipynb": "\ue606", // - ".iso": "\ue271", // - ".j2c": "\uf1c5", // - ".j2k": "\uf1c5", // - ".jad": "\ue256", // - ".jar": "\ue256", // - ".java": "\ue256", // - ".jfi": "\uf1c5", // - ".jfif": "\uf1c5", // - ".jif": "\uf1c5", // - ".jl": "\ue624", // - ".jmd": "\uf48a", // - ".jp2": "\uf1c5", // - ".jpe": "\uf1c5", // - ".jpeg": "\uf1c5", // - ".jpg": "\uf1c5", // - ".jpx": "\uf1c5", // - ".js": "\ue74e", // - ".json": "\ue60b", // - ".jsx": "\ue7ba", // - ".jxl": "\uf1c5", // - ".ksh": "\uf489", // - ".kt": "\ue634", // - ".kts": "\ue634", // - ".latex": "\uf034", // - ".less": "\ue758", // - ".lhs": "\ue777", // - ".license": "\uf718", // - ".localized": "\uf179", // - ".lock": "\uf023", // - ".log": "\uf18d", // - ".lua": "\ue620", // - ".lz": "\uf410", // - ".lz4": "\uf410", // - ".lzh": "\uf410", // - ".lzma": "\uf410", // - ".lzo": "\uf410", // - ".m": "\ue61e", // - ".mm": "\ue61d", // - ".m4a": "\uf001", // - ".markdown": "\uf48a", // - ".md": "\uf48a", // - ".mjs": "\ue74e", // - ".mk": "\uf489", // - ".mkd": "\uf48a", // - ".mkv": "\uf03d", // - ".mobi": "\ue28b", // - ".mov": "\uf03d", // - ".mp3": "\uf001", // - ".mp4": "\uf03d", // - ".msi": "\ue70f", // - ".mustache": "\ue60f", // - ".nix": "\uf313", // - ".node": "\uf898", // - ".npmignore": "\ue71e", // - ".odp": "\uf1c4", // - ".ods": "\uf1c3", // - ".odt": "\uf1c2", // - ".ogg": "\uf001", // - ".ogv": "\uf03d", // - ".otf": "\uf031", // - ".part": "\uf43a", // - ".patch": "\uf440", // - ".pdf": "\uf1c1", // - ".php": "\ue73d", // - ".pl": "\ue769", // - ".png": "\uf1c5", // - ".ppt": "\uf1c4", // - ".pptx": "\uf1c4", // - ".procfile": "\ue21e", // - ".properties": "\ue60b", // - ".ps1": "\uf489", // - ".psd": "\ue7b8", // - ".pxm": "\uf1c5", // - ".py": "\ue606", // - ".pyc": "\ue606", // - ".r": "\uf25d", // - ".rakefile": "\ue21e", // - ".rar": "\uf410", // - ".razor": "\uf1fa", // - ".rb": "\ue21e", // - ".rdata": "\uf25d", // - ".rdb": "\ue76d", // - ".rdoc": "\uf48a", // - ".rds": "\uf25d", // - ".readme": "\uf48a", // - ".rlib": "\ue7a8", // - ".rmd": "\uf48a", // - ".rpm": "\ue7bb", // - ".rs": "\ue7a8", // - ".rspec": "\ue21e", // - ".rspec_parallel": "\ue21e", // - ".rspec_status": "\ue21e", // - ".rss": "\uf09e", // - ".rtf": "\uf718", // - ".ru": "\ue21e", // - ".rubydoc": "\ue73b", // - ".sass": "\ue603", // - ".scala": "\ue737", // - ".scss": "\ue749", // - ".sh": "\uf489", // - ".shell": "\uf489", // - ".slim": "\ue73b", // - ".sln": "\ue70c", // - ".so": "\uf17c", // - ".sql": "\uf1c0", // - ".sqlite3": "\ue7c4", // - ".sty": "\uf034", // - ".styl": "\ue600", // - ".stylus": "\ue600", // - ".svg": "\uf1c5", // - ".swift": "\ue755", // - ".tar": "\uf410", // - ".taz": "\uf410", // - ".tbz": "\uf410", // - ".tbz2": "\uf410", // - ".tex": "\uf034", // - ".tgz": "\uf410", // - ".tiff": "\uf1c5", // - ".tlz": "\uf410", // - ".toml": "\ue615", // - ".torrent": "\ue275", // - ".ts": "\ue628", // - ".tsv": "\uf1c3", // - ".tsx": "\ue7ba", // - ".ttf": "\uf031", // - ".twig": "\ue61c", // - ".txt": "\uf15c", // - ".txz": "\uf410", // - ".tz": "\uf410", // - ".tzo": "\uf410", // - ".video": "\uf03d", // - ".vim": "\ue62b", // - ".vue": "\ufd42", // ﵂ - ".war": "\ue256", // - ".wav": "\uf001", // - ".webm": "\uf03d", // - ".webp": "\uf1c5", // - ".windows": "\uf17a", // - ".woff": "\uf031", // - ".woff2": "\uf031", // - ".xhtml": "\uf13b", // - ".xls": "\uf1c3", // - ".xlsx": "\uf1c3", // - ".xml": "\uf121", // - ".xul": "\uf121", // - ".xz": "\uf410", // - ".yaml": "\uf481", // - ".yml": "\uf481", // - ".zip": "\uf410", // - ".zsh": "\uf489", // - ".zsh-theme": "\uf489", // - ".zshrc": "\uf489", // - ".zst": "\uf410", // + ".ai": "\ue7b4", // + ".android": "\ue70e", // + ".apk": "\ue70e", // + ".apple": "\uf179", // + ".avi": "\uf03d", // + ".avif": "\uf1c5", // + ".avro": "\ue60b", // + ".awk": "\uf489", // + ".bash": "\uf489", // + ".bash_history": "\uf489", // + ".bash_profile": "\uf489", // + ".bashrc": "\uf489", // + ".bat": "\uf17a", // + ".bats": "\uf489", // + ".bmp": "\uf1c5", // + ".bz": "\uf410", // + ".bz2": "\uf410", // + ".c": "\ue61e", // + ".c++": "\ue61d", // + ".cab": "\ue70f", // + ".cc": "\ue61d", // + ".cfg": "\ue615", // + ".class": "\ue256", // + ".clj": "\ue768", // + ".cljs": "\ue76a", // + ".cls": "\uf034", // + ".cmd": "\ue70f", // + ".coffee": "\uf0f4", // + ".conf": "\ue615", // + ".cp": "\ue61d", // + ".cpio": "\uf410", // + ".cpp": "\ue61d", // + ".cs": "\U000f031b", // + ".csh": "\uf489", // + ".cshtml": "\uf1fa", // + ".csproj": "\U000f031b", // + ".css": "\ue749", // + ".csv": "\uf1c3", // + ".csx": "\U000f031b", // + ".cxx": "\ue61d", // + ".d": "\ue7af", // + ".dart": "\ue798", // + ".db": "\uf1c0", // + ".deb": "\ue77d", // + ".diff": "\uf440", // + ".djvu": "\uf02d", // + ".dll": "\ue70f", // + ".doc": "\uf1c2", // + ".docx": "\uf1c2", // + ".ds_store": "\uf179", // + ".DS_store": "\uf179", // + ".dump": "\uf1c0", // + ".ebook": "\ue28b", // + ".ebuild": "\uf30d", // + ".editorconfig": "\ue615", // + ".ejs": "\ue618", // + ".elm": "\ue62c", // + ".env": "\uf462", // + ".eot": "\uf031", // + ".epub": "\ue28a", // + ".erb": "\ue73b", // + ".erl": "\ue7b1", // + ".ex": "\ue62d", // + ".exe": "\uf17a", // + ".exs": "\ue62d", // + ".fish": "\uf489", // + ".flac": "\uf001", // + ".flv": "\uf03d", // + ".font": "\uf031", // + ".fs": "\ue7a7", // + ".fsi": "\ue7a7", // + ".fsx": "\ue7a7", // + ".gdoc": "\uf1c2", // + ".gem": "\ue21e", // + ".gemfile": "\ue21e", // + ".gemspec": "\ue21e", // + ".gform": "\uf298", // + ".gif": "\uf1c5", // + ".git": "\uf1d3", // + ".gitattributes": "\uf1d3", // + ".gitignore": "\uf1d3", // + ".gitmodules": "\uf1d3", // + ".go": "\ue626", // + ".gradle": "\ue256", // + ".groovy": "\ue775", // + ".gsheet": "\uf1c3", // + ".gslides": "\uf1c4", // + ".guardfile": "\ue21e", // + ".gz": "\uf410", // + ".h": "\uf0fd", // + ".hbs": "\ue60f", // + ".hpp": "\uf0fd", // + ".hs": "\ue777", // + ".htm": "\uf13b", // + ".html": "\uf13b", // + ".hxx": "\uf0fd", // + ".ico": "\uf1c5", // + ".image": "\uf1c5", // + ".iml": "\ue7b5", // + ".ini": "\uf17a", // + ".ipynb": "\ue606", // + ".iso": "\ue271", // + ".j2c": "\uf1c5", // + ".j2k": "\uf1c5", // + ".jad": "\ue256", // + ".jar": "\ue256", // + ".java": "\ue256", // + ".jfi": "\uf1c5", // + ".jfif": "\uf1c5", // + ".jif": "\uf1c5", // + ".jl": "\ue624", // + ".jmd": "\uf48a", // + ".jp2": "\uf1c5", // + ".jpe": "\uf1c5", // + ".jpeg": "\uf1c5", // + ".jpg": "\uf1c5", // + ".jpx": "\uf1c5", // + ".js": "\ue74e", // + ".json": "\ue60b", // + ".jsx": "\ue7ba", // + ".jxl": "\uf1c5", // + ".ksh": "\uf489", // + ".kt": "\ue634", // + ".kts": "\ue634", // + ".latex": "\uf034", // + ".less": "\ue758", // + ".lhs": "\ue777", // + ".license": "\U000f0219", // + ".localized": "\uf179", // + ".lock": "\uf023", // + ".log": "\uf18d", // + ".lua": "\ue620", // + ".lz": "\uf410", // + ".lz4": "\uf410", // + ".lzh": "\uf410", // + ".lzma": "\uf410", // + ".lzo": "\uf410", // + ".m": "\ue61e", // + ".mm": "\ue61d", // + ".m4a": "\uf001", // + ".markdown": "\uf48a", // + ".md": "\uf48a", // + ".mjs": "\ue74e", // + ".mk": "\uf489", // + ".mkd": "\uf48a", // + ".mkv": "\uf03d", // + ".mobi": "\ue28b", // + ".mov": "\uf03d", // + ".mp3": "\uf001", // + ".mp4": "\uf03d", // + ".msi": "\ue70f", // + ".mustache": "\ue60f", // + ".nix": "\uf313", // + ".node": "\U000f0399", // + ".npmignore": "\ue71e", // + ".odp": "\uf1c4", // + ".ods": "\uf1c3", // + ".odt": "\uf1c2", // + ".ogg": "\uf001", // + ".ogv": "\uf03d", // + ".otf": "\uf031", // + ".part": "\uf43a", // + ".patch": "\uf440", // + ".pdf": "\uf1c1", // + ".php": "\ue73d", // + ".pl": "\ue769", // + ".png": "\uf1c5", // + ".ppt": "\uf1c4", // + ".pptx": "\uf1c4", // + ".procfile": "\ue21e", // + ".properties": "\ue60b", // + ".ps1": "\uf489", // + ".psd": "\ue7b8", // + ".pxm": "\uf1c5", // + ".py": "\ue606", // + ".pyc": "\ue606", // + ".r": "\uf25d", // + ".rakefile": "\ue21e", // + ".rar": "\uf410", // + ".razor": "\uf1fa", // + ".rb": "\ue21e", // + ".rdata": "\uf25d", // + ".rdb": "\ue76d", // + ".rdoc": "\uf48a", // + ".rds": "\uf25d", // + ".readme": "\uf48a", // + ".rlib": "\ue7a8", // + ".rmd": "\uf48a", // + ".rpm": "\ue7bb", // + ".rs": "\ue7a8", // + ".rspec": "\ue21e", // + ".rspec_parallel": "\ue21e", // + ".rspec_status": "\ue21e", // + ".rss": "\uf09e", // + ".rtf": "\U000f0219", // + ".ru": "\ue21e", // + ".rubydoc": "\ue73b", // + ".sass": "\ue603", // + ".scala": "\ue737", // + ".scss": "\ue749", // + ".sh": "\uf489", // + ".shell": "\uf489", // + ".slim": "\ue73b", // + ".sln": "\ue70c", // + ".so": "\uf17c", // + ".sql": "\uf1c0", // + ".sqlite3": "\ue7c4", // + ".sty": "\uf034", // + ".styl": "\ue600", // + ".stylus": "\ue600", // + ".svg": "\uf1c5", // + ".swift": "\ue755", // + ".tar": "\uf410", // + ".taz": "\uf410", // + ".tbz": "\uf410", // + ".tbz2": "\uf410", // + ".tex": "\uf034", // + ".tgz": "\uf410", // + ".tiff": "\uf1c5", // + ".tlz": "\uf410", // + ".toml": "\ue615", // + ".torrent": "\ue275", // + ".ts": "\ue628", // + ".tsv": "\uf1c3", // + ".tsx": "\ue7ba", // + ".ttf": "\uf031", // + ".twig": "\ue61c", // + ".txt": "\uf15c", // + ".txz": "\uf410", // + ".tz": "\uf410", // + ".tzo": "\uf410", // + ".video": "\uf03d", // + ".vim": "\ue62b", // + ".vue": "\U000f0844", // + ".war": "\ue256", // + ".wav": "\uf001", // + ".webm": "\uf03d", // + ".webp": "\uf1c5", // + ".windows": "\uf17a", // + ".woff": "\uf031", // + ".woff2": "\uf031", // + ".xhtml": "\uf13b", // + ".xls": "\uf1c3", // + ".xlsx": "\uf1c3", // + ".xml": "\uf121", // + ".xul": "\uf121", // + ".xz": "\uf410", // + ".yaml": "\uf481", // + ".yml": "\uf481", // + ".zip": "\uf410", // + ".zsh": "\uf489", // + ".zsh-theme": "\uf489", // + ".zshrc": "\uf489", // + ".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 { diff --git a/pkg/gui/presentation/icons/git_icons.go b/pkg/gui/presentation/icons/git_icons.go index 342e015fe..6fd8bfb57 100644 --- a/pkg/gui/presentation/icons/git_icons.go +++ b/pkg/gui/presentation/icons/git_icons.go @@ -6,21 +6,30 @@ import ( "github.com/jesseduffield/lazygit/pkg/commands/models" ) -const ( - BRANCH_ICON = "\ufb2b" // שׂ - DETACHED_HEAD_ICON = "\ue729" // - TAG_ICON = "\uf02b" // - COMMIT_ICON = "\ufc16" // ﰖ - MERGE_COMMIT_ICON = "\ufb2c" // שּׁ - DEFAULT_REMOTE_ICON = "\uf7a1" // - STASH_ICON = "\uf01c" // +var ( + BRANCH_ICON = "\U000f062c" // + DETACHED_HEAD_ICON = "\ue729" // + TAG_ICON = "\uf02b" // + COMMIT_ICON = "\U000f0718" // + MERGE_COMMIT_ICON = "\U000f062d" // + DEFAULT_REMOTE_ICON = "\uf02a2" // + STASH_ICON = "\uf01c" // ) var remoteIcons = map[string]string{ - "github.com": "\ue709", // - "bitbucket.org": "\ue703", // - "gitlab.com": "\uf296", // - "dev.azure.com": "\ufd03", // ﴃ + "github.com": "\ue709", // + "bitbucket.org": "\ue703", // + "gitlab.com": "\uf296", // + "dev.azure.com": "\U000f0805", // +} + +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 { diff --git a/pkg/gui/presentation/icons/icons.go b/pkg/gui/presentation/icons/icons.go index 81b16108b..fbfc9bb07 100644 --- a/pkg/gui/presentation/icons/icons.go +++ b/pkg/gui/presentation/icons/icons.go @@ -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 }