* feat: tea.Wait
wait for the underlying context to finish.
extract from #352
* fix: wait til the end of shutdown
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
---------
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
`WithFilter` lets you supply an event filter that will be invoked
before Bubble Tea processes a `tea.Msg`. The event filter can return
any `tea.Msg` which will then get handled by Bubble Tea instead of
the original event. If the event filter returns nil, the event
will be ignored and Bubble Tea will not process it.
As an example, this could be used to prevent a program from
shutting down if there are unsaved changes.
Based on the fantastic work by @aschey and supersedes #521.
Resolves#472.
This commit fixes an issue where a user may provider a nil input via
`tea.WithInput(nil)`. This option method does not check if the input
is nil and sets the `withCustomInput` attribute with a nil input.
This logic is sound since a Tea program may not necessarily want to
handle any inputs from users (such as those in non-TTY environments).
However, a nil pointer exception is thrown during `tea.Run` because a
`cancelReader` is always invoked after the main renderer. However,
its instantiation is variable and dependent on whether an input is
provided. To mitigate against this, this commit checks if a
`cancelReader` is non-nil.
Signed-off-by: Alexander Jung <alex@nderjung.net>
WithContext lets you specify a context in which to run the Program.
This is useful if you want to cancel the execution from outside.
When a Program gets cancelled it will exit with an error
ErrProgramKilled.
Based on @knz's work in #499, but slightly supersedes this change.
A little more coupling in the resize handling, but a lot less code
& logic repetition.
Co-authored-by: Raphael 'kena' Poss <knz@thaumogen.net>
* merge Adjective-Object/tea_log_renderer into standard renderer
* rename queuedMessages -> queuedMessageLines & break apart strings during message processing
* delete cursorDownBy
* += 1 -> ++ to make the linter happy
* add skipLines[] tracking back to standard renderer, and add rename skippedLines local to jumpedLines to clarify they are separate comments
* request repaint when a message is recieved
* Convert Println and Printf to commands
* Add package manager example demonstrating tea.Printf
* Use Unix instead of UnixMicro for Go 1.13 support in CI
* fix off by one in std renderer
* add Printf/Println to tea.go
* revert attempt at sequence compression + cursorUpBy
Co-authored-by: Maxwell Huang-Hobbs <mahuangh@microsoft.com>
Co-authored-by: Christian Rocha <christian@rocha.is>