summaryrefslogtreecommitdiffstats
path: root/pkg/gui
diff options
context:
space:
mode:
authorStefan Haller <stefan@haller-berlin.de>2024-03-27 18:44:51 +0100
committerStefan Haller <stefan@haller-berlin.de>2024-03-29 10:55:33 +0100
commitd102f12304177a5bdb5dd3d21eea7a31f59bfc16 (patch)
tree7077c8fdb9dafa8ab1229d54e94c11d8a44b9a3a /pkg/gui
parent6396d1ce0358dc583d7844797f07431ab5452447 (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.go24
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
}