From d102f12304177a5bdb5dd3d21eea7a31f59bfc16 Mon Sep 17 00:00:00 2001 From: Stefan Haller Date: Wed, 27 Mar 2024 18:44:51 +0100 Subject: [PATCH] Make HandleGenericClick a little smarter Make it recognize URLs wrapped in angle brackets, and followed by punktuation. We don't need this for the status panel, but we will need it for confirmation panels. --- pkg/gui/view_helpers.go | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/pkg/gui/view_helpers.go b/pkg/gui/view_helpers.go index 3f5f27f55..1043920ec 100644 --- a/pkg/gui/view_helpers.go +++ b/pkg/gui/view_helpers.go @@ -1,7 +1,7 @@ package gui import ( - "strings" + "regexp" "time" "github.com/jesseduffield/gocui" @@ -154,13 +154,23 @@ func (gui *Gui) postRefreshUpdate(c types.Context) error { // It handles opening URLs in the browser when the user clicks on one. func (gui *Gui) handleGenericClick(view *gocui.View) error { 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.) - _ = gui.c.OS().OpenLink(url) + word, err := view.Word(cx, cy) + if err != nil { + return nil } + // Allow URLs to be wrapped in angle brackets, and the closing bracket to + // be followed by punctuation: + re := regexp.MustCompile(`^[,.;!]*)?$`) + matches := re.FindStringSubmatch(word) + if matches == nil { + return nil + } + + // 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.) + _ = gui.c.OS().OpenLink(matches[1]) + return nil }