diff options
author | Stefan Haller <stefan@haller-berlin.de> | 2024-03-27 18:44:51 +0100 |
---|---|---|
committer | Stefan Haller <stefan@haller-berlin.de> | 2024-03-29 10:55:33 +0100 |
commit | d102f12304177a5bdb5dd3d21eea7a31f59bfc16 (patch) | |
tree | 7077c8fdb9dafa8ab1229d54e94c11d8a44b9a3a /pkg/gui | |
parent | 6396d1ce0358dc583d7844797f07431ab5452447 (diff) |
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.
Diffstat (limited to 'pkg/gui')
-rw-r--r-- | pkg/gui/view_helpers.go | 24 |
1 files 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(`^<?(https://.+?)(>[,.;!]*)?$`) + 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 } |