aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/auth/auth.go8
-rw-r--r--lib/format/format.go7
-rw-r--r--lib/msgstore.go18
-rw-r--r--lib/open.go2
-rw-r--r--lib/statusline/renderer.go6
-rw-r--r--lib/structure_helpers.go8
-rw-r--r--lib/ui/borders.go3
-rw-r--r--lib/ui/grid.go3
-rw-r--r--lib/ui/popover.go7
-rw-r--r--lib/ui/stack.go3
-rw-r--r--lib/ui/tab.go19
-rw-r--r--lib/ui/textinput.go18
-rw-r--r--lib/ui/ui.go3
13 files changed, 46 insertions, 59 deletions
diff --git a/lib/auth/auth.go b/lib/auth/auth.go
index 8a0a40fa..ea32ecd3 100644
--- a/lib/auth/auth.go
+++ b/lib/auth/auth.go
@@ -82,14 +82,16 @@ func CreateParser(m Method) func(*mail.Header, []string) (*Details, error) {
}
identifier, results, err := authres.Parse(headerText)
- if err != nil && err.Error() == "msgauth: unsupported version" {
+ // TODO: refactor to use errors.Is
+ switch {
+ case err != nil && err.Error() == "msgauth: unsupported version":
// Some MTA write their authres header without an identifier
// which does not conform to RFC but still exists in the wild
identifier, results, err = authres.Parse("unknown;" + headerText)
if err != nil {
return nil, err
}
- } else if err != nil && err.Error() == "msgauth: malformed authentication method and value" {
+ case err != nil && err.Error() == "msgauth: malformed authentication method and value":
// the go-msgauth parser doesn't like semi-colons in the comments
// as a work-around we remove those
cleanHeader := cleaner.ReplaceAllString(headerText, "${1}${2}")
@@ -97,7 +99,7 @@ func CreateParser(m Method) func(*mail.Header, []string) (*Details, error) {
if err != nil {
return nil, err
}
- } else if err != nil {
+ case err != nil:
return nil, err
}
diff --git a/lib/format/format.go b/lib/format/format.go
index 0d14cb19..42dd34a1 100644
--- a/lib/format/format.go
+++ b/lib/format/format.go
@@ -298,11 +298,12 @@ func ParseMessageFormat(format string, timeFmt string, thisDayTimeFmt string,
recent := false
answered := false
for _, flag := range ctx.MsgInfo.Flags {
- if flag == models.SeenFlag {
+ switch flag {
+ case models.SeenFlag:
seen = true
- } else if flag == models.RecentFlag {
+ case models.RecentFlag:
recent = true
- } else if flag == models.AnsweredFlag {
+ case models.AnsweredFlag:
answered = true
}
if flag == models.DeletedFlag {
diff --git a/lib/msgstore.go b/lib/msgstore.go
index dc000de7..efa6f732 100644
--- a/lib/msgstore.go
+++ b/lib/msgstore.go
@@ -121,8 +121,7 @@ func (store *MessageStore) FetchHeaders(uids []uint32,
}
if len(toFetch) > 0 {
store.worker.PostAction(&types.FetchMessageHeaders{Uids: toFetch}, func(msg types.WorkerMessage) {
- switch msg.(type) {
- case *types.Error:
+ if _, ok := msg.(*types.Error); ok {
for _, uid := range toFetch {
delete(store.pendingHeaders, uid)
delete(store.headerCallbacks, uid)
@@ -153,8 +152,7 @@ func (store *MessageStore) FetchFull(uids []uint32, cb func(*types.FullMessage))
store.worker.PostAction(&types.FetchFullMessages{
Uids: toFetch,
}, func(msg types.WorkerMessage) {
- switch msg.(type) {
- case *types.Error:
+ if _, ok := msg.(*types.Error); ok {
for _, uid := range toFetch {
delete(store.pendingBodies, uid)
delete(store.bodyCallbacks, uid)
@@ -244,10 +242,8 @@ func (store *MessageStore) Update(msg types.WorkerMessage) {
case *types.MessageInfo:
if existing, ok := store.Messages[msg.Info.Uid]; ok && existing != nil {
merge(existing, msg.Info)
- } else {
- if msg.Info.Envelope != nil {
- store.Messages[msg.Info.Uid] = msg.Info
- }
+ } else if msg.Info.Envelope != nil {
+ store.Messages[msg.Info.Uid] = msg.Info
}
seen := false
recent := false
@@ -441,8 +437,7 @@ func (store *MessageStore) Delete(uids []uint32,
store.worker.PostAction(&types.DeleteMessages{Uids: uids},
func(msg types.WorkerMessage) {
- switch msg.(type) {
- case *types.Error:
+ if _, ok := msg.(*types.Error); ok {
store.revertDeleted(uids)
}
cb(msg)
@@ -726,8 +721,7 @@ func (store *MessageStore) Search(args []string, cb func([]uint32)) {
store.worker.PostAction(&types.SearchDirectory{
Argv: args,
}, func(msg types.WorkerMessage) {
- switch msg := msg.(type) {
- case *types.SearchResults:
+ if msg, ok := msg.(*types.SearchResults); ok {
allowedUids := store.Uids()
uids := make([]uint32, 0, len(msg.Uids))
for _, uid := range msg.Uids {
diff --git a/lib/open.go b/lib/open.go
index c5d4b1c0..c29ed009 100644
--- a/lib/open.go
+++ b/lib/open.go
@@ -35,7 +35,7 @@ func NewXDGOpen(filename string) *xdgOpen {
func (xdg *xdgOpen) SetArgs(args []string) {
args = append([]string{}, args...) // don't overwrite array of caller
filename := xdg.args[len(xdg.args)-1]
- xdg.args = append(args, filename)
+ xdg.args = append(args, filename) //nolint:gocritic // intentional append to different slice
}
// Start the open handler.
diff --git a/lib/statusline/renderer.go b/lib/statusline/renderer.go
index 2ab05dd9..26c95c24 100644
--- a/lib/statusline/renderer.go
+++ b/lib/statusline/renderer.go
@@ -69,10 +69,8 @@ func contentInfo(acct *accountState, fldr *folderState, texter Texter) []string
var status []string
if fldr.FilterActivity != "" {
status = append(status, fldr.FilterActivity)
- } else {
- if fldr.Filter != "" {
- status = append(status, texter.FormatFilter(fldr.Filter))
- }
+ } else if fldr.Filter != "" {
+ status = append(status, texter.FormatFilter(fldr.Filter))
}
if fldr.Search != "" {
status = append(status, texter.FormatSearch(fldr.Search))
diff --git a/lib/structure_helpers.go b/lib/structure_helpers.go
index 99a77a28..6f25e459 100644
--- a/lib/structure_helpers.go
+++ b/lib/structure_helpers.go
@@ -8,7 +8,7 @@ import (
func FindPlaintext(bs *models.BodyStructure, path []int) []int {
for i, part := range bs.Parts {
- cur := append(path, i+1)
+ cur := append(path, i+1) //nolint:gocritic // intentional append to different slice
if strings.ToLower(part.MIMEType) == "text" &&
strings.ToLower(part.MIMESubType) == "plain" {
return cur
@@ -24,7 +24,7 @@ func FindPlaintext(bs *models.BodyStructure, path []int) []int {
func FindCalendartext(bs *models.BodyStructure, path []int) []int {
for i, part := range bs.Parts {
- cur := append(path, i+1)
+ cur := append(path, i+1) //nolint:gocritic // intentional append to different slice
if strings.ToLower(part.MIMEType) == "text" &&
strings.ToLower(part.MIMESubType) == "calendar" {
return cur
@@ -40,7 +40,7 @@ func FindCalendartext(bs *models.BodyStructure, path []int) []int {
func FindFirstNonMultipart(bs *models.BodyStructure, path []int) []int {
for i, part := range bs.Parts {
- cur := append(path, i+1)
+ cur := append(path, i+1) //nolint:gocritic // intentional append to different slice
mimetype := strings.ToLower(part.MIMEType)
if mimetype != "multipart" {
return cur
@@ -55,7 +55,7 @@ func FindFirstNonMultipart(bs *models.BodyStructure, path []int) []int {
func FindAllNonMultipart(bs *models.BodyStructure, path []int, pathlist [][]int) [][]int {
for i, part := range bs.Parts {
- cur := append(path, i+1)
+ cur := append(path, i+1) //nolint:gocritic // intentional append to different slice
mimetype := strings.ToLower(part.MIMEType)
if mimetype != "multipart" {
tmp := make([]int, len(cur))
diff --git a/lib/ui/borders.go b/lib/ui/borders.go
index 2c689886..92e29b06 100644
--- a/lib/ui/borders.go
+++ b/lib/ui/borders.go
@@ -76,8 +76,7 @@ func (bordered *Bordered) Draw(ctx *Context) {
}
func (bordered *Bordered) MouseEvent(localX int, localY int, event tcell.Event) {
- switch content := bordered.content.(type) {
- case Mouseable:
+ if content, ok := bordered.content.(Mouseable); ok {
content.MouseEvent(localX, localY, event)
}
}
diff --git a/lib/ui/grid.go b/lib/ui/grid.go
index 2d195711..1eac2ee8 100644
--- a/lib/ui/grid.go
+++ b/lib/ui/grid.go
@@ -150,8 +150,7 @@ func (grid *Grid) Draw(ctx *Context) {
}
func (grid *Grid) MouseEvent(localX int, localY int, event tcell.Event) {
- switch event := event.(type) {
- case *tcell.EventMouse:
+ if event, ok := event.(*tcell.EventMouse); ok {
invalid := grid.invalid
grid.mutex.RLock()
diff --git a/lib/ui/popover.go b/lib/ui/popover.go
index 7a539de1..8c8c4cda 100644
--- a/lib/ui/popover.go
+++ b/lib/ui/popover.go
@@ -16,13 +16,14 @@ func (p *Popover) Draw(ctx *Context) {
width = ctx.Width() - p.x
}
- if p.y+p.height+1 < ctx.Height() {
+ switch {
+ case p.y+p.height+1 < ctx.Height():
// draw below
subcontext = ctx.Subcontext(p.x, p.y+1, width, p.height)
- } else if p.y-p.height >= 0 {
+ case p.y-p.height >= 0:
// draw above
subcontext = ctx.Subcontext(p.x, p.y-p.height, width, p.height)
- } else {
+ default:
// can't fit entirely above or below, so find the largest available
// vertical space and shrink to fit
if p.y > ctx.Height()-p.y {
diff --git a/lib/ui/stack.go b/lib/ui/stack.go
index d3722354..5ccf13bc 100644
--- a/lib/ui/stack.go
+++ b/lib/ui/stack.go
@@ -43,8 +43,7 @@ func (stack *Stack) Draw(ctx *Context) {
func (stack *Stack) MouseEvent(localX int, localY int, event tcell.Event) {
if len(stack.children) > 0 {
- switch element := stack.Peek().(type) {
- case Mouseable:
+ if element, ok := stack.Peek().(Mouseable); ok {
element.MouseEvent(localX, localY, event)
}
}
diff --git a/lib/ui/tab.go b/lib/ui/tab.go
index 0c6b3f5b..df76ccca 100644
--- a/lib/ui/tab.go
+++ b/lib/ui/tab.go
@@ -219,27 +219,28 @@ func (tabs *Tabs) moveTabPriv(to int, relative bool) {
}
tab := tabs.tabs[from]
- if to > from {
+ switch {
+ case to > from:
copy(tabs.tabs[from:to], tabs.tabs[from+1:to+1])
for i, h := range tabs.history {
if h == from {
tabs.history[i] = to
}
if h > from && h <= to {
- tabs.history[i] -= 1
+ tabs.history[i]--
}
}
- } else if from > to {
+ case from > to:
copy(tabs.tabs[to+1:from+1], tabs.tabs[to:from])
for i, h := range tabs.history {
if h == from {
tabs.history[i] = to
}
if h >= to && h < from {
- tabs.history[i] += 1
+ tabs.history[i]++
}
}
- } else {
+ default:
return
}
@@ -339,7 +340,7 @@ func (tabs *Tabs) removeHistory(index int) {
continue
}
if item > index {
- item = item - 1
+ item--
}
// dedup
if i > 0 && len(newHist) > 0 && item == newHist[len(newHist)-1] {
@@ -399,8 +400,7 @@ func (strip *TabStrip) MouseEvent(localX int, localY int, event tcell.Event) {
}
unfocus := func() { changeFocus(false) }
refocus := func() { changeFocus(true) }
- switch event := event.(type) {
- case *tcell.EventMouse:
+ if event, ok := event.(*tcell.EventMouse); ok {
switch event.Buttons() {
case tcell.Button1:
selectedTab, ok := strip.clicked(localX, localY)
@@ -484,8 +484,7 @@ func (content *TabContent) MouseEvent(localX int, localY int, event tcell.Event)
content.parent.m.Lock()
tab := content.tabs[content.curIndex]
content.parent.m.Unlock()
- switch tabContent := tab.Content.(type) {
- case Mouseable:
+ if tabContent, ok := tab.Content.(Mouseable); ok {
tabContent.MouseEvent(localX, localY, event)
}
}
diff --git a/lib/ui/textinput.go b/lib/ui/textinput.go
index 8f8f00d0..70dcb3f5 100644
--- a/lib/ui/textinput.go
+++ b/lib/ui/textinput.go
@@ -148,10 +148,8 @@ func (ti *TextInput) drawPopover(ctx *Context) {
}
func (ti *TextInput) MouseEvent(localX int, localY int, event tcell.Event) {
- switch event := event.(type) {
- case *tcell.EventMouse:
- switch event.Buttons() {
- case tcell.Button1:
+ if event, ok := event.(*tcell.EventMouse); ok {
+ if event.Buttons() == tcell.Button1 {
if localX >= len(ti.prompt)+1 && localX <= len(ti.text[ti.scroll:])+len(ti.prompt)+1 {
ti.index = localX - len(ti.prompt) - 1
ti.ensureScroll()
@@ -190,7 +188,7 @@ func (ti *TextInput) ensureScroll() {
func (ti *TextInput) insert(ch rune) {
left := ti.text[:ti.index]
right := ti.text[ti.index:]
- ti.text = append(left, append([]rune{ch}, right...)...)
+ ti.text = append(left, append([]rune{ch}, right...)...) //nolint:gocritic // intentional append to different slice
ti.index++
ti.ensureScroll()
ti.Invalidate()
@@ -323,8 +321,7 @@ func (ti *TextInput) OnFocusLost(onFocusLost func(ti *TextInput)) {
}
func (ti *TextInput) Event(event tcell.Event) bool {
- switch event := event.(type) {
- case *tcell.EventKey:
+ if event, ok := event.(*tcell.EventKey); ok {
switch event.Key() {
case tcell.KeyBackspace, tcell.KeyBackspace2:
ti.invalidateCompletions()
@@ -464,8 +461,7 @@ func (c *completions) prev() {
}
func (c *completions) Event(e tcell.Event) bool {
- switch e := e.(type) {
- case *tcell.EventKey:
+ if e, ok := e.(*tcell.EventKey); ok {
switch e.Key() {
case tcell.KeyTab:
if len(c.options) == 1 && c.idx >= 0 {
@@ -496,7 +492,7 @@ func (c *completions) Event(e tcell.Event) bool {
}
func findStem(words []string) string {
- if len(words) <= 0 {
+ if len(words) == 0 {
return ""
}
if len(words) == 1 {
@@ -519,7 +515,7 @@ func findStem(words []string) string {
return stem
}
}
- stem = stem + string(r)
+ stem += string(r)
stemLen++
}
}
diff --git a/lib/ui/ui.go b/lib/ui/ui.go
index 1f618a6f..596000a5 100644
--- a/lib/ui/ui.go
+++ b/lib/ui/ui.go
@@ -87,8 +87,7 @@ func (state *UI) Tick() bool {
select {
case event := <-state.tcEvents:
- switch event := event.(type) {
- case *tcell.EventResize:
+ if event, ok := event.(*tcell.EventResize); ok {
state.screen.Clear()
width, height := event.Size()
state.ctx = NewContext(width, height, state.screen, state.onPopover)