summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cmd/senpai/main.go3
-rw-r--r--go.mod4
-rw-r--r--go.sum8
-rw-r--r--ui/style.go10
4 files changed, 15 insertions, 10 deletions
diff --git a/cmd/senpai/main.go b/cmd/senpai/main.go
index d177a8b..241c4c3 100644
--- a/cmd/senpai/main.go
+++ b/cmd/senpai/main.go
@@ -4,6 +4,7 @@ import (
"flag"
"fmt"
"io/ioutil"
+ "math/rand"
"os"
"os/signal"
"path"
@@ -24,6 +25,8 @@ func main() {
flag.BoolVar(&debug, "debug", false, "show raw protocol data in the home buffer")
flag.Parse()
+ rand.Seed(time.Now().UnixNano())
+
if configPath == "" {
configDir, err := os.UserConfigDir()
if err != nil {
diff --git a/go.mod b/go.mod
index 7f13976..0088dbf 100644
--- a/go.mod
+++ b/go.mod
@@ -4,8 +4,8 @@ go 1.16
require (
git.sr.ht/~emersion/go-scfg v0.0.0-20201019143924-142a8aa629fc
- github.com/gdamore/tcell/v2 v2.5.4-0.20220911202027-96bb70f9efec
- github.com/mattn/go-runewidth v0.0.13
+ github.com/gdamore/tcell/v2 v2.5.4-0.20221017053904-7557ac2a6c89
+ github.com/mattn/go-runewidth v0.0.14
golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211
golang.org/x/time v0.0.0-20210611083556-38a9dc6acbc6
diff --git a/go.sum b/go.sum
index 3cebc2e..41ab5a5 100644
--- a/go.sum
+++ b/go.sum
@@ -4,8 +4,8 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/gdamore/encoding v1.0.0 h1:+7OoQ1Bc6eTm5niUzBa0Ctsh6JbMW6Ra+YNuAtDBdko=
github.com/gdamore/encoding v1.0.0/go.mod h1:alR0ol34c49FCSBLjhosxzcPHQbf2trDkoo5dl+VrEg=
-github.com/gdamore/tcell/v2 v2.5.4-0.20220911202027-96bb70f9efec h1:wvcbNOhEpZhHp4F9eIvB7fn0CDsQt9EXlHHyvxfb284=
-github.com/gdamore/tcell/v2 v2.5.4-0.20220911202027-96bb70f9efec/go.mod h1:wSkrPaXoiIWZqW/g7Px4xc79di6FTcpB8tvaKJ6uGBo=
+github.com/gdamore/tcell/v2 v2.5.4-0.20221017053904-7557ac2a6c89 h1:Q8/8bqReXToMTLZKmhNSQf6nabdAWcL0VtFz9DySzVc=
+github.com/gdamore/tcell/v2 v2.5.4-0.20221017053904-7557ac2a6c89/go.mod h1:02iy8Omp2FMM0oDqEohCtRma57vIEg/mnw8zkEmDc6I=
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4=
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ=
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
@@ -13,8 +13,8 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY=
github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0=
-github.com/mattn/go-runewidth v0.0.13 h1:lTGmDsbAYt5DmK6OnoV7EuIF1wEIFAcxld6ypU4OSgU=
-github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
+github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU=
+github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY=
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
diff --git a/ui/style.go b/ui/style.go
index cb24304..506a03d 100644
--- a/ui/style.go
+++ b/ui/style.go
@@ -2,6 +2,7 @@ package ui
import (
"fmt"
+ "math/rand"
"net/url"
"strconv"
"strings"
@@ -141,6 +142,7 @@ func (s StyledString) ParseURLs() StyledString {
if u, err := url.Parse(link); err != nil || u.Scheme == "" {
link = "https://" + link
}
+ id := fmt.Sprintf("_%10d", rand.Int31())
// find last style starting before or at url begin
for ; j < len(s.styles); j++ {
st := s.styles[j]
@@ -149,7 +151,7 @@ func (s StyledString) ParseURLs() StyledString {
}
if st.Start == ub {
// a style already starts at this position, edit it
- lastStyle.Style = lastStyle.Style.Url(link)
+ lastStyle.Style = lastStyle.Style.Url(link).UrlId(id)
}
lastStyle = st
styles = append(styles, st)
@@ -158,7 +160,7 @@ func (s StyledString) ParseURLs() StyledString {
// no style existed at this position, add one from the last style
styles = append(styles, rangedStyle{
Start: ub,
- Style: lastStyle.Style.Url(link),
+ Style: lastStyle.Style.Url(link).UrlId(id),
})
}
// find last style starting before or at url end
@@ -168,7 +170,7 @@ func (s StyledString) ParseURLs() StyledString {
break
}
if st.Start < ue {
- st.Style = st.Style.Url(link)
+ st.Style = st.Style.Url(link).UrlId(id)
}
lastStyle = st
styles = append(styles, st)
@@ -177,7 +179,7 @@ func (s StyledString) ParseURLs() StyledString {
// no style existed at this position, add one from the last style without the hyperlink
styles = append(styles, rangedStyle{
Start: ue,
- Style: lastStyle.Style.Url(""),
+ Style: lastStyle.Style.Url("").UrlId(""),
})
}
}