* feat: bracketed paste
This introduces support for input via bracketed paste, where escape
characters in the pasted input are not interpreted.
Pasted input are marked as a special field in the KeyMsg. This is
useful because pasted input may need sanitation in individual widgets.
* fix(key): support bracketed paste with short reads
Some terminal emulators feed the bracketed paste data in multiple
chunks, which may not be aligned on a 256 byte boundary. So it's
possible for `input.Read` to return less than 256 bytes read
but while there's still more data to be read to complete a bracketed
paste input.
---------
Co-authored-by: Christian Muehlhaeuser <muesli@gmail.com>
* chore: update example tests, test on ci
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
* fix: mark *.golden as binary
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
---------
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
teatest was originally designed in this PR, and was later moved into `github.com/charmbracelet/x`.
* docs: example test
Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>
* feat: teatest
Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>
* fix: improve api
Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>
* fix: improve api
Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>
* feat: goldenfiles
Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>
* chore: minor improvements
Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>
* feat: type text, diff
Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>
* fix: release terminal
Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>
* fix: lint
Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>
* fix: update cancelreader
Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>
* fix: make it safe
Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>
* feat: functional options
Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>
* feat: IsQuit and IsQuitMsg
* fix: save file
Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>
* fix: do not use deprecate func
Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>
* fix: make diff not complain about trailing whitespaces
Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>
* feat: with term size
Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>
* feat: RequireRegexOutput
Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>
* fix: update
Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>
* chore: rename
Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>
* fix: improve reliability
* fix: use returned model
* fix: making it more predictable, avoid sleeps
* fix: remove WithRequiredRegexpOutput
Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>
* fix: allow to assert within interactions
* feat: added wait for
Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>
* fix: optional
* feat: improve usage
Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>
* fix: use udiff
Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>
* feat: tea.Wait
wait for the underlying context to finish.
extract from #352
* fix: merge
Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>
* fix: wait til the end of shutdown
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
* fix: final output
* feat: use x/exp/teatest
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
* chore: go mod tidy
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
---------
Signed-off-by: Carlos A 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.
* feat: filepicker example
* fix: use new API
* docs(examples): update file selection comment in filepicker example
* chore: bump bubbles
---------
Co-authored-by: Christian Rocha <christian@rocha.is>