aboutsummaryrefslogtreecommitdiffstats
path: root/widgets
diff options
context:
space:
mode:
Diffstat (limited to 'widgets')
-rw-r--r--widgets/msgviewer.go14
-rw-r--r--widgets/providesmessage.go1
2 files changed, 14 insertions, 1 deletions
diff --git a/widgets/msgviewer.go b/widgets/msgviewer.go
index 98764672..b41b57c0 100644
--- a/widgets/msgviewer.go
+++ b/widgets/msgviewer.go
@@ -19,6 +19,7 @@ import (
"git.sr.ht/~rjarry/aerc/lib"
"git.sr.ht/~rjarry/aerc/lib/auth"
"git.sr.ht/~rjarry/aerc/lib/format"
+ "git.sr.ht/~rjarry/aerc/lib/parse"
"git.sr.ht/~rjarry/aerc/lib/ui"
"git.sr.ht/~rjarry/aerc/logging"
"git.sr.ht/~rjarry/aerc/models"
@@ -325,6 +326,7 @@ func (mv *MessageViewer) SelectedMessagePart() *PartInfo {
Index: part.index,
Msg: part.msg.MessageInfo(),
Part: part.part,
+ Links: part.links,
}
}
@@ -518,6 +520,8 @@ type PartViewer struct {
term *Terminal
grid *ui.Grid
uiConfig config.UIConfig
+
+ links []string
}
func NewPartViewer(acct *AccountView, conf *config.AercConfig,
@@ -670,6 +674,14 @@ func (pv *PartViewer) writeMailHeaders() {
}
}
+func (pv *PartViewer) hyperlinks(r io.Reader) (reader io.Reader) {
+ if !pv.conf.Viewer.ParseHttpLinks {
+ return r
+ }
+ reader, pv.links = parse.HttpLinks(r)
+ return reader
+}
+
func (pv *PartViewer) copyFilterOutToPager() {
stdout, _ := pv.filter.StdoutPipe()
stderr, _ := pv.filter.StderrPipe()
@@ -708,7 +720,7 @@ func (pv *PartViewer) copyFilterOutToPager() {
}
func (pv *PartViewer) copySourceToSinkStripAnsi() {
- scanner := bufio.NewScanner(pv.source)
+ scanner := bufio.NewScanner(pv.hyperlinks(pv.source))
// some people send around huge html without any newline in between
// this did overflow the default 64KB buffer of bufio.Scanner.
// If something can't fit in a GB there's no hope left
diff --git a/widgets/providesmessage.go b/widgets/providesmessage.go
index c1d821c7..b0f261d9 100644
--- a/widgets/providesmessage.go
+++ b/widgets/providesmessage.go
@@ -10,6 +10,7 @@ type PartInfo struct {
Index []int
Msg *models.MessageInfo
Part *models.BodyStructure
+ Links []string
}
type ProvidesMessage interface {