From 2113c9d31aea2f2619ca34abe281316f34354f88 Mon Sep 17 00:00:00 2001 From: Patrick Devine Date: Mon, 4 Dec 2023 14:14:56 -0800 Subject: [PATCH] make linewrap still work when the terminal width has changed (#1350) --- cmd/cmd.go | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/cmd/cmd.go b/cmd/cmd.go index e0172b10..df0d90c8 100644 --- a/cmd/cmd.go +++ b/cmd/cmd.go @@ -521,9 +521,17 @@ func generate(cmd *cobra.Command, opts generateOptions) error { latest = response - if opts.WordWrap { + termWidth, _, _ = term.GetSize(int(os.Stdout.Fd())) + if opts.WordWrap && termWidth >= 10 { for _, ch := range response.Response { if currentLineLength+1 > termWidth-5 { + if len(wordBuffer) > termWidth-10 { + fmt.Printf("%s%c", wordBuffer, ch) + wordBuffer = "" + currentLineLength = 0 + continue + } + // backtrack the length of the last word and clear to the end of the line fmt.Printf("\x1b[%dD\x1b[K\n", len(wordBuffer)) fmt.Printf("%s%c", wordBuffer, ch) @@ -543,7 +551,10 @@ func generate(cmd *cobra.Command, opts generateOptions) error { } } } else { - fmt.Print(response.Response) + fmt.Printf("%s%s", wordBuffer, response.Response) + if len(wordBuffer) > 0 { + wordBuffer = "" + } } return nil