summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Haller <stefan@haller-berlin.de>2024-03-22 08:16:20 +0100
committerGitHub <noreply@github.com>2024-03-22 08:16:20 +0100
commit337a0dbc9b3a6fb1acae71732735d07356341d91 (patch)
treee138ab300f8e492b748340982e5f41de03e8be3e
parent251bfb6a24f6f70d5db0c443b1d4a92a08e6826c (diff)
parent587013392434f3c2a7f7ec2136521a4b4ad72a05 (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.go4
-rw-r--r--pkg/gui/controllers/status_controller.go49
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,