From 6bd34bdd14e24cb2cf87ff749afd273214a2f212 Mon Sep 17 00:00:00 2001 From: Christian Rocha Date: Thu, 18 Jun 2020 22:47:17 -0400 Subject: [PATCH] Remove commands for manually getting terminal size; no longer needed Tea core now sends the terminal dimensions on start and when the window is resized (except on Windows where SIGWINCH, the resize signal, is not supported). --- commands.go | 34 +++++----------------------------- commands_unix.go | 23 ----------------------- commands_windows.go | 9 --------- tea.go | 2 +- 4 files changed, 6 insertions(+), 62 deletions(-) delete mode 100644 commands_unix.go delete mode 100644 commands_windows.go diff --git a/commands.go b/commands.go index ed63884..0a11733 100644 --- a/commands.go +++ b/commands.go @@ -1,23 +1,20 @@ package tea -// Convenience commands. Note part of the Bubble Tea runtime, but potentially +// Convenience commands. Note part of the Bubble Tea core, but potentially // handy. import ( - "os" "time" - - "golang.org/x/crypto/ssh/terminal" ) // Every is a command that ticks in sync with the system clock. So, if you // wanted to tick with the system clock every second, minute or hour you // could use this. It's also handy for having different things tick in sync. // -// Note that because we're ticking with the system clock the tick will likely -// not run for the entire specified duration. For example, if we're ticking for -// one minute and the clock is at 12:34:20 then the next tick will happen at -// 12:35:00, 40 seconds later. +// Because we're ticking with the system clock the tick will likely not run for +// the entire specified duration. For example, if we're ticking for one minute +// and the clock is at 12:34:20 then the next tick will happen at 12:35:00, 40 +// seconds later. func Every(duration time.Duration, fn func(time.Time) Msg) Cmd { return func() Msg { n := time.Now() @@ -36,24 +33,3 @@ func Tick(d time.Duration, fn func(time.Time) Msg) Cmd { return fn(<-t.C) } } - -// TerminalSizeMsg defines an interface for a message that contains terminal -// sizing as sent by GetTerminalSize. -type TerminalSizeMsg interface { - - // Size returns the terminal width and height, in that order - Size() (int, int) - - // Error returns the error, if any, received when fetching the terminal size - Error() error -} - -// GetTerminalSize is a command used to retrieve the terminal dimensions. Pass -// a function used to construct your message, which would implement the -// TerminalSizeMsg interaface. -func GetTerminalSize(newMsgFunc func(int, int, error) TerminalSizeMsg) Cmd { - w, h, err := terminal.GetSize(int(os.Stdout.Fd())) - return func() Msg { - return newMsgFunc(w, h, err) - } -} diff --git a/commands_unix.go b/commands_unix.go deleted file mode 100644 index 9951a86..0000000 --- a/commands_unix.go +++ /dev/null @@ -1,23 +0,0 @@ -// +build darwin dragonfly freebsd linux netbsd openbsd solaris - -package tea - -import ( - "os" - "os/signal" - "syscall" -) - -// OnResize is used to listen for window resizes. Use GetTerminalSize to get -// the windows dimensions. We don't fetch the window size with this command to -// avoid a potential performance hit making the necessary system calls, since -// this command could potentially run a lot. On that note, consider debouncing -// this function. -func OnResize(newMsgFunc func() Msg) Cmd { - return func() Msg { - sig := make(chan os.Signal, 1) - signal.Notify(sig, syscall.SIGWINCH) - <-sig - return newMsgFunc() - } -} diff --git a/commands_windows.go b/commands_windows.go deleted file mode 100644 index 464069b..0000000 --- a/commands_windows.go +++ /dev/null @@ -1,9 +0,0 @@ -// +build windows - -package tea - -// OnResize is not supported on Windows at this time as Windows does not -// support the SIGWINCH signal. -func OnResize(newMsgFunc func() Msg) Cmd { - return nil -} diff --git a/tea.go b/tea.go index 0b7582b..b00358a 100644 --- a/tea.go +++ b/tea.go @@ -59,7 +59,7 @@ type quitMsg struct{} // can send a batchMsg with Batch. type batchMsg []Cmd -// WindowSizeMsg is used to report on the terminal size. It's fired once +// WindowSizeMsg is used to report on the terminal size. It's sent once // initially and then on every terminal resize. type WindowSizeMsg struct { Width int