diff options
| author | Drew DeVault <sir@cmpwn.com> | 2019-07-08 18:32:31 -0400 | 
|---|---|---|
| committer | Drew DeVault <sir@cmpwn.com> | 2019-07-08 18:32:31 -0400 | 
| commit | 133085b436f56bdd48fb1aba1184811b3a278d3c (patch) | |
| tree | 5f010744ca4bd9e0cf97c6cdad93bf5e7feb8020 | |
| parent | 6797f9347603aff0831bf56566fbf164cbdda179 (diff) | |
Fix re-opening of expired pipe tabs
| -rw-r--r-- | commands/exec.go | 6 | ||||
| -rw-r--r-- | commands/msg/pipe.go | 8 | ||||
| -rw-r--r-- | lib/msgstore.go | 14 | 
3 files changed, 24 insertions, 4 deletions
| diff --git a/commands/exec.go b/commands/exec.go index a46b93a..27edf5d 100644 --- a/commands/exec.go +++ b/commands/exec.go @@ -36,10 +36,14 @@ func (_ ExecCmd) Execute(aerc *widgets.Aerc, args []string) error {  			aerc.PushStatus(" "+err.Error(), 10*time.Second).  				Color(tcell.ColorDefault, tcell.ColorRed)  		} else { +			color := tcell.ColorDefault +			if cmd.ProcessState.ExitCode() != 0 { +				color = tcell.ColorRed +			}  			aerc.PushStatus(fmt.Sprintf(  				"%s: completed with status %d", args[0],  				cmd.ProcessState.ExitCode()), 10*time.Second). -				Color(tcell.ColorDefault, tcell.ColorDefault) +				Color(tcell.ColorDefault, color)  		}  	}()  	return nil diff --git a/commands/msg/pipe.go b/commands/msg/pipe.go index 158f9ea..6f8c616 100644 --- a/commands/msg/pipe.go +++ b/commands/msg/pipe.go @@ -91,10 +91,14 @@ func (_ Pipe) Execute(aerc *widgets.Aerc, args []string) error {  			aerc.PushStatus(" "+err.Error(), 10*time.Second).  				Color(tcell.ColorDefault, tcell.ColorRed)  		} else { +			color := tcell.ColorDefault +			if ecmd.ProcessState.ExitCode() != 0 { +				color = tcell.ColorRed +			}  			aerc.PushStatus(fmt.Sprintf( -				"%s: completed with status %d", args[0], +				"%s: completed with status %d", cmd[0],  				ecmd.ProcessState.ExitCode()), 10*time.Second). -				Color(tcell.ColorDefault, tcell.ColorDefault) +				Color(tcell.ColorDefault, color)  		}  	} diff --git a/lib/msgstore.go b/lib/msgstore.go index 595908d..038c3ca 100644 --- a/lib/msgstore.go +++ b/lib/msgstore.go @@ -92,7 +92,18 @@ func (store *MessageStore) FetchFull(uids []uint32, cb func(io.Reader)) {  		}  	}  	if len(toFetch) > 0 { -		store.worker.PostAction(&types.FetchFullMessages{Uids: toFetch}, nil) +		store.worker.PostAction(&types.FetchFullMessages{ +			Uids: toFetch, +		}, func(msg types.WorkerMessage) { +			switch msg.(type) { +			case *types.Error: +				for _, uid := range toFetch { +					if _, ok := store.bodyCallbacks[uid]; ok { +						delete(store.bodyCallbacks, uid) +					} +				} +			} +		})  	}  } @@ -169,6 +180,7 @@ func (store *MessageStore) Update(msg types.WorkerMessage) {  				for _, cb := range cbs {  					cb(msg.Content.Reader)  				} +				delete(store.bodyCallbacks, msg.Content.Uid)  			}  		}  	case *types.MessagesDeleted: | 
