From ecf7f0cab0bf53a36ccb634e434c84e914ea25af Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Tue, 2 Sep 2025 11:29:55 +0530 Subject: [PATCH] kitten diff: Fix incorrect rendering if diff completes before terminal responds to capabilities query --- kittens/diff/ui.go | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/kittens/diff/ui.go b/kittens/diff/ui.go index 4c0738c4e..82456a3a4 100644 --- a/kittens/diff/ui.go +++ b/kittens/diff/ui.go @@ -287,7 +287,7 @@ func (self *Handler) resize_all_images_if_needed() { } func (self *Handler) rerender_diff() error { - if self.diff_map != nil && self.collection != nil { + if self.diff_map != nil && self.collection != nil && self.terminal_capabilities_received { err := self.render_diff() if err != nil { return err @@ -305,6 +305,13 @@ func (self *Handler) handle_async_result(r AsyncResult) error { self.highlight_all() self.load_all_images() case DIFF: + if !self.terminal_capabilities_received { + go func() { + self.async_results <- r + self.lp.WakeupMainThread() + }() + return nil + } self.diff_map = r.diff_map self.calculate_statistics() self.clear_mouse_selection() @@ -333,7 +340,7 @@ func (self *Handler) handle_async_result(r AsyncResult) error { func (self *Handler) on_resize(old_size, new_size loop.ScreenSize) error { self.clear_mouse_selection() self.update_screen_size(new_size) - if self.diff_map != nil && self.collection != nil { + if self.diff_map != nil && self.collection != nil && self.terminal_capabilities_received { err := self.render_diff() if err != nil { return err