diff options
author | Stefan Haller <stefan@haller-berlin.de> | 2024-03-22 08:16:20 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-03-22 08:16:20 +0100 |
commit | 337a0dbc9b3a6fb1acae71732735d07356341d91 (patch) | |
tree | e138ab300f8e492b748340982e5f41de03e8be3e | |
parent | 251bfb6a24f6f70d5db0c443b1d4a92a08e6826c (diff) | |
parent | 587013392434f3c2a7f7ec2136521a4b4ad72a05 (diff) |
Make the links in the status panel point to the current version rather than master (#3397)
We've seen a lot of issues recently where people complain that lazygit
doesn't behave as documented, but that was only because they were
running the latest release but were looking at the documentation of
master. Make the documentation links in the status panel point to the
release that they are using in the hope that this will help a little bit
with this problem.
-rw-r--r-- | pkg/constants/links.go | 4 | ||||
-rw-r--r-- | pkg/gui/controllers/status_controller.go | 49 |
2 files changed, 44 insertions, 9 deletions
diff --git a/pkg/constants/links.go b/pkg/constants/links.go index c1335052b..e9b06cba3 100644 --- a/pkg/constants/links.go +++ b/pkg/constants/links.go @@ -28,9 +28,9 @@ var Links = struct { CustomPagers: "https://github.com/jesseduffield/lazygit/blob/master/docs/Custom_Pagers.md", CustomKeybindings: "https://github.com/jesseduffield/lazygit/blob/master/docs/keybindings/Custom_Keybindings.md", CustomCommands: "https://github.com/jesseduffield/lazygit/wiki/Custom-Commands-Compendium", - Keybindings: "https://github.com/jesseduffield/lazygit/blob/master/docs/keybindings", + Keybindings: "https://github.com/jesseduffield/lazygit/blob/%s/docs/keybindings", Undoing: "https://github.com/jesseduffield/lazygit/blob/master/docs/Undoing.md", - Config: "https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md", + Config: "https://github.com/jesseduffield/lazygit/blob/%s/docs/Config.md", Tutorial: "https://youtu.be/VDXvbHZYeKY", CustomPatchDemo: "https://github.com/jesseduffield/lazygit#rebase-magic-custom-patches", }, diff --git a/pkg/gui/controllers/status_controller.go b/pkg/gui/controllers/status_controller.go index f5672ce64..f0289bf3c 100644 --- a/pkg/gui/controllers/status_controller.go +++ b/pkg/gui/controllers/status_controller.go @@ -6,6 +6,7 @@ import ( "strings" "time" + "github.com/jesseduffield/gocui" "github.com/jesseduffield/lazygit/pkg/commands/types/enums" "github.com/jesseduffield/lazygit/pkg/constants" "github.com/jesseduffield/lazygit/pkg/gui/presentation" @@ -67,19 +68,53 @@ func (self *StatusController) GetKeybindings(opts types.KeybindingsOpts) []*type return bindings } +func (self *StatusController) GetMouseKeybindings(opts types.KeybindingsOpts) []*gocui.ViewMouseBinding { + return []*gocui.ViewMouseBinding{ + { + ViewName: "main", + Key: gocui.MouseLeft, + Handler: self.onClickMain, + }, + } +} + +func (self *StatusController) onClickMain(opts gocui.ViewMouseBindingOpts) error { + view := self.c.Views().Main + + cx, cy := view.Cursor() + url, err := view.Word(cx, cy) + if err == nil && strings.HasPrefix(url, "https://") { + // Ignore errors (opening the link via the OS can fail if the + // `os.openLink` config key references a command that doesn't exist, or + // that errors when called.) + _ = self.c.OS().OpenLink(url) + } + + return nil +} + func (self *StatusController) GetOnRenderToMain() func() error { + versionStr := "master" + version, err := types.ParseVersionNumber(self.c.GetConfig().GetVersion()) + if err == nil { + // Don't just take the version string as is, but format it again. This + // way it will be correct even if a distribution omits the "v", or the + // ".0" at the end. + versionStr = fmt.Sprintf("v%d.%d.%d", version.Major, version.Minor, version.Patch) + } + return func() error { dashboardString := strings.Join( []string{ lazygitTitle(), "Copyright 2022 Jesse Duffield", - fmt.Sprintf("Keybindings: %s", constants.Links.Docs.Keybindings), - fmt.Sprintf("Config Options: %s", constants.Links.Docs.Config), - fmt.Sprintf("Tutorial: %s", constants.Links.Docs.Tutorial), - fmt.Sprintf("Raise an Issue: %s", constants.Links.Issues), - fmt.Sprintf("Release Notes: %s", constants.Links.Releases), - style.FgMagenta.Sprintf("Become a sponsor: %s", constants.Links.Donate), // caffeine ain't free - }, "\n\n") + fmt.Sprintf("Keybindings: %s", style.AttrUnderline.Sprint(fmt.Sprintf(constants.Links.Docs.Keybindings, versionStr))), + fmt.Sprintf("Config Options: %s", style.AttrUnderline.Sprint(fmt.Sprintf(constants.Links.Docs.Config, versionStr))), + fmt.Sprintf("Tutorial: %s", style.AttrUnderline.Sprint(constants.Links.Docs.Tutorial)), + fmt.Sprintf("Raise an Issue: %s", style.AttrUnderline.Sprint(constants.Links.Issues)), + fmt.Sprintf("Release Notes: %s", style.AttrUnderline.Sprint(constants.Links.Releases)), + style.FgMagenta.Sprintf("Become a sponsor: %s", style.AttrUnderline.Sprint(constants.Links.Donate)), // caffeine ain't free + }, "\n\n") + "\n" return self.c.RenderToMainViews(types.RefreshMainOpts{ Pair: self.c.MainViewPairs().Normal, |